UNPKG

618 kBJavaScriptView Raw
1;(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3 typeof define === 'function' && define.amd ? define(factory) :
4 global.moment = factory()
5}(this, (function () { 'use strict';
6
7 var hookCallback;
8
9 function hooks() {
10 return hookCallback.apply(null, arguments);
11 }
12
13 // This is done to register the method called with moment()
14 // without creating circular dependencies.
15 function setHookCallback(callback) {
16 hookCallback = callback;
17 }
18
19 function isArray(input) {
20 return (
21 input instanceof Array ||
22 Object.prototype.toString.call(input) === '[object Array]'
23 );
24 }
25
26 function isObject(input) {
27 // IE8 will treat undefined and null as object if it wasn't for
28 // input != null
29 return (
30 input != null &&
31 Object.prototype.toString.call(input) === '[object Object]'
32 );
33 }
34
35 function hasOwnProp(a, b) {
36 return Object.prototype.hasOwnProperty.call(a, b);
37 }
38
39 function isObjectEmpty(obj) {
40 if (Object.getOwnPropertyNames) {
41 return Object.getOwnPropertyNames(obj).length === 0;
42 } else {
43 var k;
44 for (k in obj) {
45 if (hasOwnProp(obj, k)) {
46 return false;
47 }
48 }
49 return true;
50 }
51 }
52
53 function isUndefined(input) {
54 return input === void 0;
55 }
56
57 function isNumber(input) {
58 return (
59 typeof input === 'number' ||
60 Object.prototype.toString.call(input) === '[object Number]'
61 );
62 }
63
64 function isDate(input) {
65 return (
66 input instanceof Date ||
67 Object.prototype.toString.call(input) === '[object Date]'
68 );
69 }
70
71 function map(arr, fn) {
72 var res = [],
73 i;
74 for (i = 0; i < arr.length; ++i) {
75 res.push(fn(arr[i], i));
76 }
77 return res;
78 }
79
80 function extend(a, b) {
81 for (var i in b) {
82 if (hasOwnProp(b, i)) {
83 a[i] = b[i];
84 }
85 }
86
87 if (hasOwnProp(b, 'toString')) {
88 a.toString = b.toString;
89 }
90
91 if (hasOwnProp(b, 'valueOf')) {
92 a.valueOf = b.valueOf;
93 }
94
95 return a;
96 }
97
98 function createUTC(input, format, locale, strict) {
99 return createLocalOrUTC(input, format, locale, strict, true).utc();
100 }
101
102 function defaultParsingFlags() {
103 // We need to deep clone this object.
104 return {
105 empty: false,
106 unusedTokens: [],
107 unusedInput: [],
108 overflow: -2,
109 charsLeftOver: 0,
110 nullInput: false,
111 invalidEra: null,
112 invalidMonth: null,
113 invalidFormat: false,
114 userInvalidated: false,
115 iso: false,
116 parsedDateParts: [],
117 era: null,
118 meridiem: null,
119 rfc2822: false,
120 weekdayMismatch: false,
121 };
122 }
123
124 function getParsingFlags(m) {
125 if (m._pf == null) {
126 m._pf = defaultParsingFlags();
127 }
128 return m._pf;
129 }
130
131 var some;
132 if (Array.prototype.some) {
133 some = Array.prototype.some;
134 } else {
135 some = function (fun) {
136 var t = Object(this),
137 len = t.length >>> 0,
138 i;
139
140 for (i = 0; i < len; i++) {
141 if (i in t && fun.call(this, t[i], i, t)) {
142 return true;
143 }
144 }
145
146 return false;
147 };
148 }
149
150 function isValid(m) {
151 if (m._isValid == null) {
152 var flags = getParsingFlags(m),
153 parsedParts = some.call(flags.parsedDateParts, function (i) {
154 return i != null;
155 }),
156 isNowValid =
157 !isNaN(m._d.getTime()) &&
158 flags.overflow < 0 &&
159 !flags.empty &&
160 !flags.invalidEra &&
161 !flags.invalidMonth &&
162 !flags.invalidWeekday &&
163 !flags.weekdayMismatch &&
164 !flags.nullInput &&
165 !flags.invalidFormat &&
166 !flags.userInvalidated &&
167 (!flags.meridiem || (flags.meridiem && parsedParts));
168
169 if (m._strict) {
170 isNowValid =
171 isNowValid &&
172 flags.charsLeftOver === 0 &&
173 flags.unusedTokens.length === 0 &&
174 flags.bigHour === undefined;
175 }
176
177 if (Object.isFrozen == null || !Object.isFrozen(m)) {
178 m._isValid = isNowValid;
179 } else {
180 return isNowValid;
181 }
182 }
183 return m._isValid;
184 }
185
186 function createInvalid(flags) {
187 var m = createUTC(NaN);
188 if (flags != null) {
189 extend(getParsingFlags(m), flags);
190 } else {
191 getParsingFlags(m).userInvalidated = true;
192 }
193
194 return m;
195 }
196
197 // Plugins that add properties should also add the key here (null value),
198 // so we can properly clone ourselves.
199 var momentProperties = (hooks.momentProperties = []),
200 updateInProgress = false;
201
202 function copyConfig(to, from) {
203 var i, prop, val;
204
205 if (!isUndefined(from._isAMomentObject)) {
206 to._isAMomentObject = from._isAMomentObject;
207 }
208 if (!isUndefined(from._i)) {
209 to._i = from._i;
210 }
211 if (!isUndefined(from._f)) {
212 to._f = from._f;
213 }
214 if (!isUndefined(from._l)) {
215 to._l = from._l;
216 }
217 if (!isUndefined(from._strict)) {
218 to._strict = from._strict;
219 }
220 if (!isUndefined(from._tzm)) {
221 to._tzm = from._tzm;
222 }
223 if (!isUndefined(from._isUTC)) {
224 to._isUTC = from._isUTC;
225 }
226 if (!isUndefined(from._offset)) {
227 to._offset = from._offset;
228 }
229 if (!isUndefined(from._pf)) {
230 to._pf = getParsingFlags(from);
231 }
232 if (!isUndefined(from._locale)) {
233 to._locale = from._locale;
234 }
235
236 if (momentProperties.length > 0) {
237 for (i = 0; i < momentProperties.length; i++) {
238 prop = momentProperties[i];
239 val = from[prop];
240 if (!isUndefined(val)) {
241 to[prop] = val;
242 }
243 }
244 }
245
246 return to;
247 }
248
249 // Moment prototype object
250 function Moment(config) {
251 copyConfig(this, config);
252 this._d = new Date(config._d != null ? config._d.getTime() : NaN);
253 if (!this.isValid()) {
254 this._d = new Date(NaN);
255 }
256 // Prevent infinite loop in case updateOffset creates new moment
257 // objects.
258 if (updateInProgress === false) {
259 updateInProgress = true;
260 hooks.updateOffset(this);
261 updateInProgress = false;
262 }
263 }
264
265 function isMoment(obj) {
266 return (
267 obj instanceof Moment || (obj != null && obj._isAMomentObject != null)
268 );
269 }
270
271 function warn(msg) {
272 if (
273 hooks.suppressDeprecationWarnings === false &&
274 typeof console !== 'undefined' &&
275 console.warn
276 ) {
277 console.warn('Deprecation warning: ' + msg);
278 }
279 }
280
281 function deprecate(msg, fn) {
282 var firstTime = true;
283
284 return extend(function () {
285 if (hooks.deprecationHandler != null) {
286 hooks.deprecationHandler(null, msg);
287 }
288 if (firstTime) {
289 var args = [],
290 arg,
291 i,
292 key;
293 for (i = 0; i < arguments.length; i++) {
294 arg = '';
295 if (typeof arguments[i] === 'object') {
296 arg += '\n[' + i + '] ';
297 for (key in arguments[0]) {
298 if (hasOwnProp(arguments[0], key)) {
299 arg += key + ': ' + arguments[0][key] + ', ';
300 }
301 }
302 arg = arg.slice(0, -2); // Remove trailing comma and space
303 } else {
304 arg = arguments[i];
305 }
306 args.push(arg);
307 }
308 warn(
309 msg +
310 '\nArguments: ' +
311 Array.prototype.slice.call(args).join('') +
312 '\n' +
313 new Error().stack
314 );
315 firstTime = false;
316 }
317 return fn.apply(this, arguments);
318 }, fn);
319 }
320
321 var deprecations = {};
322
323 function deprecateSimple(name, msg) {
324 if (hooks.deprecationHandler != null) {
325 hooks.deprecationHandler(name, msg);
326 }
327 if (!deprecations[name]) {
328 warn(msg);
329 deprecations[name] = true;
330 }
331 }
332
333 hooks.suppressDeprecationWarnings = false;
334 hooks.deprecationHandler = null;
335
336 function isFunction(input) {
337 return (
338 (typeof Function !== 'undefined' && input instanceof Function) ||
339 Object.prototype.toString.call(input) === '[object Function]'
340 );
341 }
342
343 function set(config) {
344 var prop, i;
345 for (i in config) {
346 if (hasOwnProp(config, i)) {
347 prop = config[i];
348 if (isFunction(prop)) {
349 this[i] = prop;
350 } else {
351 this['_' + i] = prop;
352 }
353 }
354 }
355 this._config = config;
356 // Lenient ordinal parsing accepts just a number in addition to
357 // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
358 // TODO: Remove "ordinalParse" fallback in next major release.
359 this._dayOfMonthOrdinalParseLenient = new RegExp(
360 (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
361 '|' +
362 /\d{1,2}/.source
363 );
364 }
365
366 function mergeConfigs(parentConfig, childConfig) {
367 var res = extend({}, parentConfig),
368 prop;
369 for (prop in childConfig) {
370 if (hasOwnProp(childConfig, prop)) {
371 if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
372 res[prop] = {};
373 extend(res[prop], parentConfig[prop]);
374 extend(res[prop], childConfig[prop]);
375 } else if (childConfig[prop] != null) {
376 res[prop] = childConfig[prop];
377 } else {
378 delete res[prop];
379 }
380 }
381 }
382 for (prop in parentConfig) {
383 if (
384 hasOwnProp(parentConfig, prop) &&
385 !hasOwnProp(childConfig, prop) &&
386 isObject(parentConfig[prop])
387 ) {
388 // make sure changes to properties don't modify parent config
389 res[prop] = extend({}, res[prop]);
390 }
391 }
392 return res;
393 }
394
395 function Locale(config) {
396 if (config != null) {
397 this.set(config);
398 }
399 }
400
401 var keys;
402
403 if (Object.keys) {
404 keys = Object.keys;
405 } else {
406 keys = function (obj) {
407 var i,
408 res = [];
409 for (i in obj) {
410 if (hasOwnProp(obj, i)) {
411 res.push(i);
412 }
413 }
414 return res;
415 };
416 }
417
418 var defaultCalendar = {
419 sameDay: '[Today at] LT',
420 nextDay: '[Tomorrow at] LT',
421 nextWeek: 'dddd [at] LT',
422 lastDay: '[Yesterday at] LT',
423 lastWeek: '[Last] dddd [at] LT',
424 sameElse: 'L',
425 };
426
427 function calendar(key, mom, now) {
428 var output = this._calendar[key] || this._calendar['sameElse'];
429 return isFunction(output) ? output.call(mom, now) : output;
430 }
431
432 function zeroFill(number, targetLength, forceSign) {
433 var absNumber = '' + Math.abs(number),
434 zerosToFill = targetLength - absNumber.length,
435 sign = number >= 0;
436 return (
437 (sign ? (forceSign ? '+' : '') : '-') +
438 Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +
439 absNumber
440 );
441 }
442
443 var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,
444 localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
445 formatFunctions = {},
446 formatTokenFunctions = {};
447
448 // token: 'M'
449 // padded: ['MM', 2]
450 // ordinal: 'Mo'
451 // callback: function () { this.month() + 1 }
452 function addFormatToken(token, padded, ordinal, callback) {
453 var func = callback;
454 if (typeof callback === 'string') {
455 func = function () {
456 return this[callback]();
457 };
458 }
459 if (token) {
460 formatTokenFunctions[token] = func;
461 }
462 if (padded) {
463 formatTokenFunctions[padded[0]] = function () {
464 return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
465 };
466 }
467 if (ordinal) {
468 formatTokenFunctions[ordinal] = function () {
469 return this.localeData().ordinal(
470 func.apply(this, arguments),
471 token
472 );
473 };
474 }
475 }
476
477 function removeFormattingTokens(input) {
478 if (input.match(/\[[\s\S]/)) {
479 return input.replace(/^\[|\]$/g, '');
480 }
481 return input.replace(/\\/g, '');
482 }
483
484 function makeFormatFunction(format) {
485 var array = format.match(formattingTokens),
486 i,
487 length;
488
489 for (i = 0, length = array.length; i < length; i++) {
490 if (formatTokenFunctions[array[i]]) {
491 array[i] = formatTokenFunctions[array[i]];
492 } else {
493 array[i] = removeFormattingTokens(array[i]);
494 }
495 }
496
497 return function (mom) {
498 var output = '',
499 i;
500 for (i = 0; i < length; i++) {
501 output += isFunction(array[i])
502 ? array[i].call(mom, format)
503 : array[i];
504 }
505 return output;
506 };
507 }
508
509 // format date using native date object
510 function formatMoment(m, format) {
511 if (!m.isValid()) {
512 return m.localeData().invalidDate();
513 }
514
515 format = expandFormat(format, m.localeData());
516 formatFunctions[format] =
517 formatFunctions[format] || makeFormatFunction(format);
518
519 return formatFunctions[format](m);
520 }
521
522 function expandFormat(format, locale) {
523 var i = 5;
524
525 function replaceLongDateFormatTokens(input) {
526 return locale.longDateFormat(input) || input;
527 }
528
529 localFormattingTokens.lastIndex = 0;
530 while (i >= 0 && localFormattingTokens.test(format)) {
531 format = format.replace(
532 localFormattingTokens,
533 replaceLongDateFormatTokens
534 );
535 localFormattingTokens.lastIndex = 0;
536 i -= 1;
537 }
538
539 return format;
540 }
541
542 var defaultLongDateFormat = {
543 LTS: 'h:mm:ss A',
544 LT: 'h:mm A',
545 L: 'MM/DD/YYYY',
546 LL: 'MMMM D, YYYY',
547 LLL: 'MMMM D, YYYY h:mm A',
548 LLLL: 'dddd, MMMM D, YYYY h:mm A',
549 };
550
551 function longDateFormat(key) {
552 var format = this._longDateFormat[key],
553 formatUpper = this._longDateFormat[key.toUpperCase()];
554
555 if (format || !formatUpper) {
556 return format;
557 }
558
559 this._longDateFormat[key] = formatUpper
560 .match(formattingTokens)
561 .map(function (tok) {
562 if (
563 tok === 'MMMM' ||
564 tok === 'MM' ||
565 tok === 'DD' ||
566 tok === 'dddd'
567 ) {
568 return tok.slice(1);
569 }
570 return tok;
571 })
572 .join('');
573
574 return this._longDateFormat[key];
575 }
576
577 var defaultInvalidDate = 'Invalid date';
578
579 function invalidDate() {
580 return this._invalidDate;
581 }
582
583 var defaultOrdinal = '%d',
584 defaultDayOfMonthOrdinalParse = /\d{1,2}/;
585
586 function ordinal(number) {
587 return this._ordinal.replace('%d', number);
588 }
589
590 var defaultRelativeTime = {
591 future: 'in %s',
592 past: '%s ago',
593 s: 'a few seconds',
594 ss: '%d seconds',
595 m: 'a minute',
596 mm: '%d minutes',
597 h: 'an hour',
598 hh: '%d hours',
599 d: 'a day',
600 dd: '%d days',
601 w: 'a week',
602 ww: '%d weeks',
603 M: 'a month',
604 MM: '%d months',
605 y: 'a year',
606 yy: '%d years',
607 };
608
609 function relativeTime(number, withoutSuffix, string, isFuture) {
610 var output = this._relativeTime[string];
611 return isFunction(output)
612 ? output(number, withoutSuffix, string, isFuture)
613 : output.replace(/%d/i, number);
614 }
615
616 function pastFuture(diff, output) {
617 var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
618 return isFunction(format) ? format(output) : format.replace(/%s/i, output);
619 }
620
621 var aliases = {};
622
623 function addUnitAlias(unit, shorthand) {
624 var lowerCase = unit.toLowerCase();
625 aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
626 }
627
628 function normalizeUnits(units) {
629 return typeof units === 'string'
630 ? aliases[units] || aliases[units.toLowerCase()]
631 : undefined;
632 }
633
634 function normalizeObjectUnits(inputObject) {
635 var normalizedInput = {},
636 normalizedProp,
637 prop;
638
639 for (prop in inputObject) {
640 if (hasOwnProp(inputObject, prop)) {
641 normalizedProp = normalizeUnits(prop);
642 if (normalizedProp) {
643 normalizedInput[normalizedProp] = inputObject[prop];
644 }
645 }
646 }
647
648 return normalizedInput;
649 }
650
651 var priorities = {};
652
653 function addUnitPriority(unit, priority) {
654 priorities[unit] = priority;
655 }
656
657 function getPrioritizedUnits(unitsObj) {
658 var units = [],
659 u;
660 for (u in unitsObj) {
661 if (hasOwnProp(unitsObj, u)) {
662 units.push({ unit: u, priority: priorities[u] });
663 }
664 }
665 units.sort(function (a, b) {
666 return a.priority - b.priority;
667 });
668 return units;
669 }
670
671 function isLeapYear(year) {
672 return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
673 }
674
675 function absFloor(number) {
676 if (number < 0) {
677 // -0 -> 0
678 return Math.ceil(number) || 0;
679 } else {
680 return Math.floor(number);
681 }
682 }
683
684 function toInt(argumentForCoercion) {
685 var coercedNumber = +argumentForCoercion,
686 value = 0;
687
688 if (coercedNumber !== 0 && isFinite(coercedNumber)) {
689 value = absFloor(coercedNumber);
690 }
691
692 return value;
693 }
694
695 function makeGetSet(unit, keepTime) {
696 return function (value) {
697 if (value != null) {
698 set$1(this, unit, value);
699 hooks.updateOffset(this, keepTime);
700 return this;
701 } else {
702 return get(this, unit);
703 }
704 };
705 }
706
707 function get(mom, unit) {
708 return mom.isValid()
709 ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()
710 : NaN;
711 }
712
713 function set$1(mom, unit, value) {
714 if (mom.isValid() && !isNaN(value)) {
715 if (
716 unit === 'FullYear' &&
717 isLeapYear(mom.year()) &&
718 mom.month() === 1 &&
719 mom.date() === 29
720 ) {
721 value = toInt(value);
722 mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](
723 value,
724 mom.month(),
725 daysInMonth(value, mom.month())
726 );
727 } else {
728 mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
729 }
730 }
731 }
732
733 // MOMENTS
734
735 function stringGet(units) {
736 units = normalizeUnits(units);
737 if (isFunction(this[units])) {
738 return this[units]();
739 }
740 return this;
741 }
742
743 function stringSet(units, value) {
744 if (typeof units === 'object') {
745 units = normalizeObjectUnits(units);
746 var prioritized = getPrioritizedUnits(units),
747 i;
748 for (i = 0; i < prioritized.length; i++) {
749 this[prioritized[i].unit](units[prioritized[i].unit]);
750 }
751 } else {
752 units = normalizeUnits(units);
753 if (isFunction(this[units])) {
754 return this[units](value);
755 }
756 }
757 return this;
758 }
759
760 var match1 = /\d/, // 0 - 9
761 match2 = /\d\d/, // 00 - 99
762 match3 = /\d{3}/, // 000 - 999
763 match4 = /\d{4}/, // 0000 - 9999
764 match6 = /[+-]?\d{6}/, // -999999 - 999999
765 match1to2 = /\d\d?/, // 0 - 99
766 match3to4 = /\d\d\d\d?/, // 999 - 9999
767 match5to6 = /\d\d\d\d\d\d?/, // 99999 - 999999
768 match1to3 = /\d{1,3}/, // 0 - 999
769 match1to4 = /\d{1,4}/, // 0 - 9999
770 match1to6 = /[+-]?\d{1,6}/, // -999999 - 999999
771 matchUnsigned = /\d+/, // 0 - inf
772 matchSigned = /[+-]?\d+/, // -inf - inf
773 matchOffset = /Z|[+-]\d\d:?\d\d/gi, // +00:00 -00:00 +0000 -0000 or Z
774 matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z
775 matchTimestamp = /[+-]?\d+(\.\d{1,3})?/, // 123456789 123456789.123
776 // any word (or two) characters or numbers including two/three word month in arabic.
777 // includes scottish gaelic two word and hyphenated months
778 matchWord = /[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,
779 regexes;
780
781 regexes = {};
782
783 function addRegexToken(token, regex, strictRegex) {
784 regexes[token] = isFunction(regex)
785 ? regex
786 : function (isStrict, localeData) {
787 return isStrict && strictRegex ? strictRegex : regex;
788 };
789 }
790
791 function getParseRegexForToken(token, config) {
792 if (!hasOwnProp(regexes, token)) {
793 return new RegExp(unescapeFormat(token));
794 }
795
796 return regexes[token](config._strict, config._locale);
797 }
798
799 // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
800 function unescapeFormat(s) {
801 return regexEscape(
802 s
803 .replace('\\', '')
804 .replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (
805 matched,
806 p1,
807 p2,
808 p3,
809 p4
810 ) {
811 return p1 || p2 || p3 || p4;
812 })
813 );
814 }
815
816 function regexEscape(s) {
817 return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
818 }
819
820 var tokens = {};
821
822 function addParseToken(token, callback) {
823 var i,
824 func = callback;
825 if (typeof token === 'string') {
826 token = [token];
827 }
828 if (isNumber(callback)) {
829 func = function (input, array) {
830 array[callback] = toInt(input);
831 };
832 }
833 for (i = 0; i < token.length; i++) {
834 tokens[token[i]] = func;
835 }
836 }
837
838 function addWeekParseToken(token, callback) {
839 addParseToken(token, function (input, array, config, token) {
840 config._w = config._w || {};
841 callback(input, config._w, config, token);
842 });
843 }
844
845 function addTimeToArrayFromToken(token, input, config) {
846 if (input != null && hasOwnProp(tokens, token)) {
847 tokens[token](input, config._a, config, token);
848 }
849 }
850
851 var YEAR = 0,
852 MONTH = 1,
853 DATE = 2,
854 HOUR = 3,
855 MINUTE = 4,
856 SECOND = 5,
857 MILLISECOND = 6,
858 WEEK = 7,
859 WEEKDAY = 8;
860
861 function mod(n, x) {
862 return ((n % x) + x) % x;
863 }
864
865 var indexOf;
866
867 if (Array.prototype.indexOf) {
868 indexOf = Array.prototype.indexOf;
869 } else {
870 indexOf = function (o) {
871 // I know
872 var i;
873 for (i = 0; i < this.length; ++i) {
874 if (this[i] === o) {
875 return i;
876 }
877 }
878 return -1;
879 };
880 }
881
882 function daysInMonth(year, month) {
883 if (isNaN(year) || isNaN(month)) {
884 return NaN;
885 }
886 var modMonth = mod(month, 12);
887 year += (month - modMonth) / 12;
888 return modMonth === 1
889 ? isLeapYear(year)
890 ? 29
891 : 28
892 : 31 - ((modMonth % 7) % 2);
893 }
894
895 // FORMATTING
896
897 addFormatToken('M', ['MM', 2], 'Mo', function () {
898 return this.month() + 1;
899 });
900
901 addFormatToken('MMM', 0, 0, function (format) {
902 return this.localeData().monthsShort(this, format);
903 });
904
905 addFormatToken('MMMM', 0, 0, function (format) {
906 return this.localeData().months(this, format);
907 });
908
909 // ALIASES
910
911 addUnitAlias('month', 'M');
912
913 // PRIORITY
914
915 addUnitPriority('month', 8);
916
917 // PARSING
918
919 addRegexToken('M', match1to2);
920 addRegexToken('MM', match1to2, match2);
921 addRegexToken('MMM', function (isStrict, locale) {
922 return locale.monthsShortRegex(isStrict);
923 });
924 addRegexToken('MMMM', function (isStrict, locale) {
925 return locale.monthsRegex(isStrict);
926 });
927
928 addParseToken(['M', 'MM'], function (input, array) {
929 array[MONTH] = toInt(input) - 1;
930 });
931
932 addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
933 var month = config._locale.monthsParse(input, token, config._strict);
934 // if we didn't find a month name, mark the date as invalid.
935 if (month != null) {
936 array[MONTH] = month;
937 } else {
938 getParsingFlags(config).invalidMonth = input;
939 }
940 });
941
942 // LOCALES
943
944 var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
945 '_'
946 ),
947 defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split(
948 '_'
949 ),
950 MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,
951 defaultMonthsShortRegex = matchWord,
952 defaultMonthsRegex = matchWord;
953
954 function localeMonths(m, format) {
955 if (!m) {
956 return isArray(this._months)
957 ? this._months
958 : this._months['standalone'];
959 }
960 return isArray(this._months)
961 ? this._months[m.month()]
962 : this._months[
963 (this._months.isFormat || MONTHS_IN_FORMAT).test(format)
964 ? 'format'
965 : 'standalone'
966 ][m.month()];
967 }
968
969 function localeMonthsShort(m, format) {
970 if (!m) {
971 return isArray(this._monthsShort)
972 ? this._monthsShort
973 : this._monthsShort['standalone'];
974 }
975 return isArray(this._monthsShort)
976 ? this._monthsShort[m.month()]
977 : this._monthsShort[
978 MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'
979 ][m.month()];
980 }
981
982 function handleStrictParse(monthName, format, strict) {
983 var i,
984 ii,
985 mom,
986 llc = monthName.toLocaleLowerCase();
987 if (!this._monthsParse) {
988 // this is not used
989 this._monthsParse = [];
990 this._longMonthsParse = [];
991 this._shortMonthsParse = [];
992 for (i = 0; i < 12; ++i) {
993 mom = createUTC([2000, i]);
994 this._shortMonthsParse[i] = this.monthsShort(
995 mom,
996 ''
997 ).toLocaleLowerCase();
998 this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
999 }
1000 }
1001
1002 if (strict) {
1003 if (format === 'MMM') {
1004 ii = indexOf.call(this._shortMonthsParse, llc);
1005 return ii !== -1 ? ii : null;
1006 } else {
1007 ii = indexOf.call(this._longMonthsParse, llc);
1008 return ii !== -1 ? ii : null;
1009 }
1010 } else {
1011 if (format === 'MMM') {
1012 ii = indexOf.call(this._shortMonthsParse, llc);
1013 if (ii !== -1) {
1014 return ii;
1015 }
1016 ii = indexOf.call(this._longMonthsParse, llc);
1017 return ii !== -1 ? ii : null;
1018 } else {
1019 ii = indexOf.call(this._longMonthsParse, llc);
1020 if (ii !== -1) {
1021 return ii;
1022 }
1023 ii = indexOf.call(this._shortMonthsParse, llc);
1024 return ii !== -1 ? ii : null;
1025 }
1026 }
1027 }
1028
1029 function localeMonthsParse(monthName, format, strict) {
1030 var i, mom, regex;
1031
1032 if (this._monthsParseExact) {
1033 return handleStrictParse.call(this, monthName, format, strict);
1034 }
1035
1036 if (!this._monthsParse) {
1037 this._monthsParse = [];
1038 this._longMonthsParse = [];
1039 this._shortMonthsParse = [];
1040 }
1041
1042 // TODO: add sorting
1043 // Sorting makes sure if one month (or abbr) is a prefix of another
1044 // see sorting in computeMonthsParse
1045 for (i = 0; i < 12; i++) {
1046 // make the regex if we don't have it already
1047 mom = createUTC([2000, i]);
1048 if (strict && !this._longMonthsParse[i]) {
1049 this._longMonthsParse[i] = new RegExp(
1050 '^' + this.months(mom, '').replace('.', '') + '$',
1051 'i'
1052 );
1053 this._shortMonthsParse[i] = new RegExp(
1054 '^' + this.monthsShort(mom, '').replace('.', '') + '$',
1055 'i'
1056 );
1057 }
1058 if (!strict && !this._monthsParse[i]) {
1059 regex =
1060 '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
1061 this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
1062 }
1063 // test the regex
1064 if (
1065 strict &&
1066 format === 'MMMM' &&
1067 this._longMonthsParse[i].test(monthName)
1068 ) {
1069 return i;
1070 } else if (
1071 strict &&
1072 format === 'MMM' &&
1073 this._shortMonthsParse[i].test(monthName)
1074 ) {
1075 return i;
1076 } else if (!strict && this._monthsParse[i].test(monthName)) {
1077 return i;
1078 }
1079 }
1080 }
1081
1082 // MOMENTS
1083
1084 function setMonth(mom, value) {
1085 var dayOfMonth;
1086
1087 if (!mom.isValid()) {
1088 // No op
1089 return mom;
1090 }
1091
1092 if (typeof value === 'string') {
1093 if (/^\d+$/.test(value)) {
1094 value = toInt(value);
1095 } else {
1096 value = mom.localeData().monthsParse(value);
1097 // TODO: Another silent failure?
1098 if (!isNumber(value)) {
1099 return mom;
1100 }
1101 }
1102 }
1103
1104 dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
1105 mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
1106 return mom;
1107 }
1108
1109 function getSetMonth(value) {
1110 if (value != null) {
1111 setMonth(this, value);
1112 hooks.updateOffset(this, true);
1113 return this;
1114 } else {
1115 return get(this, 'Month');
1116 }
1117 }
1118
1119 function getDaysInMonth() {
1120 return daysInMonth(this.year(), this.month());
1121 }
1122
1123 function monthsShortRegex(isStrict) {
1124 if (this._monthsParseExact) {
1125 if (!hasOwnProp(this, '_monthsRegex')) {
1126 computeMonthsParse.call(this);
1127 }
1128 if (isStrict) {
1129 return this._monthsShortStrictRegex;
1130 } else {
1131 return this._monthsShortRegex;
1132 }
1133 } else {
1134 if (!hasOwnProp(this, '_monthsShortRegex')) {
1135 this._monthsShortRegex = defaultMonthsShortRegex;
1136 }
1137 return this._monthsShortStrictRegex && isStrict
1138 ? this._monthsShortStrictRegex
1139 : this._monthsShortRegex;
1140 }
1141 }
1142
1143 function monthsRegex(isStrict) {
1144 if (this._monthsParseExact) {
1145 if (!hasOwnProp(this, '_monthsRegex')) {
1146 computeMonthsParse.call(this);
1147 }
1148 if (isStrict) {
1149 return this._monthsStrictRegex;
1150 } else {
1151 return this._monthsRegex;
1152 }
1153 } else {
1154 if (!hasOwnProp(this, '_monthsRegex')) {
1155 this._monthsRegex = defaultMonthsRegex;
1156 }
1157 return this._monthsStrictRegex && isStrict
1158 ? this._monthsStrictRegex
1159 : this._monthsRegex;
1160 }
1161 }
1162
1163 function computeMonthsParse() {
1164 function cmpLenRev(a, b) {
1165 return b.length - a.length;
1166 }
1167
1168 var shortPieces = [],
1169 longPieces = [],
1170 mixedPieces = [],
1171 i,
1172 mom;
1173 for (i = 0; i < 12; i++) {
1174 // make the regex if we don't have it already
1175 mom = createUTC([2000, i]);
1176 shortPieces.push(this.monthsShort(mom, ''));
1177 longPieces.push(this.months(mom, ''));
1178 mixedPieces.push(this.months(mom, ''));
1179 mixedPieces.push(this.monthsShort(mom, ''));
1180 }
1181 // Sorting makes sure if one month (or abbr) is a prefix of another it
1182 // will match the longer piece.
1183 shortPieces.sort(cmpLenRev);
1184 longPieces.sort(cmpLenRev);
1185 mixedPieces.sort(cmpLenRev);
1186 for (i = 0; i < 12; i++) {
1187 shortPieces[i] = regexEscape(shortPieces[i]);
1188 longPieces[i] = regexEscape(longPieces[i]);
1189 }
1190 for (i = 0; i < 24; i++) {
1191 mixedPieces[i] = regexEscape(mixedPieces[i]);
1192 }
1193
1194 this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1195 this._monthsShortRegex = this._monthsRegex;
1196 this._monthsStrictRegex = new RegExp(
1197 '^(' + longPieces.join('|') + ')',
1198 'i'
1199 );
1200 this._monthsShortStrictRegex = new RegExp(
1201 '^(' + shortPieces.join('|') + ')',
1202 'i'
1203 );
1204 }
1205
1206 // FORMATTING
1207
1208 addFormatToken('Y', 0, 0, function () {
1209 var y = this.year();
1210 return y <= 9999 ? zeroFill(y, 4) : '+' + y;
1211 });
1212
1213 addFormatToken(0, ['YY', 2], 0, function () {
1214 return this.year() % 100;
1215 });
1216
1217 addFormatToken(0, ['YYYY', 4], 0, 'year');
1218 addFormatToken(0, ['YYYYY', 5], 0, 'year');
1219 addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
1220
1221 // ALIASES
1222
1223 addUnitAlias('year', 'y');
1224
1225 // PRIORITIES
1226
1227 addUnitPriority('year', 1);
1228
1229 // PARSING
1230
1231 addRegexToken('Y', matchSigned);
1232 addRegexToken('YY', match1to2, match2);
1233 addRegexToken('YYYY', match1to4, match4);
1234 addRegexToken('YYYYY', match1to6, match6);
1235 addRegexToken('YYYYYY', match1to6, match6);
1236
1237 addParseToken(['YYYYY', 'YYYYYY'], YEAR);
1238 addParseToken('YYYY', function (input, array) {
1239 array[YEAR] =
1240 input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
1241 });
1242 addParseToken('YY', function (input, array) {
1243 array[YEAR] = hooks.parseTwoDigitYear(input);
1244 });
1245 addParseToken('Y', function (input, array) {
1246 array[YEAR] = parseInt(input, 10);
1247 });
1248
1249 // HELPERS
1250
1251 function daysInYear(year) {
1252 return isLeapYear(year) ? 366 : 365;
1253 }
1254
1255 // HOOKS
1256
1257 hooks.parseTwoDigitYear = function (input) {
1258 return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
1259 };
1260
1261 // MOMENTS
1262
1263 var getSetYear = makeGetSet('FullYear', true);
1264
1265 function getIsLeapYear() {
1266 return isLeapYear(this.year());
1267 }
1268
1269 function createDate(y, m, d, h, M, s, ms) {
1270 // can't just apply() to create a date:
1271 // https://stackoverflow.com/q/181348
1272 var date;
1273 // the date constructor remaps years 0-99 to 1900-1999
1274 if (y < 100 && y >= 0) {
1275 // preserve leap years using a full 400 year cycle, then reset
1276 date = new Date(y + 400, m, d, h, M, s, ms);
1277 if (isFinite(date.getFullYear())) {
1278 date.setFullYear(y);
1279 }
1280 } else {
1281 date = new Date(y, m, d, h, M, s, ms);
1282 }
1283
1284 return date;
1285 }
1286
1287 function createUTCDate(y) {
1288 var date, args;
1289 // the Date.UTC function remaps years 0-99 to 1900-1999
1290 if (y < 100 && y >= 0) {
1291 args = Array.prototype.slice.call(arguments);
1292 // preserve leap years using a full 400 year cycle, then reset
1293 args[0] = y + 400;
1294 date = new Date(Date.UTC.apply(null, args));
1295 if (isFinite(date.getUTCFullYear())) {
1296 date.setUTCFullYear(y);
1297 }
1298 } else {
1299 date = new Date(Date.UTC.apply(null, arguments));
1300 }
1301
1302 return date;
1303 }
1304
1305 // start-of-first-week - start-of-year
1306 function firstWeekOffset(year, dow, doy) {
1307 var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1308 fwd = 7 + dow - doy,
1309 // first-week day local weekday -- which local weekday is fwd
1310 fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1311
1312 return -fwdlw + fwd - 1;
1313 }
1314
1315 // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1316 function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1317 var localWeekday = (7 + weekday - dow) % 7,
1318 weekOffset = firstWeekOffset(year, dow, doy),
1319 dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1320 resYear,
1321 resDayOfYear;
1322
1323 if (dayOfYear <= 0) {
1324 resYear = year - 1;
1325 resDayOfYear = daysInYear(resYear) + dayOfYear;
1326 } else if (dayOfYear > daysInYear(year)) {
1327 resYear = year + 1;
1328 resDayOfYear = dayOfYear - daysInYear(year);
1329 } else {
1330 resYear = year;
1331 resDayOfYear = dayOfYear;
1332 }
1333
1334 return {
1335 year: resYear,
1336 dayOfYear: resDayOfYear,
1337 };
1338 }
1339
1340 function weekOfYear(mom, dow, doy) {
1341 var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1342 week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1343 resWeek,
1344 resYear;
1345
1346 if (week < 1) {
1347 resYear = mom.year() - 1;
1348 resWeek = week + weeksInYear(resYear, dow, doy);
1349 } else if (week > weeksInYear(mom.year(), dow, doy)) {
1350 resWeek = week - weeksInYear(mom.year(), dow, doy);
1351 resYear = mom.year() + 1;
1352 } else {
1353 resYear = mom.year();
1354 resWeek = week;
1355 }
1356
1357 return {
1358 week: resWeek,
1359 year: resYear,
1360 };
1361 }
1362
1363 function weeksInYear(year, dow, doy) {
1364 var weekOffset = firstWeekOffset(year, dow, doy),
1365 weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1366 return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1367 }
1368
1369 // FORMATTING
1370
1371 addFormatToken('w', ['ww', 2], 'wo', 'week');
1372 addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
1373
1374 // ALIASES
1375
1376 addUnitAlias('week', 'w');
1377 addUnitAlias('isoWeek', 'W');
1378
1379 // PRIORITIES
1380
1381 addUnitPriority('week', 5);
1382 addUnitPriority('isoWeek', 5);
1383
1384 // PARSING
1385
1386 addRegexToken('w', match1to2);
1387 addRegexToken('ww', match1to2, match2);
1388 addRegexToken('W', match1to2);
1389 addRegexToken('WW', match1to2, match2);
1390
1391 addWeekParseToken(['w', 'ww', 'W', 'WW'], function (
1392 input,
1393 week,
1394 config,
1395 token
1396 ) {
1397 week[token.substr(0, 1)] = toInt(input);
1398 });
1399
1400 // HELPERS
1401
1402 // LOCALES
1403
1404 function localeWeek(mom) {
1405 return weekOfYear(mom, this._week.dow, this._week.doy).week;
1406 }
1407
1408 var defaultLocaleWeek = {
1409 dow: 0, // Sunday is the first day of the week.
1410 doy: 6, // The week that contains Jan 6th is the first week of the year.
1411 };
1412
1413 function localeFirstDayOfWeek() {
1414 return this._week.dow;
1415 }
1416
1417 function localeFirstDayOfYear() {
1418 return this._week.doy;
1419 }
1420
1421 // MOMENTS
1422
1423 function getSetWeek(input) {
1424 var week = this.localeData().week(this);
1425 return input == null ? week : this.add((input - week) * 7, 'd');
1426 }
1427
1428 function getSetISOWeek(input) {
1429 var week = weekOfYear(this, 1, 4).week;
1430 return input == null ? week : this.add((input - week) * 7, 'd');
1431 }
1432
1433 // FORMATTING
1434
1435 addFormatToken('d', 0, 'do', 'day');
1436
1437 addFormatToken('dd', 0, 0, function (format) {
1438 return this.localeData().weekdaysMin(this, format);
1439 });
1440
1441 addFormatToken('ddd', 0, 0, function (format) {
1442 return this.localeData().weekdaysShort(this, format);
1443 });
1444
1445 addFormatToken('dddd', 0, 0, function (format) {
1446 return this.localeData().weekdays(this, format);
1447 });
1448
1449 addFormatToken('e', 0, 0, 'weekday');
1450 addFormatToken('E', 0, 0, 'isoWeekday');
1451
1452 // ALIASES
1453
1454 addUnitAlias('day', 'd');
1455 addUnitAlias('weekday', 'e');
1456 addUnitAlias('isoWeekday', 'E');
1457
1458 // PRIORITY
1459 addUnitPriority('day', 11);
1460 addUnitPriority('weekday', 11);
1461 addUnitPriority('isoWeekday', 11);
1462
1463 // PARSING
1464
1465 addRegexToken('d', match1to2);
1466 addRegexToken('e', match1to2);
1467 addRegexToken('E', match1to2);
1468 addRegexToken('dd', function (isStrict, locale) {
1469 return locale.weekdaysMinRegex(isStrict);
1470 });
1471 addRegexToken('ddd', function (isStrict, locale) {
1472 return locale.weekdaysShortRegex(isStrict);
1473 });
1474 addRegexToken('dddd', function (isStrict, locale) {
1475 return locale.weekdaysRegex(isStrict);
1476 });
1477
1478 addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
1479 var weekday = config._locale.weekdaysParse(input, token, config._strict);
1480 // if we didn't get a weekday name, mark the date as invalid
1481 if (weekday != null) {
1482 week.d = weekday;
1483 } else {
1484 getParsingFlags(config).invalidWeekday = input;
1485 }
1486 });
1487
1488 addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
1489 week[token] = toInt(input);
1490 });
1491
1492 // HELPERS
1493
1494 function parseWeekday(input, locale) {
1495 if (typeof input !== 'string') {
1496 return input;
1497 }
1498
1499 if (!isNaN(input)) {
1500 return parseInt(input, 10);
1501 }
1502
1503 input = locale.weekdaysParse(input);
1504 if (typeof input === 'number') {
1505 return input;
1506 }
1507
1508 return null;
1509 }
1510
1511 function parseIsoWeekday(input, locale) {
1512 if (typeof input === 'string') {
1513 return locale.weekdaysParse(input) % 7 || 7;
1514 }
1515 return isNaN(input) ? null : input;
1516 }
1517
1518 // LOCALES
1519 function shiftWeekdays(ws, n) {
1520 return ws.slice(n, 7).concat(ws.slice(0, n));
1521 }
1522
1523 var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
1524 '_'
1525 ),
1526 defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
1527 defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
1528 defaultWeekdaysRegex = matchWord,
1529 defaultWeekdaysShortRegex = matchWord,
1530 defaultWeekdaysMinRegex = matchWord;
1531
1532 function localeWeekdays(m, format) {
1533 var weekdays = isArray(this._weekdays)
1534 ? this._weekdays
1535 : this._weekdays[
1536 m && m !== true && this._weekdays.isFormat.test(format)
1537 ? 'format'
1538 : 'standalone'
1539 ];
1540 return m === true
1541 ? shiftWeekdays(weekdays, this._week.dow)
1542 : m
1543 ? weekdays[m.day()]
1544 : weekdays;
1545 }
1546
1547 function localeWeekdaysShort(m) {
1548 return m === true
1549 ? shiftWeekdays(this._weekdaysShort, this._week.dow)
1550 : m
1551 ? this._weekdaysShort[m.day()]
1552 : this._weekdaysShort;
1553 }
1554
1555 function localeWeekdaysMin(m) {
1556 return m === true
1557 ? shiftWeekdays(this._weekdaysMin, this._week.dow)
1558 : m
1559 ? this._weekdaysMin[m.day()]
1560 : this._weekdaysMin;
1561 }
1562
1563 function handleStrictParse$1(weekdayName, format, strict) {
1564 var i,
1565 ii,
1566 mom,
1567 llc = weekdayName.toLocaleLowerCase();
1568 if (!this._weekdaysParse) {
1569 this._weekdaysParse = [];
1570 this._shortWeekdaysParse = [];
1571 this._minWeekdaysParse = [];
1572
1573 for (i = 0; i < 7; ++i) {
1574 mom = createUTC([2000, 1]).day(i);
1575 this._minWeekdaysParse[i] = this.weekdaysMin(
1576 mom,
1577 ''
1578 ).toLocaleLowerCase();
1579 this._shortWeekdaysParse[i] = this.weekdaysShort(
1580 mom,
1581 ''
1582 ).toLocaleLowerCase();
1583 this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
1584 }
1585 }
1586
1587 if (strict) {
1588 if (format === 'dddd') {
1589 ii = indexOf.call(this._weekdaysParse, llc);
1590 return ii !== -1 ? ii : null;
1591 } else if (format === 'ddd') {
1592 ii = indexOf.call(this._shortWeekdaysParse, llc);
1593 return ii !== -1 ? ii : null;
1594 } else {
1595 ii = indexOf.call(this._minWeekdaysParse, llc);
1596 return ii !== -1 ? ii : null;
1597 }
1598 } else {
1599 if (format === 'dddd') {
1600 ii = indexOf.call(this._weekdaysParse, llc);
1601 if (ii !== -1) {
1602 return ii;
1603 }
1604 ii = indexOf.call(this._shortWeekdaysParse, llc);
1605 if (ii !== -1) {
1606 return ii;
1607 }
1608 ii = indexOf.call(this._minWeekdaysParse, llc);
1609 return ii !== -1 ? ii : null;
1610 } else if (format === 'ddd') {
1611 ii = indexOf.call(this._shortWeekdaysParse, llc);
1612 if (ii !== -1) {
1613 return ii;
1614 }
1615 ii = indexOf.call(this._weekdaysParse, llc);
1616 if (ii !== -1) {
1617 return ii;
1618 }
1619 ii = indexOf.call(this._minWeekdaysParse, llc);
1620 return ii !== -1 ? ii : null;
1621 } else {
1622 ii = indexOf.call(this._minWeekdaysParse, llc);
1623 if (ii !== -1) {
1624 return ii;
1625 }
1626 ii = indexOf.call(this._weekdaysParse, llc);
1627 if (ii !== -1) {
1628 return ii;
1629 }
1630 ii = indexOf.call(this._shortWeekdaysParse, llc);
1631 return ii !== -1 ? ii : null;
1632 }
1633 }
1634 }
1635
1636 function localeWeekdaysParse(weekdayName, format, strict) {
1637 var i, mom, regex;
1638
1639 if (this._weekdaysParseExact) {
1640 return handleStrictParse$1.call(this, weekdayName, format, strict);
1641 }
1642
1643 if (!this._weekdaysParse) {
1644 this._weekdaysParse = [];
1645 this._minWeekdaysParse = [];
1646 this._shortWeekdaysParse = [];
1647 this._fullWeekdaysParse = [];
1648 }
1649
1650 for (i = 0; i < 7; i++) {
1651 // make the regex if we don't have it already
1652
1653 mom = createUTC([2000, 1]).day(i);
1654 if (strict && !this._fullWeekdaysParse[i]) {
1655 this._fullWeekdaysParse[i] = new RegExp(
1656 '^' + this.weekdays(mom, '').replace('.', '\\.?') + '$',
1657 'i'
1658 );
1659 this._shortWeekdaysParse[i] = new RegExp(
1660 '^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$',
1661 'i'
1662 );
1663 this._minWeekdaysParse[i] = new RegExp(
1664 '^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$',
1665 'i'
1666 );
1667 }
1668 if (!this._weekdaysParse[i]) {
1669 regex =
1670 '^' +
1671 this.weekdays(mom, '') +
1672 '|^' +
1673 this.weekdaysShort(mom, '') +
1674 '|^' +
1675 this.weekdaysMin(mom, '');
1676 this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
1677 }
1678 // test the regex
1679 if (
1680 strict &&
1681 format === 'dddd' &&
1682 this._fullWeekdaysParse[i].test(weekdayName)
1683 ) {
1684 return i;
1685 } else if (
1686 strict &&
1687 format === 'ddd' &&
1688 this._shortWeekdaysParse[i].test(weekdayName)
1689 ) {
1690 return i;
1691 } else if (
1692 strict &&
1693 format === 'dd' &&
1694 this._minWeekdaysParse[i].test(weekdayName)
1695 ) {
1696 return i;
1697 } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
1698 return i;
1699 }
1700 }
1701 }
1702
1703 // MOMENTS
1704
1705 function getSetDayOfWeek(input) {
1706 if (!this.isValid()) {
1707 return input != null ? this : NaN;
1708 }
1709 var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
1710 if (input != null) {
1711 input = parseWeekday(input, this.localeData());
1712 return this.add(input - day, 'd');
1713 } else {
1714 return day;
1715 }
1716 }
1717
1718 function getSetLocaleDayOfWeek(input) {
1719 if (!this.isValid()) {
1720 return input != null ? this : NaN;
1721 }
1722 var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
1723 return input == null ? weekday : this.add(input - weekday, 'd');
1724 }
1725
1726 function getSetISODayOfWeek(input) {
1727 if (!this.isValid()) {
1728 return input != null ? this : NaN;
1729 }
1730
1731 // behaves the same as moment#day except
1732 // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
1733 // as a setter, sunday should belong to the previous week.
1734
1735 if (input != null) {
1736 var weekday = parseIsoWeekday(input, this.localeData());
1737 return this.day(this.day() % 7 ? weekday : weekday - 7);
1738 } else {
1739 return this.day() || 7;
1740 }
1741 }
1742
1743 function weekdaysRegex(isStrict) {
1744 if (this._weekdaysParseExact) {
1745 if (!hasOwnProp(this, '_weekdaysRegex')) {
1746 computeWeekdaysParse.call(this);
1747 }
1748 if (isStrict) {
1749 return this._weekdaysStrictRegex;
1750 } else {
1751 return this._weekdaysRegex;
1752 }
1753 } else {
1754 if (!hasOwnProp(this, '_weekdaysRegex')) {
1755 this._weekdaysRegex = defaultWeekdaysRegex;
1756 }
1757 return this._weekdaysStrictRegex && isStrict
1758 ? this._weekdaysStrictRegex
1759 : this._weekdaysRegex;
1760 }
1761 }
1762
1763 function weekdaysShortRegex(isStrict) {
1764 if (this._weekdaysParseExact) {
1765 if (!hasOwnProp(this, '_weekdaysRegex')) {
1766 computeWeekdaysParse.call(this);
1767 }
1768 if (isStrict) {
1769 return this._weekdaysShortStrictRegex;
1770 } else {
1771 return this._weekdaysShortRegex;
1772 }
1773 } else {
1774 if (!hasOwnProp(this, '_weekdaysShortRegex')) {
1775 this._weekdaysShortRegex = defaultWeekdaysShortRegex;
1776 }
1777 return this._weekdaysShortStrictRegex && isStrict
1778 ? this._weekdaysShortStrictRegex
1779 : this._weekdaysShortRegex;
1780 }
1781 }
1782
1783 function weekdaysMinRegex(isStrict) {
1784 if (this._weekdaysParseExact) {
1785 if (!hasOwnProp(this, '_weekdaysRegex')) {
1786 computeWeekdaysParse.call(this);
1787 }
1788 if (isStrict) {
1789 return this._weekdaysMinStrictRegex;
1790 } else {
1791 return this._weekdaysMinRegex;
1792 }
1793 } else {
1794 if (!hasOwnProp(this, '_weekdaysMinRegex')) {
1795 this._weekdaysMinRegex = defaultWeekdaysMinRegex;
1796 }
1797 return this._weekdaysMinStrictRegex && isStrict
1798 ? this._weekdaysMinStrictRegex
1799 : this._weekdaysMinRegex;
1800 }
1801 }
1802
1803 function computeWeekdaysParse() {
1804 function cmpLenRev(a, b) {
1805 return b.length - a.length;
1806 }
1807
1808 var minPieces = [],
1809 shortPieces = [],
1810 longPieces = [],
1811 mixedPieces = [],
1812 i,
1813 mom,
1814 minp,
1815 shortp,
1816 longp;
1817 for (i = 0; i < 7; i++) {
1818 // make the regex if we don't have it already
1819 mom = createUTC([2000, 1]).day(i);
1820 minp = regexEscape(this.weekdaysMin(mom, ''));
1821 shortp = regexEscape(this.weekdaysShort(mom, ''));
1822 longp = regexEscape(this.weekdays(mom, ''));
1823 minPieces.push(minp);
1824 shortPieces.push(shortp);
1825 longPieces.push(longp);
1826 mixedPieces.push(minp);
1827 mixedPieces.push(shortp);
1828 mixedPieces.push(longp);
1829 }
1830 // Sorting makes sure if one weekday (or abbr) is a prefix of another it
1831 // will match the longer piece.
1832 minPieces.sort(cmpLenRev);
1833 shortPieces.sort(cmpLenRev);
1834 longPieces.sort(cmpLenRev);
1835 mixedPieces.sort(cmpLenRev);
1836
1837 this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1838 this._weekdaysShortRegex = this._weekdaysRegex;
1839 this._weekdaysMinRegex = this._weekdaysRegex;
1840
1841 this._weekdaysStrictRegex = new RegExp(
1842 '^(' + longPieces.join('|') + ')',
1843 'i'
1844 );
1845 this._weekdaysShortStrictRegex = new RegExp(
1846 '^(' + shortPieces.join('|') + ')',
1847 'i'
1848 );
1849 this._weekdaysMinStrictRegex = new RegExp(
1850 '^(' + minPieces.join('|') + ')',
1851 'i'
1852 );
1853 }
1854
1855 // FORMATTING
1856
1857 function hFormat() {
1858 return this.hours() % 12 || 12;
1859 }
1860
1861 function kFormat() {
1862 return this.hours() || 24;
1863 }
1864
1865 addFormatToken('H', ['HH', 2], 0, 'hour');
1866 addFormatToken('h', ['hh', 2], 0, hFormat);
1867 addFormatToken('k', ['kk', 2], 0, kFormat);
1868
1869 addFormatToken('hmm', 0, 0, function () {
1870 return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
1871 });
1872
1873 addFormatToken('hmmss', 0, 0, function () {
1874 return (
1875 '' +
1876 hFormat.apply(this) +
1877 zeroFill(this.minutes(), 2) +
1878 zeroFill(this.seconds(), 2)
1879 );
1880 });
1881
1882 addFormatToken('Hmm', 0, 0, function () {
1883 return '' + this.hours() + zeroFill(this.minutes(), 2);
1884 });
1885
1886 addFormatToken('Hmmss', 0, 0, function () {
1887 return (
1888 '' +
1889 this.hours() +
1890 zeroFill(this.minutes(), 2) +
1891 zeroFill(this.seconds(), 2)
1892 );
1893 });
1894
1895 function meridiem(token, lowercase) {
1896 addFormatToken(token, 0, 0, function () {
1897 return this.localeData().meridiem(
1898 this.hours(),
1899 this.minutes(),
1900 lowercase
1901 );
1902 });
1903 }
1904
1905 meridiem('a', true);
1906 meridiem('A', false);
1907
1908 // ALIASES
1909
1910 addUnitAlias('hour', 'h');
1911
1912 // PRIORITY
1913 addUnitPriority('hour', 13);
1914
1915 // PARSING
1916
1917 function matchMeridiem(isStrict, locale) {
1918 return locale._meridiemParse;
1919 }
1920
1921 addRegexToken('a', matchMeridiem);
1922 addRegexToken('A', matchMeridiem);
1923 addRegexToken('H', match1to2);
1924 addRegexToken('h', match1to2);
1925 addRegexToken('k', match1to2);
1926 addRegexToken('HH', match1to2, match2);
1927 addRegexToken('hh', match1to2, match2);
1928 addRegexToken('kk', match1to2, match2);
1929
1930 addRegexToken('hmm', match3to4);
1931 addRegexToken('hmmss', match5to6);
1932 addRegexToken('Hmm', match3to4);
1933 addRegexToken('Hmmss', match5to6);
1934
1935 addParseToken(['H', 'HH'], HOUR);
1936 addParseToken(['k', 'kk'], function (input, array, config) {
1937 var kInput = toInt(input);
1938 array[HOUR] = kInput === 24 ? 0 : kInput;
1939 });
1940 addParseToken(['a', 'A'], function (input, array, config) {
1941 config._isPm = config._locale.isPM(input);
1942 config._meridiem = input;
1943 });
1944 addParseToken(['h', 'hh'], function (input, array, config) {
1945 array[HOUR] = toInt(input);
1946 getParsingFlags(config).bigHour = true;
1947 });
1948 addParseToken('hmm', function (input, array, config) {
1949 var pos = input.length - 2;
1950 array[HOUR] = toInt(input.substr(0, pos));
1951 array[MINUTE] = toInt(input.substr(pos));
1952 getParsingFlags(config).bigHour = true;
1953 });
1954 addParseToken('hmmss', function (input, array, config) {
1955 var pos1 = input.length - 4,
1956 pos2 = input.length - 2;
1957 array[HOUR] = toInt(input.substr(0, pos1));
1958 array[MINUTE] = toInt(input.substr(pos1, 2));
1959 array[SECOND] = toInt(input.substr(pos2));
1960 getParsingFlags(config).bigHour = true;
1961 });
1962 addParseToken('Hmm', function (input, array, config) {
1963 var pos = input.length - 2;
1964 array[HOUR] = toInt(input.substr(0, pos));
1965 array[MINUTE] = toInt(input.substr(pos));
1966 });
1967 addParseToken('Hmmss', function (input, array, config) {
1968 var pos1 = input.length - 4,
1969 pos2 = input.length - 2;
1970 array[HOUR] = toInt(input.substr(0, pos1));
1971 array[MINUTE] = toInt(input.substr(pos1, 2));
1972 array[SECOND] = toInt(input.substr(pos2));
1973 });
1974
1975 // LOCALES
1976
1977 function localeIsPM(input) {
1978 // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
1979 // Using charAt should be more compatible.
1980 return (input + '').toLowerCase().charAt(0) === 'p';
1981 }
1982
1983 var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i,
1984 // Setting the hour should keep the time, because the user explicitly
1985 // specified which hour they want. So trying to maintain the same hour (in
1986 // a new timezone) makes sense. Adding/subtracting hours does not follow
1987 // this rule.
1988 getSetHour = makeGetSet('Hours', true);
1989
1990 function localeMeridiem(hours, minutes, isLower) {
1991 if (hours > 11) {
1992 return isLower ? 'pm' : 'PM';
1993 } else {
1994 return isLower ? 'am' : 'AM';
1995 }
1996 }
1997
1998 var baseConfig = {
1999 calendar: defaultCalendar,
2000 longDateFormat: defaultLongDateFormat,
2001 invalidDate: defaultInvalidDate,
2002 ordinal: defaultOrdinal,
2003 dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
2004 relativeTime: defaultRelativeTime,
2005
2006 months: defaultLocaleMonths,
2007 monthsShort: defaultLocaleMonthsShort,
2008
2009 week: defaultLocaleWeek,
2010
2011 weekdays: defaultLocaleWeekdays,
2012 weekdaysMin: defaultLocaleWeekdaysMin,
2013 weekdaysShort: defaultLocaleWeekdaysShort,
2014
2015 meridiemParse: defaultLocaleMeridiemParse,
2016 };
2017
2018 // internal storage for locale config files
2019 var locales = {},
2020 localeFamilies = {},
2021 globalLocale;
2022
2023 function commonPrefix(arr1, arr2) {
2024 var i,
2025 minl = Math.min(arr1.length, arr2.length);
2026 for (i = 0; i < minl; i += 1) {
2027 if (arr1[i] !== arr2[i]) {
2028 return i;
2029 }
2030 }
2031 return minl;
2032 }
2033
2034 function normalizeLocale(key) {
2035 return key ? key.toLowerCase().replace('_', '-') : key;
2036 }
2037
2038 // pick the locale from the array
2039 // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
2040 // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
2041 function chooseLocale(names) {
2042 var i = 0,
2043 j,
2044 next,
2045 locale,
2046 split;
2047
2048 while (i < names.length) {
2049 split = normalizeLocale(names[i]).split('-');
2050 j = split.length;
2051 next = normalizeLocale(names[i + 1]);
2052 next = next ? next.split('-') : null;
2053 while (j > 0) {
2054 locale = loadLocale(split.slice(0, j).join('-'));
2055 if (locale) {
2056 return locale;
2057 }
2058 if (
2059 next &&
2060 next.length >= j &&
2061 commonPrefix(split, next) >= j - 1
2062 ) {
2063 //the next array item is better than a shallower substring of this one
2064 break;
2065 }
2066 j--;
2067 }
2068 i++;
2069 }
2070 return globalLocale;
2071 }
2072
2073 function loadLocale(name) {
2074 var oldLocale = null,
2075 aliasedRequire;
2076 // TODO: Find a better way to register and load all the locales in Node
2077 if (
2078 locales[name] === undefined &&
2079 typeof module !== 'undefined' &&
2080 module &&
2081 module.exports
2082 ) {
2083 try {
2084 oldLocale = globalLocale._abbr;
2085 aliasedRequire = require;
2086 aliasedRequire('./locale/' + name);
2087 getSetGlobalLocale(oldLocale);
2088 } catch (e) {
2089 // mark as not found to avoid repeating expensive file require call causing high CPU
2090 // when trying to find en-US, en_US, en-us for every format call
2091 locales[name] = null; // null means not found
2092 }
2093 }
2094 return locales[name];
2095 }
2096
2097 // This function will load locale and then set the global locale. If
2098 // no arguments are passed in, it will simply return the current global
2099 // locale key.
2100 function getSetGlobalLocale(key, values) {
2101 var data;
2102 if (key) {
2103 if (isUndefined(values)) {
2104 data = getLocale(key);
2105 } else {
2106 data = defineLocale(key, values);
2107 }
2108
2109 if (data) {
2110 // moment.duration._locale = moment._locale = data;
2111 globalLocale = data;
2112 } else {
2113 if (typeof console !== 'undefined' && console.warn) {
2114 //warn user if arguments are passed but the locale could not be set
2115 console.warn(
2116 'Locale ' + key + ' not found. Did you forget to load it?'
2117 );
2118 }
2119 }
2120 }
2121
2122 return globalLocale._abbr;
2123 }
2124
2125 function defineLocale(name, config) {
2126 if (config !== null) {
2127 var locale,
2128 parentConfig = baseConfig;
2129 config.abbr = name;
2130 if (locales[name] != null) {
2131 deprecateSimple(
2132 'defineLocaleOverride',
2133 'use moment.updateLocale(localeName, config) to change ' +
2134 'an existing locale. moment.defineLocale(localeName, ' +
2135 'config) should only be used for creating a new locale ' +
2136 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'
2137 );
2138 parentConfig = locales[name]._config;
2139 } else if (config.parentLocale != null) {
2140 if (locales[config.parentLocale] != null) {
2141 parentConfig = locales[config.parentLocale]._config;
2142 } else {
2143 locale = loadLocale(config.parentLocale);
2144 if (locale != null) {
2145 parentConfig = locale._config;
2146 } else {
2147 if (!localeFamilies[config.parentLocale]) {
2148 localeFamilies[config.parentLocale] = [];
2149 }
2150 localeFamilies[config.parentLocale].push({
2151 name: name,
2152 config: config,
2153 });
2154 return null;
2155 }
2156 }
2157 }
2158 locales[name] = new Locale(mergeConfigs(parentConfig, config));
2159
2160 if (localeFamilies[name]) {
2161 localeFamilies[name].forEach(function (x) {
2162 defineLocale(x.name, x.config);
2163 });
2164 }
2165
2166 // backwards compat for now: also set the locale
2167 // make sure we set the locale AFTER all child locales have been
2168 // created, so we won't end up with the child locale set.
2169 getSetGlobalLocale(name);
2170
2171 return locales[name];
2172 } else {
2173 // useful for testing
2174 delete locales[name];
2175 return null;
2176 }
2177 }
2178
2179 function updateLocale(name, config) {
2180 if (config != null) {
2181 var locale,
2182 tmpLocale,
2183 parentConfig = baseConfig;
2184
2185 if (locales[name] != null && locales[name].parentLocale != null) {
2186 // Update existing child locale in-place to avoid memory-leaks
2187 locales[name].set(mergeConfigs(locales[name]._config, config));
2188 } else {
2189 // MERGE
2190 tmpLocale = loadLocale(name);
2191 if (tmpLocale != null) {
2192 parentConfig = tmpLocale._config;
2193 }
2194 config = mergeConfigs(parentConfig, config);
2195 if (tmpLocale == null) {
2196 // updateLocale is called for creating a new locale
2197 // Set abbr so it will have a name (getters return
2198 // undefined otherwise).
2199 config.abbr = name;
2200 }
2201 locale = new Locale(config);
2202 locale.parentLocale = locales[name];
2203 locales[name] = locale;
2204 }
2205
2206 // backwards compat for now: also set the locale
2207 getSetGlobalLocale(name);
2208 } else {
2209 // pass null for config to unupdate, useful for tests
2210 if (locales[name] != null) {
2211 if (locales[name].parentLocale != null) {
2212 locales[name] = locales[name].parentLocale;
2213 if (name === getSetGlobalLocale()) {
2214 getSetGlobalLocale(name);
2215 }
2216 } else if (locales[name] != null) {
2217 delete locales[name];
2218 }
2219 }
2220 }
2221 return locales[name];
2222 }
2223
2224 // returns locale data
2225 function getLocale(key) {
2226 var locale;
2227
2228 if (key && key._locale && key._locale._abbr) {
2229 key = key._locale._abbr;
2230 }
2231
2232 if (!key) {
2233 return globalLocale;
2234 }
2235
2236 if (!isArray(key)) {
2237 //short-circuit everything else
2238 locale = loadLocale(key);
2239 if (locale) {
2240 return locale;
2241 }
2242 key = [key];
2243 }
2244
2245 return chooseLocale(key);
2246 }
2247
2248 function listLocales() {
2249 return keys(locales);
2250 }
2251
2252 function checkOverflow(m) {
2253 var overflow,
2254 a = m._a;
2255
2256 if (a && getParsingFlags(m).overflow === -2) {
2257 overflow =
2258 a[MONTH] < 0 || a[MONTH] > 11
2259 ? MONTH
2260 : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])
2261 ? DATE
2262 : a[HOUR] < 0 ||
2263 a[HOUR] > 24 ||
2264 (a[HOUR] === 24 &&
2265 (a[MINUTE] !== 0 ||
2266 a[SECOND] !== 0 ||
2267 a[MILLISECOND] !== 0))
2268 ? HOUR
2269 : a[MINUTE] < 0 || a[MINUTE] > 59
2270 ? MINUTE
2271 : a[SECOND] < 0 || a[SECOND] > 59
2272 ? SECOND
2273 : a[MILLISECOND] < 0 || a[MILLISECOND] > 999
2274 ? MILLISECOND
2275 : -1;
2276
2277 if (
2278 getParsingFlags(m)._overflowDayOfYear &&
2279 (overflow < YEAR || overflow > DATE)
2280 ) {
2281 overflow = DATE;
2282 }
2283 if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
2284 overflow = WEEK;
2285 }
2286 if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
2287 overflow = WEEKDAY;
2288 }
2289
2290 getParsingFlags(m).overflow = overflow;
2291 }
2292
2293 return m;
2294 }
2295
2296 // iso 8601 regex
2297 // 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)
2298 var extendedIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
2299 basicIsoRegex = /^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,
2300 tzRegex = /Z|[+-]\d\d(?::?\d\d)?/,
2301 isoDates = [
2302 ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
2303 ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
2304 ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
2305 ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
2306 ['YYYY-DDD', /\d{4}-\d{3}/],
2307 ['YYYY-MM', /\d{4}-\d\d/, false],
2308 ['YYYYYYMMDD', /[+-]\d{10}/],
2309 ['YYYYMMDD', /\d{8}/],
2310 ['GGGG[W]WWE', /\d{4}W\d{3}/],
2311 ['GGGG[W]WW', /\d{4}W\d{2}/, false],
2312 ['YYYYDDD', /\d{7}/],
2313 ['YYYYMM', /\d{6}/, false],
2314 ['YYYY', /\d{4}/, false],
2315 ],
2316 // iso time formats and regexes
2317 isoTimes = [
2318 ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
2319 ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
2320 ['HH:mm:ss', /\d\d:\d\d:\d\d/],
2321 ['HH:mm', /\d\d:\d\d/],
2322 ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
2323 ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
2324 ['HHmmss', /\d\d\d\d\d\d/],
2325 ['HHmm', /\d\d\d\d/],
2326 ['HH', /\d\d/],
2327 ],
2328 aspNetJsonRegex = /^\/?Date\((-?\d+)/i,
2329 // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
2330 rfc2822 = /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,
2331 obsOffsets = {
2332 UT: 0,
2333 GMT: 0,
2334 EDT: -4 * 60,
2335 EST: -5 * 60,
2336 CDT: -5 * 60,
2337 CST: -6 * 60,
2338 MDT: -6 * 60,
2339 MST: -7 * 60,
2340 PDT: -7 * 60,
2341 PST: -8 * 60,
2342 };
2343
2344 // date from iso format
2345 function configFromISO(config) {
2346 var i,
2347 l,
2348 string = config._i,
2349 match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
2350 allowTime,
2351 dateFormat,
2352 timeFormat,
2353 tzFormat;
2354
2355 if (match) {
2356 getParsingFlags(config).iso = true;
2357
2358 for (i = 0, l = isoDates.length; i < l; i++) {
2359 if (isoDates[i][1].exec(match[1])) {
2360 dateFormat = isoDates[i][0];
2361 allowTime = isoDates[i][2] !== false;
2362 break;
2363 }
2364 }
2365 if (dateFormat == null) {
2366 config._isValid = false;
2367 return;
2368 }
2369 if (match[3]) {
2370 for (i = 0, l = isoTimes.length; i < l; i++) {
2371 if (isoTimes[i][1].exec(match[3])) {
2372 // match[2] should be 'T' or space
2373 timeFormat = (match[2] || ' ') + isoTimes[i][0];
2374 break;
2375 }
2376 }
2377 if (timeFormat == null) {
2378 config._isValid = false;
2379 return;
2380 }
2381 }
2382 if (!allowTime && timeFormat != null) {
2383 config._isValid = false;
2384 return;
2385 }
2386 if (match[4]) {
2387 if (tzRegex.exec(match[4])) {
2388 tzFormat = 'Z';
2389 } else {
2390 config._isValid = false;
2391 return;
2392 }
2393 }
2394 config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
2395 configFromStringAndFormat(config);
2396 } else {
2397 config._isValid = false;
2398 }
2399 }
2400
2401 function extractFromRFC2822Strings(
2402 yearStr,
2403 monthStr,
2404 dayStr,
2405 hourStr,
2406 minuteStr,
2407 secondStr
2408 ) {
2409 var result = [
2410 untruncateYear(yearStr),
2411 defaultLocaleMonthsShort.indexOf(monthStr),
2412 parseInt(dayStr, 10),
2413 parseInt(hourStr, 10),
2414 parseInt(minuteStr, 10),
2415 ];
2416
2417 if (secondStr) {
2418 result.push(parseInt(secondStr, 10));
2419 }
2420
2421 return result;
2422 }
2423
2424 function untruncateYear(yearStr) {
2425 var year = parseInt(yearStr, 10);
2426 if (year <= 49) {
2427 return 2000 + year;
2428 } else if (year <= 999) {
2429 return 1900 + year;
2430 }
2431 return year;
2432 }
2433
2434 function preprocessRFC2822(s) {
2435 // Remove comments and folding whitespace and replace multiple-spaces with a single space
2436 return s
2437 .replace(/\([^)]*\)|[\n\t]/g, ' ')
2438 .replace(/(\s\s+)/g, ' ')
2439 .replace(/^\s\s*/, '')
2440 .replace(/\s\s*$/, '');
2441 }
2442
2443 function checkWeekday(weekdayStr, parsedInput, config) {
2444 if (weekdayStr) {
2445 // TODO: Replace the vanilla JS Date object with an independent day-of-week check.
2446 var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
2447 weekdayActual = new Date(
2448 parsedInput[0],
2449 parsedInput[1],
2450 parsedInput[2]
2451 ).getDay();
2452 if (weekdayProvided !== weekdayActual) {
2453 getParsingFlags(config).weekdayMismatch = true;
2454 config._isValid = false;
2455 return false;
2456 }
2457 }
2458 return true;
2459 }
2460
2461 function calculateOffset(obsOffset, militaryOffset, numOffset) {
2462 if (obsOffset) {
2463 return obsOffsets[obsOffset];
2464 } else if (militaryOffset) {
2465 // the only allowed military tz is Z
2466 return 0;
2467 } else {
2468 var hm = parseInt(numOffset, 10),
2469 m = hm % 100,
2470 h = (hm - m) / 100;
2471 return h * 60 + m;
2472 }
2473 }
2474
2475 // date and time from ref 2822 format
2476 function configFromRFC2822(config) {
2477 var match = rfc2822.exec(preprocessRFC2822(config._i)),
2478 parsedArray;
2479 if (match) {
2480 parsedArray = extractFromRFC2822Strings(
2481 match[4],
2482 match[3],
2483 match[2],
2484 match[5],
2485 match[6],
2486 match[7]
2487 );
2488 if (!checkWeekday(match[1], parsedArray, config)) {
2489 return;
2490 }
2491
2492 config._a = parsedArray;
2493 config._tzm = calculateOffset(match[8], match[9], match[10]);
2494
2495 config._d = createUTCDate.apply(null, config._a);
2496 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2497
2498 getParsingFlags(config).rfc2822 = true;
2499 } else {
2500 config._isValid = false;
2501 }
2502 }
2503
2504 // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict
2505 function configFromString(config) {
2506 var matched = aspNetJsonRegex.exec(config._i);
2507 if (matched !== null) {
2508 config._d = new Date(+matched[1]);
2509 return;
2510 }
2511
2512 configFromISO(config);
2513 if (config._isValid === false) {
2514 delete config._isValid;
2515 } else {
2516 return;
2517 }
2518
2519 configFromRFC2822(config);
2520 if (config._isValid === false) {
2521 delete config._isValid;
2522 } else {
2523 return;
2524 }
2525
2526 if (config._strict) {
2527 config._isValid = false;
2528 } else {
2529 // Final attempt, use Input Fallback
2530 hooks.createFromInputFallback(config);
2531 }
2532 }
2533
2534 hooks.createFromInputFallback = deprecate(
2535 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
2536 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
2537 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',
2538 function (config) {
2539 config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
2540 }
2541 );
2542
2543 // Pick the first defined of two or three arguments.
2544 function defaults(a, b, c) {
2545 if (a != null) {
2546 return a;
2547 }
2548 if (b != null) {
2549 return b;
2550 }
2551 return c;
2552 }
2553
2554 function currentDateArray(config) {
2555 // hooks is actually the exported moment object
2556 var nowValue = new Date(hooks.now());
2557 if (config._useUTC) {
2558 return [
2559 nowValue.getUTCFullYear(),
2560 nowValue.getUTCMonth(),
2561 nowValue.getUTCDate(),
2562 ];
2563 }
2564 return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
2565 }
2566
2567 // convert an array to a date.
2568 // the array should mirror the parameters below
2569 // note: all values past the year are optional and will default to the lowest possible value.
2570 // [year, month, day , hour, minute, second, millisecond]
2571 function configFromArray(config) {
2572 var i,
2573 date,
2574 input = [],
2575 currentDate,
2576 expectedWeekday,
2577 yearToUse;
2578
2579 if (config._d) {
2580 return;
2581 }
2582
2583 currentDate = currentDateArray(config);
2584
2585 //compute day of the year from weeks and weekdays
2586 if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
2587 dayOfYearFromWeekInfo(config);
2588 }
2589
2590 //if the day of the year is set, figure out what it is
2591 if (config._dayOfYear != null) {
2592 yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
2593
2594 if (
2595 config._dayOfYear > daysInYear(yearToUse) ||
2596 config._dayOfYear === 0
2597 ) {
2598 getParsingFlags(config)._overflowDayOfYear = true;
2599 }
2600
2601 date = createUTCDate(yearToUse, 0, config._dayOfYear);
2602 config._a[MONTH] = date.getUTCMonth();
2603 config._a[DATE] = date.getUTCDate();
2604 }
2605
2606 // Default to current date.
2607 // * if no year, month, day of month are given, default to today
2608 // * if day of month is given, default month and year
2609 // * if month is given, default only year
2610 // * if year is given, don't default anything
2611 for (i = 0; i < 3 && config._a[i] == null; ++i) {
2612 config._a[i] = input[i] = currentDate[i];
2613 }
2614
2615 // Zero out whatever was not defaulted, including time
2616 for (; i < 7; i++) {
2617 config._a[i] = input[i] =
2618 config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];
2619 }
2620
2621 // Check for 24:00:00.000
2622 if (
2623 config._a[HOUR] === 24 &&
2624 config._a[MINUTE] === 0 &&
2625 config._a[SECOND] === 0 &&
2626 config._a[MILLISECOND] === 0
2627 ) {
2628 config._nextDay = true;
2629 config._a[HOUR] = 0;
2630 }
2631
2632 config._d = (config._useUTC ? createUTCDate : createDate).apply(
2633 null,
2634 input
2635 );
2636 expectedWeekday = config._useUTC
2637 ? config._d.getUTCDay()
2638 : config._d.getDay();
2639
2640 // Apply timezone offset from input. The actual utcOffset can be changed
2641 // with parseZone.
2642 if (config._tzm != null) {
2643 config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2644 }
2645
2646 if (config._nextDay) {
2647 config._a[HOUR] = 24;
2648 }
2649
2650 // check for mismatching day of week
2651 if (
2652 config._w &&
2653 typeof config._w.d !== 'undefined' &&
2654 config._w.d !== expectedWeekday
2655 ) {
2656 getParsingFlags(config).weekdayMismatch = true;
2657 }
2658 }
2659
2660 function dayOfYearFromWeekInfo(config) {
2661 var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;
2662
2663 w = config._w;
2664 if (w.GG != null || w.W != null || w.E != null) {
2665 dow = 1;
2666 doy = 4;
2667
2668 // TODO: We need to take the current isoWeekYear, but that depends on
2669 // how we interpret now (local, utc, fixed offset). So create
2670 // a now version of current config (take local/utc/offset flags, and
2671 // create now).
2672 weekYear = defaults(
2673 w.GG,
2674 config._a[YEAR],
2675 weekOfYear(createLocal(), 1, 4).year
2676 );
2677 week = defaults(w.W, 1);
2678 weekday = defaults(w.E, 1);
2679 if (weekday < 1 || weekday > 7) {
2680 weekdayOverflow = true;
2681 }
2682 } else {
2683 dow = config._locale._week.dow;
2684 doy = config._locale._week.doy;
2685
2686 curWeek = weekOfYear(createLocal(), dow, doy);
2687
2688 weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
2689
2690 // Default to current week.
2691 week = defaults(w.w, curWeek.week);
2692
2693 if (w.d != null) {
2694 // weekday -- low day numbers are considered next week
2695 weekday = w.d;
2696 if (weekday < 0 || weekday > 6) {
2697 weekdayOverflow = true;
2698 }
2699 } else if (w.e != null) {
2700 // local weekday -- counting starts from beginning of week
2701 weekday = w.e + dow;
2702 if (w.e < 0 || w.e > 6) {
2703 weekdayOverflow = true;
2704 }
2705 } else {
2706 // default to beginning of week
2707 weekday = dow;
2708 }
2709 }
2710 if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
2711 getParsingFlags(config)._overflowWeeks = true;
2712 } else if (weekdayOverflow != null) {
2713 getParsingFlags(config)._overflowWeekday = true;
2714 } else {
2715 temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
2716 config._a[YEAR] = temp.year;
2717 config._dayOfYear = temp.dayOfYear;
2718 }
2719 }
2720
2721 // constant that refers to the ISO standard
2722 hooks.ISO_8601 = function () {};
2723
2724 // constant that refers to the RFC 2822 form
2725 hooks.RFC_2822 = function () {};
2726
2727 // date from string and format string
2728 function configFromStringAndFormat(config) {
2729 // TODO: Move this to another part of the creation flow to prevent circular deps
2730 if (config._f === hooks.ISO_8601) {
2731 configFromISO(config);
2732 return;
2733 }
2734 if (config._f === hooks.RFC_2822) {
2735 configFromRFC2822(config);
2736 return;
2737 }
2738 config._a = [];
2739 getParsingFlags(config).empty = true;
2740
2741 // This array is used to make a Date, either with `new Date` or `Date.UTC`
2742 var string = '' + config._i,
2743 i,
2744 parsedInput,
2745 tokens,
2746 token,
2747 skipped,
2748 stringLength = string.length,
2749 totalParsedInputLength = 0,
2750 era;
2751
2752 tokens =
2753 expandFormat(config._f, config._locale).match(formattingTokens) || [];
2754
2755 for (i = 0; i < tokens.length; i++) {
2756 token = tokens[i];
2757 parsedInput = (string.match(getParseRegexForToken(token, config)) ||
2758 [])[0];
2759 if (parsedInput) {
2760 skipped = string.substr(0, string.indexOf(parsedInput));
2761 if (skipped.length > 0) {
2762 getParsingFlags(config).unusedInput.push(skipped);
2763 }
2764 string = string.slice(
2765 string.indexOf(parsedInput) + parsedInput.length
2766 );
2767 totalParsedInputLength += parsedInput.length;
2768 }
2769 // don't parse if it's not a known token
2770 if (formatTokenFunctions[token]) {
2771 if (parsedInput) {
2772 getParsingFlags(config).empty = false;
2773 } else {
2774 getParsingFlags(config).unusedTokens.push(token);
2775 }
2776 addTimeToArrayFromToken(token, parsedInput, config);
2777 } else if (config._strict && !parsedInput) {
2778 getParsingFlags(config).unusedTokens.push(token);
2779 }
2780 }
2781
2782 // add remaining unparsed input length to the string
2783 getParsingFlags(config).charsLeftOver =
2784 stringLength - totalParsedInputLength;
2785 if (string.length > 0) {
2786 getParsingFlags(config).unusedInput.push(string);
2787 }
2788
2789 // clear _12h flag if hour is <= 12
2790 if (
2791 config._a[HOUR] <= 12 &&
2792 getParsingFlags(config).bigHour === true &&
2793 config._a[HOUR] > 0
2794 ) {
2795 getParsingFlags(config).bigHour = undefined;
2796 }
2797
2798 getParsingFlags(config).parsedDateParts = config._a.slice(0);
2799 getParsingFlags(config).meridiem = config._meridiem;
2800 // handle meridiem
2801 config._a[HOUR] = meridiemFixWrap(
2802 config._locale,
2803 config._a[HOUR],
2804 config._meridiem
2805 );
2806
2807 // handle era
2808 era = getParsingFlags(config).era;
2809 if (era !== null) {
2810 config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);
2811 }
2812
2813 configFromArray(config);
2814 checkOverflow(config);
2815 }
2816
2817 function meridiemFixWrap(locale, hour, meridiem) {
2818 var isPm;
2819
2820 if (meridiem == null) {
2821 // nothing to do
2822 return hour;
2823 }
2824 if (locale.meridiemHour != null) {
2825 return locale.meridiemHour(hour, meridiem);
2826 } else if (locale.isPM != null) {
2827 // Fallback
2828 isPm = locale.isPM(meridiem);
2829 if (isPm && hour < 12) {
2830 hour += 12;
2831 }
2832 if (!isPm && hour === 12) {
2833 hour = 0;
2834 }
2835 return hour;
2836 } else {
2837 // this is not supposed to happen
2838 return hour;
2839 }
2840 }
2841
2842 // date from string and array of format strings
2843 function configFromStringAndArray(config) {
2844 var tempConfig,
2845 bestMoment,
2846 scoreToBeat,
2847 i,
2848 currentScore,
2849 validFormatFound,
2850 bestFormatIsValid = false;
2851
2852 if (config._f.length === 0) {
2853 getParsingFlags(config).invalidFormat = true;
2854 config._d = new Date(NaN);
2855 return;
2856 }
2857
2858 for (i = 0; i < config._f.length; i++) {
2859 currentScore = 0;
2860 validFormatFound = false;
2861 tempConfig = copyConfig({}, config);
2862 if (config._useUTC != null) {
2863 tempConfig._useUTC = config._useUTC;
2864 }
2865 tempConfig._f = config._f[i];
2866 configFromStringAndFormat(tempConfig);
2867
2868 if (isValid(tempConfig)) {
2869 validFormatFound = true;
2870 }
2871
2872 // if there is any input that was not parsed add a penalty for that format
2873 currentScore += getParsingFlags(tempConfig).charsLeftOver;
2874
2875 //or tokens
2876 currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
2877
2878 getParsingFlags(tempConfig).score = currentScore;
2879
2880 if (!bestFormatIsValid) {
2881 if (
2882 scoreToBeat == null ||
2883 currentScore < scoreToBeat ||
2884 validFormatFound
2885 ) {
2886 scoreToBeat = currentScore;
2887 bestMoment = tempConfig;
2888 if (validFormatFound) {
2889 bestFormatIsValid = true;
2890 }
2891 }
2892 } else {
2893 if (currentScore < scoreToBeat) {
2894 scoreToBeat = currentScore;
2895 bestMoment = tempConfig;
2896 }
2897 }
2898 }
2899
2900 extend(config, bestMoment || tempConfig);
2901 }
2902
2903 function configFromObject(config) {
2904 if (config._d) {
2905 return;
2906 }
2907
2908 var i = normalizeObjectUnits(config._i),
2909 dayOrDate = i.day === undefined ? i.date : i.day;
2910 config._a = map(
2911 [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],
2912 function (obj) {
2913 return obj && parseInt(obj, 10);
2914 }
2915 );
2916
2917 configFromArray(config);
2918 }
2919
2920 function createFromConfig(config) {
2921 var res = new Moment(checkOverflow(prepareConfig(config)));
2922 if (res._nextDay) {
2923 // Adding is smart enough around DST
2924 res.add(1, 'd');
2925 res._nextDay = undefined;
2926 }
2927
2928 return res;
2929 }
2930
2931 function prepareConfig(config) {
2932 var input = config._i,
2933 format = config._f;
2934
2935 config._locale = config._locale || getLocale(config._l);
2936
2937 if (input === null || (format === undefined && input === '')) {
2938 return createInvalid({ nullInput: true });
2939 }
2940
2941 if (typeof input === 'string') {
2942 config._i = input = config._locale.preparse(input);
2943 }
2944
2945 if (isMoment(input)) {
2946 return new Moment(checkOverflow(input));
2947 } else if (isDate(input)) {
2948 config._d = input;
2949 } else if (isArray(format)) {
2950 configFromStringAndArray(config);
2951 } else if (format) {
2952 configFromStringAndFormat(config);
2953 } else {
2954 configFromInput(config);
2955 }
2956
2957 if (!isValid(config)) {
2958 config._d = null;
2959 }
2960
2961 return config;
2962 }
2963
2964 function configFromInput(config) {
2965 var input = config._i;
2966 if (isUndefined(input)) {
2967 config._d = new Date(hooks.now());
2968 } else if (isDate(input)) {
2969 config._d = new Date(input.valueOf());
2970 } else if (typeof input === 'string') {
2971 configFromString(config);
2972 } else if (isArray(input)) {
2973 config._a = map(input.slice(0), function (obj) {
2974 return parseInt(obj, 10);
2975 });
2976 configFromArray(config);
2977 } else if (isObject(input)) {
2978 configFromObject(config);
2979 } else if (isNumber(input)) {
2980 // from milliseconds
2981 config._d = new Date(input);
2982 } else {
2983 hooks.createFromInputFallback(config);
2984 }
2985 }
2986
2987 function createLocalOrUTC(input, format, locale, strict, isUTC) {
2988 var c = {};
2989
2990 if (format === true || format === false) {
2991 strict = format;
2992 format = undefined;
2993 }
2994
2995 if (locale === true || locale === false) {
2996 strict = locale;
2997 locale = undefined;
2998 }
2999
3000 if (
3001 (isObject(input) && isObjectEmpty(input)) ||
3002 (isArray(input) && input.length === 0)
3003 ) {
3004 input = undefined;
3005 }
3006 // object construction must be done this way.
3007 // https://github.com/moment/moment/issues/1423
3008 c._isAMomentObject = true;
3009 c._useUTC = c._isUTC = isUTC;
3010 c._l = locale;
3011 c._i = input;
3012 c._f = format;
3013 c._strict = strict;
3014
3015 return createFromConfig(c);
3016 }
3017
3018 function createLocal(input, format, locale, strict) {
3019 return createLocalOrUTC(input, format, locale, strict, false);
3020 }
3021
3022 var prototypeMin = deprecate(
3023 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
3024 function () {
3025 var other = createLocal.apply(null, arguments);
3026 if (this.isValid() && other.isValid()) {
3027 return other < this ? this : other;
3028 } else {
3029 return createInvalid();
3030 }
3031 }
3032 ),
3033 prototypeMax = deprecate(
3034 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
3035 function () {
3036 var other = createLocal.apply(null, arguments);
3037 if (this.isValid() && other.isValid()) {
3038 return other > this ? this : other;
3039 } else {
3040 return createInvalid();
3041 }
3042 }
3043 );
3044
3045 // Pick a moment m from moments so that m[fn](other) is true for all
3046 // other. This relies on the function fn to be transitive.
3047 //
3048 // moments should either be an array of moment objects or an array, whose
3049 // first element is an array of moment objects.
3050 function pickBy(fn, moments) {
3051 var res, i;
3052 if (moments.length === 1 && isArray(moments[0])) {
3053 moments = moments[0];
3054 }
3055 if (!moments.length) {
3056 return createLocal();
3057 }
3058 res = moments[0];
3059 for (i = 1; i < moments.length; ++i) {
3060 if (!moments[i].isValid() || moments[i][fn](res)) {
3061 res = moments[i];
3062 }
3063 }
3064 return res;
3065 }
3066
3067 // TODO: Use [].sort instead?
3068 function min() {
3069 var args = [].slice.call(arguments, 0);
3070
3071 return pickBy('isBefore', args);
3072 }
3073
3074 function max() {
3075 var args = [].slice.call(arguments, 0);
3076
3077 return pickBy('isAfter', args);
3078 }
3079
3080 var now = function () {
3081 return Date.now ? Date.now() : +new Date();
3082 };
3083
3084 var ordering = [
3085 'year',
3086 'quarter',
3087 'month',
3088 'week',
3089 'day',
3090 'hour',
3091 'minute',
3092 'second',
3093 'millisecond',
3094 ];
3095
3096 function isDurationValid(m) {
3097 var key,
3098 unitHasDecimal = false,
3099 i;
3100 for (key in m) {
3101 if (
3102 hasOwnProp(m, key) &&
3103 !(
3104 indexOf.call(ordering, key) !== -1 &&
3105 (m[key] == null || !isNaN(m[key]))
3106 )
3107 ) {
3108 return false;
3109 }
3110 }
3111
3112 for (i = 0; i < ordering.length; ++i) {
3113 if (m[ordering[i]]) {
3114 if (unitHasDecimal) {
3115 return false; // only allow non-integers for smallest unit
3116 }
3117 if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
3118 unitHasDecimal = true;
3119 }
3120 }
3121 }
3122
3123 return true;
3124 }
3125
3126 function isValid$1() {
3127 return this._isValid;
3128 }
3129
3130 function createInvalid$1() {
3131 return createDuration(NaN);
3132 }
3133
3134 function Duration(duration) {
3135 var normalizedInput = normalizeObjectUnits(duration),
3136 years = normalizedInput.year || 0,
3137 quarters = normalizedInput.quarter || 0,
3138 months = normalizedInput.month || 0,
3139 weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
3140 days = normalizedInput.day || 0,
3141 hours = normalizedInput.hour || 0,
3142 minutes = normalizedInput.minute || 0,
3143 seconds = normalizedInput.second || 0,
3144 milliseconds = normalizedInput.millisecond || 0;
3145
3146 this._isValid = isDurationValid(normalizedInput);
3147
3148 // representation for dateAddRemove
3149 this._milliseconds =
3150 +milliseconds +
3151 seconds * 1e3 + // 1000
3152 minutes * 6e4 + // 1000 * 60
3153 hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
3154 // Because of dateAddRemove treats 24 hours as different from a
3155 // day when working around DST, we need to store them separately
3156 this._days = +days + weeks * 7;
3157 // It is impossible to translate months into days without knowing
3158 // which months you are are talking about, so we have to store
3159 // it separately.
3160 this._months = +months + quarters * 3 + years * 12;
3161
3162 this._data = {};
3163
3164 this._locale = getLocale();
3165
3166 this._bubble();
3167 }
3168
3169 function isDuration(obj) {
3170 return obj instanceof Duration;
3171 }
3172
3173 function absRound(number) {
3174 if (number < 0) {
3175 return Math.round(-1 * number) * -1;
3176 } else {
3177 return Math.round(number);
3178 }
3179 }
3180
3181 // compare two arrays, return the number of differences
3182 function compareArrays(array1, array2, dontConvert) {
3183 var len = Math.min(array1.length, array2.length),
3184 lengthDiff = Math.abs(array1.length - array2.length),
3185 diffs = 0,
3186 i;
3187 for (i = 0; i < len; i++) {
3188 if (
3189 (dontConvert && array1[i] !== array2[i]) ||
3190 (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))
3191 ) {
3192 diffs++;
3193 }
3194 }
3195 return diffs + lengthDiff;
3196 }
3197
3198 // FORMATTING
3199
3200 function offset(token, separator) {
3201 addFormatToken(token, 0, 0, function () {
3202 var offset = this.utcOffset(),
3203 sign = '+';
3204 if (offset < 0) {
3205 offset = -offset;
3206 sign = '-';
3207 }
3208 return (
3209 sign +
3210 zeroFill(~~(offset / 60), 2) +
3211 separator +
3212 zeroFill(~~offset % 60, 2)
3213 );
3214 });
3215 }
3216
3217 offset('Z', ':');
3218 offset('ZZ', '');
3219
3220 // PARSING
3221
3222 addRegexToken('Z', matchShortOffset);
3223 addRegexToken('ZZ', matchShortOffset);
3224 addParseToken(['Z', 'ZZ'], function (input, array, config) {
3225 config._useUTC = true;
3226 config._tzm = offsetFromString(matchShortOffset, input);
3227 });
3228
3229 // HELPERS
3230
3231 // timezone chunker
3232 // '+10:00' > ['10', '00']
3233 // '-1530' > ['-15', '30']
3234 var chunkOffset = /([\+\-]|\d\d)/gi;
3235
3236 function offsetFromString(matcher, string) {
3237 var matches = (string || '').match(matcher),
3238 chunk,
3239 parts,
3240 minutes;
3241
3242 if (matches === null) {
3243 return null;
3244 }
3245
3246 chunk = matches[matches.length - 1] || [];
3247 parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];
3248 minutes = +(parts[1] * 60) + toInt(parts[2]);
3249
3250 return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;
3251 }
3252
3253 // Return a moment from input, that is local/utc/zone equivalent to model.
3254 function cloneWithOffset(input, model) {
3255 var res, diff;
3256 if (model._isUTC) {
3257 res = model.clone();
3258 diff =
3259 (isMoment(input) || isDate(input)
3260 ? input.valueOf()
3261 : createLocal(input).valueOf()) - res.valueOf();
3262 // Use low-level api, because this fn is low-level api.
3263 res._d.setTime(res._d.valueOf() + diff);
3264 hooks.updateOffset(res, false);
3265 return res;
3266 } else {
3267 return createLocal(input).local();
3268 }
3269 }
3270
3271 function getDateOffset(m) {
3272 // On Firefox.24 Date#getTimezoneOffset returns a floating point.
3273 // https://github.com/moment/moment/pull/1871
3274 return -Math.round(m._d.getTimezoneOffset());
3275 }
3276
3277 // HOOKS
3278
3279 // This function will be called whenever a moment is mutated.
3280 // It is intended to keep the offset in sync with the timezone.
3281 hooks.updateOffset = function () {};
3282
3283 // MOMENTS
3284
3285 // keepLocalTime = true means only change the timezone, without
3286 // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
3287 // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
3288 // +0200, so we adjust the time as needed, to be valid.
3289 //
3290 // Keeping the time actually adds/subtracts (one hour)
3291 // from the actual represented time. That is why we call updateOffset
3292 // a second time. In case it wants us to change the offset again
3293 // _changeInProgress == true case, then we have to adjust, because
3294 // there is no such time in the given timezone.
3295 function getSetOffset(input, keepLocalTime, keepMinutes) {
3296 var offset = this._offset || 0,
3297 localAdjust;
3298 if (!this.isValid()) {
3299 return input != null ? this : NaN;
3300 }
3301 if (input != null) {
3302 if (typeof input === 'string') {
3303 input = offsetFromString(matchShortOffset, input);
3304 if (input === null) {
3305 return this;
3306 }
3307 } else if (Math.abs(input) < 16 && !keepMinutes) {
3308 input = input * 60;
3309 }
3310 if (!this._isUTC && keepLocalTime) {
3311 localAdjust = getDateOffset(this);
3312 }
3313 this._offset = input;
3314 this._isUTC = true;
3315 if (localAdjust != null) {
3316 this.add(localAdjust, 'm');
3317 }
3318 if (offset !== input) {
3319 if (!keepLocalTime || this._changeInProgress) {
3320 addSubtract(
3321 this,
3322 createDuration(input - offset, 'm'),
3323 1,
3324 false
3325 );
3326 } else if (!this._changeInProgress) {
3327 this._changeInProgress = true;
3328 hooks.updateOffset(this, true);
3329 this._changeInProgress = null;
3330 }
3331 }
3332 return this;
3333 } else {
3334 return this._isUTC ? offset : getDateOffset(this);
3335 }
3336 }
3337
3338 function getSetZone(input, keepLocalTime) {
3339 if (input != null) {
3340 if (typeof input !== 'string') {
3341 input = -input;
3342 }
3343
3344 this.utcOffset(input, keepLocalTime);
3345
3346 return this;
3347 } else {
3348 return -this.utcOffset();
3349 }
3350 }
3351
3352 function setOffsetToUTC(keepLocalTime) {
3353 return this.utcOffset(0, keepLocalTime);
3354 }
3355
3356 function setOffsetToLocal(keepLocalTime) {
3357 if (this._isUTC) {
3358 this.utcOffset(0, keepLocalTime);
3359 this._isUTC = false;
3360
3361 if (keepLocalTime) {
3362 this.subtract(getDateOffset(this), 'm');
3363 }
3364 }
3365 return this;
3366 }
3367
3368 function setOffsetToParsedOffset() {
3369 if (this._tzm != null) {
3370 this.utcOffset(this._tzm, false, true);
3371 } else if (typeof this._i === 'string') {
3372 var tZone = offsetFromString(matchOffset, this._i);
3373 if (tZone != null) {
3374 this.utcOffset(tZone);
3375 } else {
3376 this.utcOffset(0, true);
3377 }
3378 }
3379 return this;
3380 }
3381
3382 function hasAlignedHourOffset(input) {
3383 if (!this.isValid()) {
3384 return false;
3385 }
3386 input = input ? createLocal(input).utcOffset() : 0;
3387
3388 return (this.utcOffset() - input) % 60 === 0;
3389 }
3390
3391 function isDaylightSavingTime() {
3392 return (
3393 this.utcOffset() > this.clone().month(0).utcOffset() ||
3394 this.utcOffset() > this.clone().month(5).utcOffset()
3395 );
3396 }
3397
3398 function isDaylightSavingTimeShifted() {
3399 if (!isUndefined(this._isDSTShifted)) {
3400 return this._isDSTShifted;
3401 }
3402
3403 var c = {},
3404 other;
3405
3406 copyConfig(c, this);
3407 c = prepareConfig(c);
3408
3409 if (c._a) {
3410 other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
3411 this._isDSTShifted =
3412 this.isValid() && compareArrays(c._a, other.toArray()) > 0;
3413 } else {
3414 this._isDSTShifted = false;
3415 }
3416
3417 return this._isDSTShifted;
3418 }
3419
3420 function isLocal() {
3421 return this.isValid() ? !this._isUTC : false;
3422 }
3423
3424 function isUtcOffset() {
3425 return this.isValid() ? this._isUTC : false;
3426 }
3427
3428 function isUtc() {
3429 return this.isValid() ? this._isUTC && this._offset === 0 : false;
3430 }
3431
3432 // ASP.NET json date format regex
3433 var aspNetRegex = /^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,
3434 // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
3435 // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
3436 // and further modified to allow for strings containing both week and day
3437 isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
3438
3439 function createDuration(input, key) {
3440 var duration = input,
3441 // matching against regexp is expensive, do it on demand
3442 match = null,
3443 sign,
3444 ret,
3445 diffRes;
3446
3447 if (isDuration(input)) {
3448 duration = {
3449 ms: input._milliseconds,
3450 d: input._days,
3451 M: input._months,
3452 };
3453 } else if (isNumber(input) || !isNaN(+input)) {
3454 duration = {};
3455 if (key) {
3456 duration[key] = +input;
3457 } else {
3458 duration.milliseconds = +input;
3459 }
3460 } else if ((match = aspNetRegex.exec(input))) {
3461 sign = match[1] === '-' ? -1 : 1;
3462 duration = {
3463 y: 0,
3464 d: toInt(match[DATE]) * sign,
3465 h: toInt(match[HOUR]) * sign,
3466 m: toInt(match[MINUTE]) * sign,
3467 s: toInt(match[SECOND]) * sign,
3468 ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match
3469 };
3470 } else if ((match = isoRegex.exec(input))) {
3471 sign = match[1] === '-' ? -1 : 1;
3472 duration = {
3473 y: parseIso(match[2], sign),
3474 M: parseIso(match[3], sign),
3475 w: parseIso(match[4], sign),
3476 d: parseIso(match[5], sign),
3477 h: parseIso(match[6], sign),
3478 m: parseIso(match[7], sign),
3479 s: parseIso(match[8], sign),
3480 };
3481 } else if (duration == null) {
3482 // checks for null or undefined
3483 duration = {};
3484 } else if (
3485 typeof duration === 'object' &&
3486 ('from' in duration || 'to' in duration)
3487 ) {
3488 diffRes = momentsDifference(
3489 createLocal(duration.from),
3490 createLocal(duration.to)
3491 );
3492
3493 duration = {};
3494 duration.ms = diffRes.milliseconds;
3495 duration.M = diffRes.months;
3496 }
3497
3498 ret = new Duration(duration);
3499
3500 if (isDuration(input) && hasOwnProp(input, '_locale')) {
3501 ret._locale = input._locale;
3502 }
3503
3504 if (isDuration(input) && hasOwnProp(input, '_isValid')) {
3505 ret._isValid = input._isValid;
3506 }
3507
3508 return ret;
3509 }
3510
3511 createDuration.fn = Duration.prototype;
3512 createDuration.invalid = createInvalid$1;
3513
3514 function parseIso(inp, sign) {
3515 // We'd normally use ~~inp for this, but unfortunately it also
3516 // converts floats to ints.
3517 // inp may be undefined, so careful calling replace on it.
3518 var res = inp && parseFloat(inp.replace(',', '.'));
3519 // apply sign while we're at it
3520 return (isNaN(res) ? 0 : res) * sign;
3521 }
3522
3523 function positiveMomentsDifference(base, other) {
3524 var res = {};
3525
3526 res.months =
3527 other.month() - base.month() + (other.year() - base.year()) * 12;
3528 if (base.clone().add(res.months, 'M').isAfter(other)) {
3529 --res.months;
3530 }
3531
3532 res.milliseconds = +other - +base.clone().add(res.months, 'M');
3533
3534 return res;
3535 }
3536
3537 function momentsDifference(base, other) {
3538 var res;
3539 if (!(base.isValid() && other.isValid())) {
3540 return { milliseconds: 0, months: 0 };
3541 }
3542
3543 other = cloneWithOffset(other, base);
3544 if (base.isBefore(other)) {
3545 res = positiveMomentsDifference(base, other);
3546 } else {
3547 res = positiveMomentsDifference(other, base);
3548 res.milliseconds = -res.milliseconds;
3549 res.months = -res.months;
3550 }
3551
3552 return res;
3553 }
3554
3555 // TODO: remove 'name' arg after deprecation is removed
3556 function createAdder(direction, name) {
3557 return function (val, period) {
3558 var dur, tmp;
3559 //invert the arguments, but complain about it
3560 if (period !== null && !isNaN(+period)) {
3561 deprecateSimple(
3562 name,
3563 'moment().' +
3564 name +
3565 '(period, number) is deprecated. Please use moment().' +
3566 name +
3567 '(number, period). ' +
3568 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'
3569 );
3570 tmp = val;
3571 val = period;
3572 period = tmp;
3573 }
3574
3575 dur = createDuration(val, period);
3576 addSubtract(this, dur, direction);
3577 return this;
3578 };
3579 }
3580
3581 function addSubtract(mom, duration, isAdding, updateOffset) {
3582 var milliseconds = duration._milliseconds,
3583 days = absRound(duration._days),
3584 months = absRound(duration._months);
3585
3586 if (!mom.isValid()) {
3587 // No op
3588 return;
3589 }
3590
3591 updateOffset = updateOffset == null ? true : updateOffset;
3592
3593 if (months) {
3594 setMonth(mom, get(mom, 'Month') + months * isAdding);
3595 }
3596 if (days) {
3597 set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
3598 }
3599 if (milliseconds) {
3600 mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
3601 }
3602 if (updateOffset) {
3603 hooks.updateOffset(mom, days || months);
3604 }
3605 }
3606
3607 var add = createAdder(1, 'add'),
3608 subtract = createAdder(-1, 'subtract');
3609
3610 function isString(input) {
3611 return typeof input === 'string' || input instanceof String;
3612 }
3613
3614 // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined
3615 function isMomentInput(input) {
3616 return (
3617 isMoment(input) ||
3618 isDate(input) ||
3619 isString(input) ||
3620 isNumber(input) ||
3621 isNumberOrStringArray(input) ||
3622 isMomentInputObject(input) ||
3623 input === null ||
3624 input === undefined
3625 );
3626 }
3627
3628 function isMomentInputObject(input) {
3629 var objectTest = isObject(input) && !isObjectEmpty(input),
3630 propertyTest = false,
3631 properties = [
3632 'years',
3633 'year',
3634 'y',
3635 'months',
3636 'month',
3637 'M',
3638 'days',
3639 'day',
3640 'd',
3641 'dates',
3642 'date',
3643 'D',
3644 'hours',
3645 'hour',
3646 'h',
3647 'minutes',
3648 'minute',
3649 'm',
3650 'seconds',
3651 'second',
3652 's',
3653 'milliseconds',
3654 'millisecond',
3655 'ms',
3656 ],
3657 i,
3658 property;
3659
3660 for (i = 0; i < properties.length; i += 1) {
3661 property = properties[i];
3662 propertyTest = propertyTest || hasOwnProp(input, property);
3663 }
3664
3665 return objectTest && propertyTest;
3666 }
3667
3668 function isNumberOrStringArray(input) {
3669 var arrayTest = isArray(input),
3670 dataTypeTest = false;
3671 if (arrayTest) {
3672 dataTypeTest =
3673 input.filter(function (item) {
3674 return !isNumber(item) && isString(input);
3675 }).length === 0;
3676 }
3677 return arrayTest && dataTypeTest;
3678 }
3679
3680 function isCalendarSpec(input) {
3681 var objectTest = isObject(input) && !isObjectEmpty(input),
3682 propertyTest = false,
3683 properties = [
3684 'sameDay',
3685 'nextDay',
3686 'lastDay',
3687 'nextWeek',
3688 'lastWeek',
3689 'sameElse',
3690 ],
3691 i,
3692 property;
3693
3694 for (i = 0; i < properties.length; i += 1) {
3695 property = properties[i];
3696 propertyTest = propertyTest || hasOwnProp(input, property);
3697 }
3698
3699 return objectTest && propertyTest;
3700 }
3701
3702 function getCalendarFormat(myMoment, now) {
3703 var diff = myMoment.diff(now, 'days', true);
3704 return diff < -6
3705 ? 'sameElse'
3706 : diff < -1
3707 ? 'lastWeek'
3708 : diff < 0
3709 ? 'lastDay'
3710 : diff < 1
3711 ? 'sameDay'
3712 : diff < 2
3713 ? 'nextDay'
3714 : diff < 7
3715 ? 'nextWeek'
3716 : 'sameElse';
3717 }
3718
3719 function calendar$1(time, formats) {
3720 // Support for single parameter, formats only overload to the calendar function
3721 if (arguments.length === 1) {
3722 if (!arguments[0]) {
3723 time = undefined;
3724 formats = undefined;
3725 } else if (isMomentInput(arguments[0])) {
3726 time = arguments[0];
3727 formats = undefined;
3728 } else if (isCalendarSpec(arguments[0])) {
3729 formats = arguments[0];
3730 time = undefined;
3731 }
3732 }
3733 // We want to compare the start of today, vs this.
3734 // Getting start-of-today depends on whether we're local/utc/offset or not.
3735 var now = time || createLocal(),
3736 sod = cloneWithOffset(now, this).startOf('day'),
3737 format = hooks.calendarFormat(this, sod) || 'sameElse',
3738 output =
3739 formats &&
3740 (isFunction(formats[format])
3741 ? formats[format].call(this, now)
3742 : formats[format]);
3743
3744 return this.format(
3745 output || this.localeData().calendar(format, this, createLocal(now))
3746 );
3747 }
3748
3749 function clone() {
3750 return new Moment(this);
3751 }
3752
3753 function isAfter(input, units) {
3754 var localInput = isMoment(input) ? input : createLocal(input);
3755 if (!(this.isValid() && localInput.isValid())) {
3756 return false;
3757 }
3758 units = normalizeUnits(units) || 'millisecond';
3759 if (units === 'millisecond') {
3760 return this.valueOf() > localInput.valueOf();
3761 } else {
3762 return localInput.valueOf() < this.clone().startOf(units).valueOf();
3763 }
3764 }
3765
3766 function isBefore(input, units) {
3767 var localInput = isMoment(input) ? input : createLocal(input);
3768 if (!(this.isValid() && localInput.isValid())) {
3769 return false;
3770 }
3771 units = normalizeUnits(units) || 'millisecond';
3772 if (units === 'millisecond') {
3773 return this.valueOf() < localInput.valueOf();
3774 } else {
3775 return this.clone().endOf(units).valueOf() < localInput.valueOf();
3776 }
3777 }
3778
3779 function isBetween(from, to, units, inclusivity) {
3780 var localFrom = isMoment(from) ? from : createLocal(from),
3781 localTo = isMoment(to) ? to : createLocal(to);
3782 if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
3783 return false;
3784 }
3785 inclusivity = inclusivity || '()';
3786 return (
3787 (inclusivity[0] === '('
3788 ? this.isAfter(localFrom, units)
3789 : !this.isBefore(localFrom, units)) &&
3790 (inclusivity[1] === ')'
3791 ? this.isBefore(localTo, units)
3792 : !this.isAfter(localTo, units))
3793 );
3794 }
3795
3796 function isSame(input, units) {
3797 var localInput = isMoment(input) ? input : createLocal(input),
3798 inputMs;
3799 if (!(this.isValid() && localInput.isValid())) {
3800 return false;
3801 }
3802 units = normalizeUnits(units) || 'millisecond';
3803 if (units === 'millisecond') {
3804 return this.valueOf() === localInput.valueOf();
3805 } else {
3806 inputMs = localInput.valueOf();
3807 return (
3808 this.clone().startOf(units).valueOf() <= inputMs &&
3809 inputMs <= this.clone().endOf(units).valueOf()
3810 );
3811 }
3812 }
3813
3814 function isSameOrAfter(input, units) {
3815 return this.isSame(input, units) || this.isAfter(input, units);
3816 }
3817
3818 function isSameOrBefore(input, units) {
3819 return this.isSame(input, units) || this.isBefore(input, units);
3820 }
3821
3822 function diff(input, units, asFloat) {
3823 var that, zoneDelta, output;
3824
3825 if (!this.isValid()) {
3826 return NaN;
3827 }
3828
3829 that = cloneWithOffset(input, this);
3830
3831 if (!that.isValid()) {
3832 return NaN;
3833 }
3834
3835 zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
3836
3837 units = normalizeUnits(units);
3838
3839 switch (units) {
3840 case 'year':
3841 output = monthDiff(this, that) / 12;
3842 break;
3843 case 'month':
3844 output = monthDiff(this, that);
3845 break;
3846 case 'quarter':
3847 output = monthDiff(this, that) / 3;
3848 break;
3849 case 'second':
3850 output = (this - that) / 1e3;
3851 break; // 1000
3852 case 'minute':
3853 output = (this - that) / 6e4;
3854 break; // 1000 * 60
3855 case 'hour':
3856 output = (this - that) / 36e5;
3857 break; // 1000 * 60 * 60
3858 case 'day':
3859 output = (this - that - zoneDelta) / 864e5;
3860 break; // 1000 * 60 * 60 * 24, negate dst
3861 case 'week':
3862 output = (this - that - zoneDelta) / 6048e5;
3863 break; // 1000 * 60 * 60 * 24 * 7, negate dst
3864 default:
3865 output = this - that;
3866 }
3867
3868 return asFloat ? output : absFloor(output);
3869 }
3870
3871 function monthDiff(a, b) {
3872 if (a.date() < b.date()) {
3873 // end-of-month calculations work correct when the start month has more
3874 // days than the end month.
3875 return -monthDiff(b, a);
3876 }
3877 // difference in months
3878 var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),
3879 // b is in (anchor - 1 month, anchor + 1 month)
3880 anchor = a.clone().add(wholeMonthDiff, 'months'),
3881 anchor2,
3882 adjust;
3883
3884 if (b - anchor < 0) {
3885 anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
3886 // linear across the month
3887 adjust = (b - anchor) / (anchor - anchor2);
3888 } else {
3889 anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
3890 // linear across the month
3891 adjust = (b - anchor) / (anchor2 - anchor);
3892 }
3893
3894 //check for negative zero, return zero if negative zero
3895 return -(wholeMonthDiff + adjust) || 0;
3896 }
3897
3898 hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
3899 hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
3900
3901 function toString() {
3902 return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
3903 }
3904
3905 function toISOString(keepOffset) {
3906 if (!this.isValid()) {
3907 return null;
3908 }
3909 var utc = keepOffset !== true,
3910 m = utc ? this.clone().utc() : this;
3911 if (m.year() < 0 || m.year() > 9999) {
3912 return formatMoment(
3913 m,
3914 utc
3915 ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'
3916 : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'
3917 );
3918 }
3919 if (isFunction(Date.prototype.toISOString)) {
3920 // native implementation is ~50x faster, use it when we can
3921 if (utc) {
3922 return this.toDate().toISOString();
3923 } else {
3924 return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)
3925 .toISOString()
3926 .replace('Z', formatMoment(m, 'Z'));
3927 }
3928 }
3929 return formatMoment(
3930 m,
3931 utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'
3932 );
3933 }
3934
3935 /**
3936 * Return a human readable representation of a moment that can
3937 * also be evaluated to get a new moment which is the same
3938 *
3939 * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
3940 */
3941 function inspect() {
3942 if (!this.isValid()) {
3943 return 'moment.invalid(/* ' + this._i + ' */)';
3944 }
3945 var func = 'moment',
3946 zone = '',
3947 prefix,
3948 year,
3949 datetime,
3950 suffix;
3951 if (!this.isLocal()) {
3952 func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
3953 zone = 'Z';
3954 }
3955 prefix = '[' + func + '("]';
3956 year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';
3957 datetime = '-MM-DD[T]HH:mm:ss.SSS';
3958 suffix = zone + '[")]';
3959
3960 return this.format(prefix + year + datetime + suffix);
3961 }
3962
3963 function format(inputString) {
3964 if (!inputString) {
3965 inputString = this.isUtc()
3966 ? hooks.defaultFormatUtc
3967 : hooks.defaultFormat;
3968 }
3969 var output = formatMoment(this, inputString);
3970 return this.localeData().postformat(output);
3971 }
3972
3973 function from(time, withoutSuffix) {
3974 if (
3975 this.isValid() &&
3976 ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
3977 ) {
3978 return createDuration({ to: this, from: time })
3979 .locale(this.locale())
3980 .humanize(!withoutSuffix);
3981 } else {
3982 return this.localeData().invalidDate();
3983 }
3984 }
3985
3986 function fromNow(withoutSuffix) {
3987 return this.from(createLocal(), withoutSuffix);
3988 }
3989
3990 function to(time, withoutSuffix) {
3991 if (
3992 this.isValid() &&
3993 ((isMoment(time) && time.isValid()) || createLocal(time).isValid())
3994 ) {
3995 return createDuration({ from: this, to: time })
3996 .locale(this.locale())
3997 .humanize(!withoutSuffix);
3998 } else {
3999 return this.localeData().invalidDate();
4000 }
4001 }
4002
4003 function toNow(withoutSuffix) {
4004 return this.to(createLocal(), withoutSuffix);
4005 }
4006
4007 // If passed a locale key, it will set the locale for this
4008 // instance. Otherwise, it will return the locale configuration
4009 // variables for this instance.
4010 function locale(key) {
4011 var newLocaleData;
4012
4013 if (key === undefined) {
4014 return this._locale._abbr;
4015 } else {
4016 newLocaleData = getLocale(key);
4017 if (newLocaleData != null) {
4018 this._locale = newLocaleData;
4019 }
4020 return this;
4021 }
4022 }
4023
4024 var lang = deprecate(
4025 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
4026 function (key) {
4027 if (key === undefined) {
4028 return this.localeData();
4029 } else {
4030 return this.locale(key);
4031 }
4032 }
4033 );
4034
4035 function localeData() {
4036 return this._locale;
4037 }
4038
4039 var MS_PER_SECOND = 1000,
4040 MS_PER_MINUTE = 60 * MS_PER_SECOND,
4041 MS_PER_HOUR = 60 * MS_PER_MINUTE,
4042 MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
4043
4044 // actual modulo - handles negative numbers (for dates before 1970):
4045 function mod$1(dividend, divisor) {
4046 return ((dividend % divisor) + divisor) % divisor;
4047 }
4048
4049 function localStartOfDate(y, m, d) {
4050 // the date constructor remaps years 0-99 to 1900-1999
4051 if (y < 100 && y >= 0) {
4052 // preserve leap years using a full 400 year cycle, then reset
4053 return new Date(y + 400, m, d) - MS_PER_400_YEARS;
4054 } else {
4055 return new Date(y, m, d).valueOf();
4056 }
4057 }
4058
4059 function utcStartOfDate(y, m, d) {
4060 // Date.UTC remaps years 0-99 to 1900-1999
4061 if (y < 100 && y >= 0) {
4062 // preserve leap years using a full 400 year cycle, then reset
4063 return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
4064 } else {
4065 return Date.UTC(y, m, d);
4066 }
4067 }
4068
4069 function startOf(units) {
4070 var time, startOfDate;
4071 units = normalizeUnits(units);
4072 if (units === undefined || units === 'millisecond' || !this.isValid()) {
4073 return this;
4074 }
4075
4076 startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
4077
4078 switch (units) {
4079 case 'year':
4080 time = startOfDate(this.year(), 0, 1);
4081 break;
4082 case 'quarter':
4083 time = startOfDate(
4084 this.year(),
4085 this.month() - (this.month() % 3),
4086 1
4087 );
4088 break;
4089 case 'month':
4090 time = startOfDate(this.year(), this.month(), 1);
4091 break;
4092 case 'week':
4093 time = startOfDate(
4094 this.year(),
4095 this.month(),
4096 this.date() - this.weekday()
4097 );
4098 break;
4099 case 'isoWeek':
4100 time = startOfDate(
4101 this.year(),
4102 this.month(),
4103 this.date() - (this.isoWeekday() - 1)
4104 );
4105 break;
4106 case 'day':
4107 case 'date':
4108 time = startOfDate(this.year(), this.month(), this.date());
4109 break;
4110 case 'hour':
4111 time = this._d.valueOf();
4112 time -= mod$1(
4113 time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
4114 MS_PER_HOUR
4115 );
4116 break;
4117 case 'minute':
4118 time = this._d.valueOf();
4119 time -= mod$1(time, MS_PER_MINUTE);
4120 break;
4121 case 'second':
4122 time = this._d.valueOf();
4123 time -= mod$1(time, MS_PER_SECOND);
4124 break;
4125 }
4126
4127 this._d.setTime(time);
4128 hooks.updateOffset(this, true);
4129 return this;
4130 }
4131
4132 function endOf(units) {
4133 var time, startOfDate;
4134 units = normalizeUnits(units);
4135 if (units === undefined || units === 'millisecond' || !this.isValid()) {
4136 return this;
4137 }
4138
4139 startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
4140
4141 switch (units) {
4142 case 'year':
4143 time = startOfDate(this.year() + 1, 0, 1) - 1;
4144 break;
4145 case 'quarter':
4146 time =
4147 startOfDate(
4148 this.year(),
4149 this.month() - (this.month() % 3) + 3,
4150 1
4151 ) - 1;
4152 break;
4153 case 'month':
4154 time = startOfDate(this.year(), this.month() + 1, 1) - 1;
4155 break;
4156 case 'week':
4157 time =
4158 startOfDate(
4159 this.year(),
4160 this.month(),
4161 this.date() - this.weekday() + 7
4162 ) - 1;
4163 break;
4164 case 'isoWeek':
4165 time =
4166 startOfDate(
4167 this.year(),
4168 this.month(),
4169 this.date() - (this.isoWeekday() - 1) + 7
4170 ) - 1;
4171 break;
4172 case 'day':
4173 case 'date':
4174 time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
4175 break;
4176 case 'hour':
4177 time = this._d.valueOf();
4178 time +=
4179 MS_PER_HOUR -
4180 mod$1(
4181 time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),
4182 MS_PER_HOUR
4183 ) -
4184 1;
4185 break;
4186 case 'minute':
4187 time = this._d.valueOf();
4188 time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
4189 break;
4190 case 'second':
4191 time = this._d.valueOf();
4192 time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
4193 break;
4194 }
4195
4196 this._d.setTime(time);
4197 hooks.updateOffset(this, true);
4198 return this;
4199 }
4200
4201 function valueOf() {
4202 return this._d.valueOf() - (this._offset || 0) * 60000;
4203 }
4204
4205 function unix() {
4206 return Math.floor(this.valueOf() / 1000);
4207 }
4208
4209 function toDate() {
4210 return new Date(this.valueOf());
4211 }
4212
4213 function toArray() {
4214 var m = this;
4215 return [
4216 m.year(),
4217 m.month(),
4218 m.date(),
4219 m.hour(),
4220 m.minute(),
4221 m.second(),
4222 m.millisecond(),
4223 ];
4224 }
4225
4226 function toObject() {
4227 var m = this;
4228 return {
4229 years: m.year(),
4230 months: m.month(),
4231 date: m.date(),
4232 hours: m.hours(),
4233 minutes: m.minutes(),
4234 seconds: m.seconds(),
4235 milliseconds: m.milliseconds(),
4236 };
4237 }
4238
4239 function toJSON() {
4240 // new Date(NaN).toJSON() === null
4241 return this.isValid() ? this.toISOString() : null;
4242 }
4243
4244 function isValid$2() {
4245 return isValid(this);
4246 }
4247
4248 function parsingFlags() {
4249 return extend({}, getParsingFlags(this));
4250 }
4251
4252 function invalidAt() {
4253 return getParsingFlags(this).overflow;
4254 }
4255
4256 function creationData() {
4257 return {
4258 input: this._i,
4259 format: this._f,
4260 locale: this._locale,
4261 isUTC: this._isUTC,
4262 strict: this._strict,
4263 };
4264 }
4265
4266 addFormatToken('N', 0, 0, 'eraAbbr');
4267 addFormatToken('NN', 0, 0, 'eraAbbr');
4268 addFormatToken('NNN', 0, 0, 'eraAbbr');
4269 addFormatToken('NNNN', 0, 0, 'eraName');
4270 addFormatToken('NNNNN', 0, 0, 'eraNarrow');
4271
4272 addFormatToken('y', ['y', 1], 'yo', 'eraYear');
4273 addFormatToken('y', ['yy', 2], 0, 'eraYear');
4274 addFormatToken('y', ['yyy', 3], 0, 'eraYear');
4275 addFormatToken('y', ['yyyy', 4], 0, 'eraYear');
4276
4277 addRegexToken('N', matchEraAbbr);
4278 addRegexToken('NN', matchEraAbbr);
4279 addRegexToken('NNN', matchEraAbbr);
4280 addRegexToken('NNNN', matchEraName);
4281 addRegexToken('NNNNN', matchEraNarrow);
4282
4283 addParseToken(['N', 'NN', 'NNN', 'NNNN', 'NNNNN'], function (
4284 input,
4285 array,
4286 config,
4287 token
4288 ) {
4289 var era = config._locale.erasParse(input, token, config._strict);
4290 if (era) {
4291 getParsingFlags(config).era = era;
4292 } else {
4293 getParsingFlags(config).invalidEra = input;
4294 }
4295 });
4296
4297 addRegexToken('y', matchUnsigned);
4298 addRegexToken('yy', matchUnsigned);
4299 addRegexToken('yyy', matchUnsigned);
4300 addRegexToken('yyyy', matchUnsigned);
4301 addRegexToken('yo', matchEraYearOrdinal);
4302
4303 addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);
4304 addParseToken(['yo'], function (input, array, config, token) {
4305 var match;
4306 if (config._locale._eraYearOrdinalRegex) {
4307 match = input.match(config._locale._eraYearOrdinalRegex);
4308 }
4309
4310 if (config._locale.eraYearOrdinalParse) {
4311 array[YEAR] = config._locale.eraYearOrdinalParse(input, match);
4312 } else {
4313 array[YEAR] = parseInt(input, 10);
4314 }
4315 });
4316
4317 function localeEras(m, format) {
4318 var i,
4319 l,
4320 date,
4321 eras = this._eras || getLocale('en')._eras;
4322 for (i = 0, l = eras.length; i < l; ++i) {
4323 switch (typeof eras[i].since) {
4324 case 'string':
4325 // truncate time
4326 date = hooks(eras[i].since).startOf('day');
4327 eras[i].since = date.valueOf();
4328 break;
4329 }
4330
4331 switch (typeof eras[i].until) {
4332 case 'undefined':
4333 eras[i].until = +Infinity;
4334 break;
4335 case 'string':
4336 // truncate time
4337 date = hooks(eras[i].until).startOf('day').valueOf();
4338 eras[i].until = date.valueOf();
4339 break;
4340 }
4341 }
4342 return eras;
4343 }
4344
4345 function localeErasParse(eraName, format, strict) {
4346 var i,
4347 l,
4348 eras = this.eras(),
4349 name,
4350 abbr,
4351 narrow;
4352 eraName = eraName.toUpperCase();
4353
4354 for (i = 0, l = eras.length; i < l; ++i) {
4355 name = eras[i].name.toUpperCase();
4356 abbr = eras[i].abbr.toUpperCase();
4357 narrow = eras[i].narrow.toUpperCase();
4358
4359 if (strict) {
4360 switch (format) {
4361 case 'N':
4362 case 'NN':
4363 case 'NNN':
4364 if (abbr === eraName) {
4365 return eras[i];
4366 }
4367 break;
4368
4369 case 'NNNN':
4370 if (name === eraName) {
4371 return eras[i];
4372 }
4373 break;
4374
4375 case 'NNNNN':
4376 if (narrow === eraName) {
4377 return eras[i];
4378 }
4379 break;
4380 }
4381 } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {
4382 return eras[i];
4383 }
4384 }
4385 }
4386
4387 function localeErasConvertYear(era, year) {
4388 var dir = era.since <= era.until ? +1 : -1;
4389 if (year === undefined) {
4390 return hooks(era.since).year();
4391 } else {
4392 return hooks(era.since).year() + (year - era.offset) * dir;
4393 }
4394 }
4395
4396 function getEraName() {
4397 var i,
4398 l,
4399 val,
4400 eras = this.localeData().eras();
4401 for (i = 0, l = eras.length; i < l; ++i) {
4402 // truncate time
4403 val = this.clone().startOf('day').valueOf();
4404
4405 if (eras[i].since <= val && val <= eras[i].until) {
4406 return eras[i].name;
4407 }
4408 if (eras[i].until <= val && val <= eras[i].since) {
4409 return eras[i].name;
4410 }
4411 }
4412
4413 return '';
4414 }
4415
4416 function getEraNarrow() {
4417 var i,
4418 l,
4419 val,
4420 eras = this.localeData().eras();
4421 for (i = 0, l = eras.length; i < l; ++i) {
4422 // truncate time
4423 val = this.clone().startOf('day').valueOf();
4424
4425 if (eras[i].since <= val && val <= eras[i].until) {
4426 return eras[i].narrow;
4427 }
4428 if (eras[i].until <= val && val <= eras[i].since) {
4429 return eras[i].narrow;
4430 }
4431 }
4432
4433 return '';
4434 }
4435
4436 function getEraAbbr() {
4437 var i,
4438 l,
4439 val,
4440 eras = this.localeData().eras();
4441 for (i = 0, l = eras.length; i < l; ++i) {
4442 // truncate time
4443 val = this.clone().startOf('day').valueOf();
4444
4445 if (eras[i].since <= val && val <= eras[i].until) {
4446 return eras[i].abbr;
4447 }
4448 if (eras[i].until <= val && val <= eras[i].since) {
4449 return eras[i].abbr;
4450 }
4451 }
4452
4453 return '';
4454 }
4455
4456 function getEraYear() {
4457 var i,
4458 l,
4459 dir,
4460 val,
4461 eras = this.localeData().eras();
4462 for (i = 0, l = eras.length; i < l; ++i) {
4463 dir = eras[i].since <= eras[i].until ? +1 : -1;
4464
4465 // truncate time
4466 val = this.clone().startOf('day').valueOf();
4467
4468 if (
4469 (eras[i].since <= val && val <= eras[i].until) ||
4470 (eras[i].until <= val && val <= eras[i].since)
4471 ) {
4472 return (
4473 (this.year() - hooks(eras[i].since).year()) * dir +
4474 eras[i].offset
4475 );
4476 }
4477 }
4478
4479 return this.year();
4480 }
4481
4482 function erasNameRegex(isStrict) {
4483 if (!hasOwnProp(this, '_erasNameRegex')) {
4484 computeErasParse.call(this);
4485 }
4486 return isStrict ? this._erasNameRegex : this._erasRegex;
4487 }
4488
4489 function erasAbbrRegex(isStrict) {
4490 if (!hasOwnProp(this, '_erasAbbrRegex')) {
4491 computeErasParse.call(this);
4492 }
4493 return isStrict ? this._erasAbbrRegex : this._erasRegex;
4494 }
4495
4496 function erasNarrowRegex(isStrict) {
4497 if (!hasOwnProp(this, '_erasNarrowRegex')) {
4498 computeErasParse.call(this);
4499 }
4500 return isStrict ? this._erasNarrowRegex : this._erasRegex;
4501 }
4502
4503 function matchEraAbbr(isStrict, locale) {
4504 return locale.erasAbbrRegex(isStrict);
4505 }
4506
4507 function matchEraName(isStrict, locale) {
4508 return locale.erasNameRegex(isStrict);
4509 }
4510
4511 function matchEraNarrow(isStrict, locale) {
4512 return locale.erasNarrowRegex(isStrict);
4513 }
4514
4515 function matchEraYearOrdinal(isStrict, locale) {
4516 return locale._eraYearOrdinalRegex || matchUnsigned;
4517 }
4518
4519 function computeErasParse() {
4520 var abbrPieces = [],
4521 namePieces = [],
4522 narrowPieces = [],
4523 mixedPieces = [],
4524 i,
4525 l,
4526 eras = this.eras();
4527
4528 for (i = 0, l = eras.length; i < l; ++i) {
4529 namePieces.push(regexEscape(eras[i].name));
4530 abbrPieces.push(regexEscape(eras[i].abbr));
4531 narrowPieces.push(regexEscape(eras[i].narrow));
4532
4533 mixedPieces.push(regexEscape(eras[i].name));
4534 mixedPieces.push(regexEscape(eras[i].abbr));
4535 mixedPieces.push(regexEscape(eras[i].narrow));
4536 }
4537
4538 this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
4539 this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');
4540 this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');
4541 this._erasNarrowRegex = new RegExp(
4542 '^(' + narrowPieces.join('|') + ')',
4543 'i'
4544 );
4545 }
4546
4547 // FORMATTING
4548
4549 addFormatToken(0, ['gg', 2], 0, function () {
4550 return this.weekYear() % 100;
4551 });
4552
4553 addFormatToken(0, ['GG', 2], 0, function () {
4554 return this.isoWeekYear() % 100;
4555 });
4556
4557 function addWeekYearFormatToken(token, getter) {
4558 addFormatToken(0, [token, token.length], 0, getter);
4559 }
4560
4561 addWeekYearFormatToken('gggg', 'weekYear');
4562 addWeekYearFormatToken('ggggg', 'weekYear');
4563 addWeekYearFormatToken('GGGG', 'isoWeekYear');
4564 addWeekYearFormatToken('GGGGG', 'isoWeekYear');
4565
4566 // ALIASES
4567
4568 addUnitAlias('weekYear', 'gg');
4569 addUnitAlias('isoWeekYear', 'GG');
4570
4571 // PRIORITY
4572
4573 addUnitPriority('weekYear', 1);
4574 addUnitPriority('isoWeekYear', 1);
4575
4576 // PARSING
4577
4578 addRegexToken('G', matchSigned);
4579 addRegexToken('g', matchSigned);
4580 addRegexToken('GG', match1to2, match2);
4581 addRegexToken('gg', match1to2, match2);
4582 addRegexToken('GGGG', match1to4, match4);
4583 addRegexToken('gggg', match1to4, match4);
4584 addRegexToken('GGGGG', match1to6, match6);
4585 addRegexToken('ggggg', match1to6, match6);
4586
4587 addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (
4588 input,
4589 week,
4590 config,
4591 token
4592 ) {
4593 week[token.substr(0, 2)] = toInt(input);
4594 });
4595
4596 addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
4597 week[token] = hooks.parseTwoDigitYear(input);
4598 });
4599
4600 // MOMENTS
4601
4602 function getSetWeekYear(input) {
4603 return getSetWeekYearHelper.call(
4604 this,
4605 input,
4606 this.week(),
4607 this.weekday(),
4608 this.localeData()._week.dow,
4609 this.localeData()._week.doy
4610 );
4611 }
4612
4613 function getSetISOWeekYear(input) {
4614 return getSetWeekYearHelper.call(
4615 this,
4616 input,
4617 this.isoWeek(),
4618 this.isoWeekday(),
4619 1,
4620 4
4621 );
4622 }
4623
4624 function getISOWeeksInYear() {
4625 return weeksInYear(this.year(), 1, 4);
4626 }
4627
4628 function getISOWeeksInISOWeekYear() {
4629 return weeksInYear(this.isoWeekYear(), 1, 4);
4630 }
4631
4632 function getWeeksInYear() {
4633 var weekInfo = this.localeData()._week;
4634 return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
4635 }
4636
4637 function getWeeksInWeekYear() {
4638 var weekInfo = this.localeData()._week;
4639 return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);
4640 }
4641
4642 function getSetWeekYearHelper(input, week, weekday, dow, doy) {
4643 var weeksTarget;
4644 if (input == null) {
4645 return weekOfYear(this, dow, doy).year;
4646 } else {
4647 weeksTarget = weeksInYear(input, dow, doy);
4648 if (week > weeksTarget) {
4649 week = weeksTarget;
4650 }
4651 return setWeekAll.call(this, input, week, weekday, dow, doy);
4652 }
4653 }
4654
4655 function setWeekAll(weekYear, week, weekday, dow, doy) {
4656 var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
4657 date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
4658
4659 this.year(date.getUTCFullYear());
4660 this.month(date.getUTCMonth());
4661 this.date(date.getUTCDate());
4662 return this;
4663 }
4664
4665 // FORMATTING
4666
4667 addFormatToken('Q', 0, 'Qo', 'quarter');
4668
4669 // ALIASES
4670
4671 addUnitAlias('quarter', 'Q');
4672
4673 // PRIORITY
4674
4675 addUnitPriority('quarter', 7);
4676
4677 // PARSING
4678
4679 addRegexToken('Q', match1);
4680 addParseToken('Q', function (input, array) {
4681 array[MONTH] = (toInt(input) - 1) * 3;
4682 });
4683
4684 // MOMENTS
4685
4686 function getSetQuarter(input) {
4687 return input == null
4688 ? Math.ceil((this.month() + 1) / 3)
4689 : this.month((input - 1) * 3 + (this.month() % 3));
4690 }
4691
4692 // FORMATTING
4693
4694 addFormatToken('D', ['DD', 2], 'Do', 'date');
4695
4696 // ALIASES
4697
4698 addUnitAlias('date', 'D');
4699
4700 // PRIORITY
4701 addUnitPriority('date', 9);
4702
4703 // PARSING
4704
4705 addRegexToken('D', match1to2);
4706 addRegexToken('DD', match1to2, match2);
4707 addRegexToken('Do', function (isStrict, locale) {
4708 // TODO: Remove "ordinalParse" fallback in next major release.
4709 return isStrict
4710 ? locale._dayOfMonthOrdinalParse || locale._ordinalParse
4711 : locale._dayOfMonthOrdinalParseLenient;
4712 });
4713
4714 addParseToken(['D', 'DD'], DATE);
4715 addParseToken('Do', function (input, array) {
4716 array[DATE] = toInt(input.match(match1to2)[0]);
4717 });
4718
4719 // MOMENTS
4720
4721 var getSetDayOfMonth = makeGetSet('Date', true);
4722
4723 // FORMATTING
4724
4725 addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
4726
4727 // ALIASES
4728
4729 addUnitAlias('dayOfYear', 'DDD');
4730
4731 // PRIORITY
4732 addUnitPriority('dayOfYear', 4);
4733
4734 // PARSING
4735
4736 addRegexToken('DDD', match1to3);
4737 addRegexToken('DDDD', match3);
4738 addParseToken(['DDD', 'DDDD'], function (input, array, config) {
4739 config._dayOfYear = toInt(input);
4740 });
4741
4742 // HELPERS
4743
4744 // MOMENTS
4745
4746 function getSetDayOfYear(input) {
4747 var dayOfYear =
4748 Math.round(
4749 (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5
4750 ) + 1;
4751 return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');
4752 }
4753
4754 // FORMATTING
4755
4756 addFormatToken('m', ['mm', 2], 0, 'minute');
4757
4758 // ALIASES
4759
4760 addUnitAlias('minute', 'm');
4761
4762 // PRIORITY
4763
4764 addUnitPriority('minute', 14);
4765
4766 // PARSING
4767
4768 addRegexToken('m', match1to2);
4769 addRegexToken('mm', match1to2, match2);
4770 addParseToken(['m', 'mm'], MINUTE);
4771
4772 // MOMENTS
4773
4774 var getSetMinute = makeGetSet('Minutes', false);
4775
4776 // FORMATTING
4777
4778 addFormatToken('s', ['ss', 2], 0, 'second');
4779
4780 // ALIASES
4781
4782 addUnitAlias('second', 's');
4783
4784 // PRIORITY
4785
4786 addUnitPriority('second', 15);
4787
4788 // PARSING
4789
4790 addRegexToken('s', match1to2);
4791 addRegexToken('ss', match1to2, match2);
4792 addParseToken(['s', 'ss'], SECOND);
4793
4794 // MOMENTS
4795
4796 var getSetSecond = makeGetSet('Seconds', false);
4797
4798 // FORMATTING
4799
4800 addFormatToken('S', 0, 0, function () {
4801 return ~~(this.millisecond() / 100);
4802 });
4803
4804 addFormatToken(0, ['SS', 2], 0, function () {
4805 return ~~(this.millisecond() / 10);
4806 });
4807
4808 addFormatToken(0, ['SSS', 3], 0, 'millisecond');
4809 addFormatToken(0, ['SSSS', 4], 0, function () {
4810 return this.millisecond() * 10;
4811 });
4812 addFormatToken(0, ['SSSSS', 5], 0, function () {
4813 return this.millisecond() * 100;
4814 });
4815 addFormatToken(0, ['SSSSSS', 6], 0, function () {
4816 return this.millisecond() * 1000;
4817 });
4818 addFormatToken(0, ['SSSSSSS', 7], 0, function () {
4819 return this.millisecond() * 10000;
4820 });
4821 addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
4822 return this.millisecond() * 100000;
4823 });
4824 addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
4825 return this.millisecond() * 1000000;
4826 });
4827
4828 // ALIASES
4829
4830 addUnitAlias('millisecond', 'ms');
4831
4832 // PRIORITY
4833
4834 addUnitPriority('millisecond', 16);
4835
4836 // PARSING
4837
4838 addRegexToken('S', match1to3, match1);
4839 addRegexToken('SS', match1to3, match2);
4840 addRegexToken('SSS', match1to3, match3);
4841
4842 var token, getSetMillisecond;
4843 for (token = 'SSSS'; token.length <= 9; token += 'S') {
4844 addRegexToken(token, matchUnsigned);
4845 }
4846
4847 function parseMs(input, array) {
4848 array[MILLISECOND] = toInt(('0.' + input) * 1000);
4849 }
4850
4851 for (token = 'S'; token.length <= 9; token += 'S') {
4852 addParseToken(token, parseMs);
4853 }
4854
4855 getSetMillisecond = makeGetSet('Milliseconds', false);
4856
4857 // FORMATTING
4858
4859 addFormatToken('z', 0, 0, 'zoneAbbr');
4860 addFormatToken('zz', 0, 0, 'zoneName');
4861
4862 // MOMENTS
4863
4864 function getZoneAbbr() {
4865 return this._isUTC ? 'UTC' : '';
4866 }
4867
4868 function getZoneName() {
4869 return this._isUTC ? 'Coordinated Universal Time' : '';
4870 }
4871
4872 var proto = Moment.prototype;
4873
4874 proto.add = add;
4875 proto.calendar = calendar$1;
4876 proto.clone = clone;
4877 proto.diff = diff;
4878 proto.endOf = endOf;
4879 proto.format = format;
4880 proto.from = from;
4881 proto.fromNow = fromNow;
4882 proto.to = to;
4883 proto.toNow = toNow;
4884 proto.get = stringGet;
4885 proto.invalidAt = invalidAt;
4886 proto.isAfter = isAfter;
4887 proto.isBefore = isBefore;
4888 proto.isBetween = isBetween;
4889 proto.isSame = isSame;
4890 proto.isSameOrAfter = isSameOrAfter;
4891 proto.isSameOrBefore = isSameOrBefore;
4892 proto.isValid = isValid$2;
4893 proto.lang = lang;
4894 proto.locale = locale;
4895 proto.localeData = localeData;
4896 proto.max = prototypeMax;
4897 proto.min = prototypeMin;
4898 proto.parsingFlags = parsingFlags;
4899 proto.set = stringSet;
4900 proto.startOf = startOf;
4901 proto.subtract = subtract;
4902 proto.toArray = toArray;
4903 proto.toObject = toObject;
4904 proto.toDate = toDate;
4905 proto.toISOString = toISOString;
4906 proto.inspect = inspect;
4907 if (typeof Symbol !== 'undefined' && Symbol.for != null) {
4908 proto[Symbol.for('nodejs.util.inspect.custom')] = function () {
4909 return 'Moment<' + this.format() + '>';
4910 };
4911 }
4912 proto.toJSON = toJSON;
4913 proto.toString = toString;
4914 proto.unix = unix;
4915 proto.valueOf = valueOf;
4916 proto.creationData = creationData;
4917 proto.eraName = getEraName;
4918 proto.eraNarrow = getEraNarrow;
4919 proto.eraAbbr = getEraAbbr;
4920 proto.eraYear = getEraYear;
4921 proto.year = getSetYear;
4922 proto.isLeapYear = getIsLeapYear;
4923 proto.weekYear = getSetWeekYear;
4924 proto.isoWeekYear = getSetISOWeekYear;
4925 proto.quarter = proto.quarters = getSetQuarter;
4926 proto.month = getSetMonth;
4927 proto.daysInMonth = getDaysInMonth;
4928 proto.week = proto.weeks = getSetWeek;
4929 proto.isoWeek = proto.isoWeeks = getSetISOWeek;
4930 proto.weeksInYear = getWeeksInYear;
4931 proto.weeksInWeekYear = getWeeksInWeekYear;
4932 proto.isoWeeksInYear = getISOWeeksInYear;
4933 proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;
4934 proto.date = getSetDayOfMonth;
4935 proto.day = proto.days = getSetDayOfWeek;
4936 proto.weekday = getSetLocaleDayOfWeek;
4937 proto.isoWeekday = getSetISODayOfWeek;
4938 proto.dayOfYear = getSetDayOfYear;
4939 proto.hour = proto.hours = getSetHour;
4940 proto.minute = proto.minutes = getSetMinute;
4941 proto.second = proto.seconds = getSetSecond;
4942 proto.millisecond = proto.milliseconds = getSetMillisecond;
4943 proto.utcOffset = getSetOffset;
4944 proto.utc = setOffsetToUTC;
4945 proto.local = setOffsetToLocal;
4946 proto.parseZone = setOffsetToParsedOffset;
4947 proto.hasAlignedHourOffset = hasAlignedHourOffset;
4948 proto.isDST = isDaylightSavingTime;
4949 proto.isLocal = isLocal;
4950 proto.isUtcOffset = isUtcOffset;
4951 proto.isUtc = isUtc;
4952 proto.isUTC = isUtc;
4953 proto.zoneAbbr = getZoneAbbr;
4954 proto.zoneName = getZoneName;
4955 proto.dates = deprecate(
4956 'dates accessor is deprecated. Use date instead.',
4957 getSetDayOfMonth
4958 );
4959 proto.months = deprecate(
4960 'months accessor is deprecated. Use month instead',
4961 getSetMonth
4962 );
4963 proto.years = deprecate(
4964 'years accessor is deprecated. Use year instead',
4965 getSetYear
4966 );
4967 proto.zone = deprecate(
4968 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',
4969 getSetZone
4970 );
4971 proto.isDSTShifted = deprecate(
4972 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',
4973 isDaylightSavingTimeShifted
4974 );
4975
4976 function createUnix(input) {
4977 return createLocal(input * 1000);
4978 }
4979
4980 function createInZone() {
4981 return createLocal.apply(null, arguments).parseZone();
4982 }
4983
4984 function preParsePostFormat(string) {
4985 return string;
4986 }
4987
4988 var proto$1 = Locale.prototype;
4989
4990 proto$1.calendar = calendar;
4991 proto$1.longDateFormat = longDateFormat;
4992 proto$1.invalidDate = invalidDate;
4993 proto$1.ordinal = ordinal;
4994 proto$1.preparse = preParsePostFormat;
4995 proto$1.postformat = preParsePostFormat;
4996 proto$1.relativeTime = relativeTime;
4997 proto$1.pastFuture = pastFuture;
4998 proto$1.set = set;
4999 proto$1.eras = localeEras;
5000 proto$1.erasParse = localeErasParse;
5001 proto$1.erasConvertYear = localeErasConvertYear;
5002 proto$1.erasAbbrRegex = erasAbbrRegex;
5003 proto$1.erasNameRegex = erasNameRegex;
5004 proto$1.erasNarrowRegex = erasNarrowRegex;
5005
5006 proto$1.months = localeMonths;
5007 proto$1.monthsShort = localeMonthsShort;
5008 proto$1.monthsParse = localeMonthsParse;
5009 proto$1.monthsRegex = monthsRegex;
5010 proto$1.monthsShortRegex = monthsShortRegex;
5011 proto$1.week = localeWeek;
5012 proto$1.firstDayOfYear = localeFirstDayOfYear;
5013 proto$1.firstDayOfWeek = localeFirstDayOfWeek;
5014
5015 proto$1.weekdays = localeWeekdays;
5016 proto$1.weekdaysMin = localeWeekdaysMin;
5017 proto$1.weekdaysShort = localeWeekdaysShort;
5018 proto$1.weekdaysParse = localeWeekdaysParse;
5019
5020 proto$1.weekdaysRegex = weekdaysRegex;
5021 proto$1.weekdaysShortRegex = weekdaysShortRegex;
5022 proto$1.weekdaysMinRegex = weekdaysMinRegex;
5023
5024 proto$1.isPM = localeIsPM;
5025 proto$1.meridiem = localeMeridiem;
5026
5027 function get$1(format, index, field, setter) {
5028 var locale = getLocale(),
5029 utc = createUTC().set(setter, index);
5030 return locale[field](utc, format);
5031 }
5032
5033 function listMonthsImpl(format, index, field) {
5034 if (isNumber(format)) {
5035 index = format;
5036 format = undefined;
5037 }
5038
5039 format = format || '';
5040
5041 if (index != null) {
5042 return get$1(format, index, field, 'month');
5043 }
5044
5045 var i,
5046 out = [];
5047 for (i = 0; i < 12; i++) {
5048 out[i] = get$1(format, i, field, 'month');
5049 }
5050 return out;
5051 }
5052
5053 // ()
5054 // (5)
5055 // (fmt, 5)
5056 // (fmt)
5057 // (true)
5058 // (true, 5)
5059 // (true, fmt, 5)
5060 // (true, fmt)
5061 function listWeekdaysImpl(localeSorted, format, index, field) {
5062 if (typeof localeSorted === 'boolean') {
5063 if (isNumber(format)) {
5064 index = format;
5065 format = undefined;
5066 }
5067
5068 format = format || '';
5069 } else {
5070 format = localeSorted;
5071 index = format;
5072 localeSorted = false;
5073
5074 if (isNumber(format)) {
5075 index = format;
5076 format = undefined;
5077 }
5078
5079 format = format || '';
5080 }
5081
5082 var locale = getLocale(),
5083 shift = localeSorted ? locale._week.dow : 0,
5084 i,
5085 out = [];
5086
5087 if (index != null) {
5088 return get$1(format, (index + shift) % 7, field, 'day');
5089 }
5090
5091 for (i = 0; i < 7; i++) {
5092 out[i] = get$1(format, (i + shift) % 7, field, 'day');
5093 }
5094 return out;
5095 }
5096
5097 function listMonths(format, index) {
5098 return listMonthsImpl(format, index, 'months');
5099 }
5100
5101 function listMonthsShort(format, index) {
5102 return listMonthsImpl(format, index, 'monthsShort');
5103 }
5104
5105 function listWeekdays(localeSorted, format, index) {
5106 return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
5107 }
5108
5109 function listWeekdaysShort(localeSorted, format, index) {
5110 return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
5111 }
5112
5113 function listWeekdaysMin(localeSorted, format, index) {
5114 return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
5115 }
5116
5117 getSetGlobalLocale('en', {
5118 eras: [
5119 {
5120 since: '0001-01-01',
5121 until: +Infinity,
5122 offset: 1,
5123 name: 'Anno Domini',
5124 narrow: 'AD',
5125 abbr: 'AD',
5126 },
5127 {
5128 since: '0000-12-31',
5129 until: -Infinity,
5130 offset: 1,
5131 name: 'Before Christ',
5132 narrow: 'BC',
5133 abbr: 'BC',
5134 },
5135 ],
5136 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
5137 ordinal: function (number) {
5138 var b = number % 10,
5139 output =
5140 toInt((number % 100) / 10) === 1
5141 ? 'th'
5142 : b === 1
5143 ? 'st'
5144 : b === 2
5145 ? 'nd'
5146 : b === 3
5147 ? 'rd'
5148 : 'th';
5149 return number + output;
5150 },
5151 });
5152
5153 // Side effect imports
5154
5155 hooks.lang = deprecate(
5156 'moment.lang is deprecated. Use moment.locale instead.',
5157 getSetGlobalLocale
5158 );
5159 hooks.langData = deprecate(
5160 'moment.langData is deprecated. Use moment.localeData instead.',
5161 getLocale
5162 );
5163
5164 var mathAbs = Math.abs;
5165
5166 function abs() {
5167 var data = this._data;
5168
5169 this._milliseconds = mathAbs(this._milliseconds);
5170 this._days = mathAbs(this._days);
5171 this._months = mathAbs(this._months);
5172
5173 data.milliseconds = mathAbs(data.milliseconds);
5174 data.seconds = mathAbs(data.seconds);
5175 data.minutes = mathAbs(data.minutes);
5176 data.hours = mathAbs(data.hours);
5177 data.months = mathAbs(data.months);
5178 data.years = mathAbs(data.years);
5179
5180 return this;
5181 }
5182
5183 function addSubtract$1(duration, input, value, direction) {
5184 var other = createDuration(input, value);
5185
5186 duration._milliseconds += direction * other._milliseconds;
5187 duration._days += direction * other._days;
5188 duration._months += direction * other._months;
5189
5190 return duration._bubble();
5191 }
5192
5193 // supports only 2.0-style add(1, 's') or add(duration)
5194 function add$1(input, value) {
5195 return addSubtract$1(this, input, value, 1);
5196 }
5197
5198 // supports only 2.0-style subtract(1, 's') or subtract(duration)
5199 function subtract$1(input, value) {
5200 return addSubtract$1(this, input, value, -1);
5201 }
5202
5203 function absCeil(number) {
5204 if (number < 0) {
5205 return Math.floor(number);
5206 } else {
5207 return Math.ceil(number);
5208 }
5209 }
5210
5211 function bubble() {
5212 var milliseconds = this._milliseconds,
5213 days = this._days,
5214 months = this._months,
5215 data = this._data,
5216 seconds,
5217 minutes,
5218 hours,
5219 years,
5220 monthsFromDays;
5221
5222 // if we have a mix of positive and negative values, bubble down first
5223 // check: https://github.com/moment/moment/issues/2166
5224 if (
5225 !(
5226 (milliseconds >= 0 && days >= 0 && months >= 0) ||
5227 (milliseconds <= 0 && days <= 0 && months <= 0)
5228 )
5229 ) {
5230 milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
5231 days = 0;
5232 months = 0;
5233 }
5234
5235 // The following code bubbles up values, see the tests for
5236 // examples of what that means.
5237 data.milliseconds = milliseconds % 1000;
5238
5239 seconds = absFloor(milliseconds / 1000);
5240 data.seconds = seconds % 60;
5241
5242 minutes = absFloor(seconds / 60);
5243 data.minutes = minutes % 60;
5244
5245 hours = absFloor(minutes / 60);
5246 data.hours = hours % 24;
5247
5248 days += absFloor(hours / 24);
5249
5250 // convert days to months
5251 monthsFromDays = absFloor(daysToMonths(days));
5252 months += monthsFromDays;
5253 days -= absCeil(monthsToDays(monthsFromDays));
5254
5255 // 12 months -> 1 year
5256 years = absFloor(months / 12);
5257 months %= 12;
5258
5259 data.days = days;
5260 data.months = months;
5261 data.years = years;
5262
5263 return this;
5264 }
5265
5266 function daysToMonths(days) {
5267 // 400 years have 146097 days (taking into account leap year rules)
5268 // 400 years have 12 months === 4800
5269 return (days * 4800) / 146097;
5270 }
5271
5272 function monthsToDays(months) {
5273 // the reverse of daysToMonths
5274 return (months * 146097) / 4800;
5275 }
5276
5277 function as(units) {
5278 if (!this.isValid()) {
5279 return NaN;
5280 }
5281 var days,
5282 months,
5283 milliseconds = this._milliseconds;
5284
5285 units = normalizeUnits(units);
5286
5287 if (units === 'month' || units === 'quarter' || units === 'year') {
5288 days = this._days + milliseconds / 864e5;
5289 months = this._months + daysToMonths(days);
5290 switch (units) {
5291 case 'month':
5292 return months;
5293 case 'quarter':
5294 return months / 3;
5295 case 'year':
5296 return months / 12;
5297 }
5298 } else {
5299 // handle milliseconds separately because of floating point math errors (issue #1867)
5300 days = this._days + Math.round(monthsToDays(this._months));
5301 switch (units) {
5302 case 'week':
5303 return days / 7 + milliseconds / 6048e5;
5304 case 'day':
5305 return days + milliseconds / 864e5;
5306 case 'hour':
5307 return days * 24 + milliseconds / 36e5;
5308 case 'minute':
5309 return days * 1440 + milliseconds / 6e4;
5310 case 'second':
5311 return days * 86400 + milliseconds / 1000;
5312 // Math.floor prevents floating point math errors here
5313 case 'millisecond':
5314 return Math.floor(days * 864e5) + milliseconds;
5315 default:
5316 throw new Error('Unknown unit ' + units);
5317 }
5318 }
5319 }
5320
5321 // TODO: Use this.as('ms')?
5322 function valueOf$1() {
5323 if (!this.isValid()) {
5324 return NaN;
5325 }
5326 return (
5327 this._milliseconds +
5328 this._days * 864e5 +
5329 (this._months % 12) * 2592e6 +
5330 toInt(this._months / 12) * 31536e6
5331 );
5332 }
5333
5334 function makeAs(alias) {
5335 return function () {
5336 return this.as(alias);
5337 };
5338 }
5339
5340 var asMilliseconds = makeAs('ms'),
5341 asSeconds = makeAs('s'),
5342 asMinutes = makeAs('m'),
5343 asHours = makeAs('h'),
5344 asDays = makeAs('d'),
5345 asWeeks = makeAs('w'),
5346 asMonths = makeAs('M'),
5347 asQuarters = makeAs('Q'),
5348 asYears = makeAs('y');
5349
5350 function clone$1() {
5351 return createDuration(this);
5352 }
5353
5354 function get$2(units) {
5355 units = normalizeUnits(units);
5356 return this.isValid() ? this[units + 's']() : NaN;
5357 }
5358
5359 function makeGetter(name) {
5360 return function () {
5361 return this.isValid() ? this._data[name] : NaN;
5362 };
5363 }
5364
5365 var milliseconds = makeGetter('milliseconds'),
5366 seconds = makeGetter('seconds'),
5367 minutes = makeGetter('minutes'),
5368 hours = makeGetter('hours'),
5369 days = makeGetter('days'),
5370 months = makeGetter('months'),
5371 years = makeGetter('years');
5372
5373 function weeks() {
5374 return absFloor(this.days() / 7);
5375 }
5376
5377 var round = Math.round,
5378 thresholds = {
5379 ss: 44, // a few seconds to seconds
5380 s: 45, // seconds to minute
5381 m: 45, // minutes to hour
5382 h: 22, // hours to day
5383 d: 26, // days to month/week
5384 w: null, // weeks to month
5385 M: 11, // months to year
5386 };
5387
5388 // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
5389 function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
5390 return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
5391 }
5392
5393 function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {
5394 var duration = createDuration(posNegDuration).abs(),
5395 seconds = round(duration.as('s')),
5396 minutes = round(duration.as('m')),
5397 hours = round(duration.as('h')),
5398 days = round(duration.as('d')),
5399 months = round(duration.as('M')),
5400 weeks = round(duration.as('w')),
5401 years = round(duration.as('y')),
5402 a =
5403 (seconds <= thresholds.ss && ['s', seconds]) ||
5404 (seconds < thresholds.s && ['ss', seconds]) ||
5405 (minutes <= 1 && ['m']) ||
5406 (minutes < thresholds.m && ['mm', minutes]) ||
5407 (hours <= 1 && ['h']) ||
5408 (hours < thresholds.h && ['hh', hours]) ||
5409 (days <= 1 && ['d']) ||
5410 (days < thresholds.d && ['dd', days]);
5411
5412 if (thresholds.w != null) {
5413 a =
5414 a ||
5415 (weeks <= 1 && ['w']) ||
5416 (weeks < thresholds.w && ['ww', weeks]);
5417 }
5418 a = a ||
5419 (months <= 1 && ['M']) ||
5420 (months < thresholds.M && ['MM', months]) ||
5421 (years <= 1 && ['y']) || ['yy', years];
5422
5423 a[2] = withoutSuffix;
5424 a[3] = +posNegDuration > 0;
5425 a[4] = locale;
5426 return substituteTimeAgo.apply(null, a);
5427 }
5428
5429 // This function allows you to set the rounding function for relative time strings
5430 function getSetRelativeTimeRounding(roundingFunction) {
5431 if (roundingFunction === undefined) {
5432 return round;
5433 }
5434 if (typeof roundingFunction === 'function') {
5435 round = roundingFunction;
5436 return true;
5437 }
5438 return false;
5439 }
5440
5441 // This function allows you to set a threshold for relative time strings
5442 function getSetRelativeTimeThreshold(threshold, limit) {
5443 if (thresholds[threshold] === undefined) {
5444 return false;
5445 }
5446 if (limit === undefined) {
5447 return thresholds[threshold];
5448 }
5449 thresholds[threshold] = limit;
5450 if (threshold === 's') {
5451 thresholds.ss = limit - 1;
5452 }
5453 return true;
5454 }
5455
5456 function humanize(argWithSuffix, argThresholds) {
5457 if (!this.isValid()) {
5458 return this.localeData().invalidDate();
5459 }
5460
5461 var withSuffix = false,
5462 th = thresholds,
5463 locale,
5464 output;
5465
5466 if (typeof argWithSuffix === 'object') {
5467 argThresholds = argWithSuffix;
5468 argWithSuffix = false;
5469 }
5470 if (typeof argWithSuffix === 'boolean') {
5471 withSuffix = argWithSuffix;
5472 }
5473 if (typeof argThresholds === 'object') {
5474 th = Object.assign({}, thresholds, argThresholds);
5475 if (argThresholds.s != null && argThresholds.ss == null) {
5476 th.ss = argThresholds.s - 1;
5477 }
5478 }
5479
5480 locale = this.localeData();
5481 output = relativeTime$1(this, !withSuffix, th, locale);
5482
5483 if (withSuffix) {
5484 output = locale.pastFuture(+this, output);
5485 }
5486
5487 return locale.postformat(output);
5488 }
5489
5490 var abs$1 = Math.abs;
5491
5492 function sign(x) {
5493 return (x > 0) - (x < 0) || +x;
5494 }
5495
5496 function toISOString$1() {
5497 // for ISO strings we do not use the normal bubbling rules:
5498 // * milliseconds bubble up until they become hours
5499 // * days do not bubble at all
5500 // * months bubble up until they become years
5501 // This is because there is no context-free conversion between hours and days
5502 // (think of clock changes)
5503 // and also not between days and months (28-31 days per month)
5504 if (!this.isValid()) {
5505 return this.localeData().invalidDate();
5506 }
5507
5508 var seconds = abs$1(this._milliseconds) / 1000,
5509 days = abs$1(this._days),
5510 months = abs$1(this._months),
5511 minutes,
5512 hours,
5513 years,
5514 s,
5515 total = this.asSeconds(),
5516 totalSign,
5517 ymSign,
5518 daysSign,
5519 hmsSign;
5520
5521 if (!total) {
5522 // this is the same as C#'s (Noda) and python (isodate)...
5523 // but not other JS (goog.date)
5524 return 'P0D';
5525 }
5526
5527 // 3600 seconds -> 60 minutes -> 1 hour
5528 minutes = absFloor(seconds / 60);
5529 hours = absFloor(minutes / 60);
5530 seconds %= 60;
5531 minutes %= 60;
5532
5533 // 12 months -> 1 year
5534 years = absFloor(months / 12);
5535 months %= 12;
5536
5537 // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
5538 s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
5539
5540 totalSign = total < 0 ? '-' : '';
5541 ymSign = sign(this._months) !== sign(total) ? '-' : '';
5542 daysSign = sign(this._days) !== sign(total) ? '-' : '';
5543 hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
5544
5545 return (
5546 totalSign +
5547 'P' +
5548 (years ? ymSign + years + 'Y' : '') +
5549 (months ? ymSign + months + 'M' : '') +
5550 (days ? daysSign + days + 'D' : '') +
5551 (hours || minutes || seconds ? 'T' : '') +
5552 (hours ? hmsSign + hours + 'H' : '') +
5553 (minutes ? hmsSign + minutes + 'M' : '') +
5554 (seconds ? hmsSign + s + 'S' : '')
5555 );
5556 }
5557
5558 var proto$2 = Duration.prototype;
5559
5560 proto$2.isValid = isValid$1;
5561 proto$2.abs = abs;
5562 proto$2.add = add$1;
5563 proto$2.subtract = subtract$1;
5564 proto$2.as = as;
5565 proto$2.asMilliseconds = asMilliseconds;
5566 proto$2.asSeconds = asSeconds;
5567 proto$2.asMinutes = asMinutes;
5568 proto$2.asHours = asHours;
5569 proto$2.asDays = asDays;
5570 proto$2.asWeeks = asWeeks;
5571 proto$2.asMonths = asMonths;
5572 proto$2.asQuarters = asQuarters;
5573 proto$2.asYears = asYears;
5574 proto$2.valueOf = valueOf$1;
5575 proto$2._bubble = bubble;
5576 proto$2.clone = clone$1;
5577 proto$2.get = get$2;
5578 proto$2.milliseconds = milliseconds;
5579 proto$2.seconds = seconds;
5580 proto$2.minutes = minutes;
5581 proto$2.hours = hours;
5582 proto$2.days = days;
5583 proto$2.weeks = weeks;
5584 proto$2.months = months;
5585 proto$2.years = years;
5586 proto$2.humanize = humanize;
5587 proto$2.toISOString = toISOString$1;
5588 proto$2.toString = toISOString$1;
5589 proto$2.toJSON = toISOString$1;
5590 proto$2.locale = locale;
5591 proto$2.localeData = localeData;
5592
5593 proto$2.toIsoString = deprecate(
5594 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',
5595 toISOString$1
5596 );
5597 proto$2.lang = lang;
5598
5599 // FORMATTING
5600
5601 addFormatToken('X', 0, 0, 'unix');
5602 addFormatToken('x', 0, 0, 'valueOf');
5603
5604 // PARSING
5605
5606 addRegexToken('x', matchSigned);
5607 addRegexToken('X', matchTimestamp);
5608 addParseToken('X', function (input, array, config) {
5609 config._d = new Date(parseFloat(input) * 1000);
5610 });
5611 addParseToken('x', function (input, array, config) {
5612 config._d = new Date(toInt(input));
5613 });
5614
5615 //! moment.js
5616
5617 hooks.version = '2.29.1';
5618
5619 setHookCallback(createLocal);
5620
5621 hooks.fn = proto;
5622 hooks.min = min;
5623 hooks.max = max;
5624 hooks.now = now;
5625 hooks.utc = createUTC;
5626 hooks.unix = createUnix;
5627 hooks.months = listMonths;
5628 hooks.isDate = isDate;
5629 hooks.locale = getSetGlobalLocale;
5630 hooks.invalid = createInvalid;
5631 hooks.duration = createDuration;
5632 hooks.isMoment = isMoment;
5633 hooks.weekdays = listWeekdays;
5634 hooks.parseZone = createInZone;
5635 hooks.localeData = getLocale;
5636 hooks.isDuration = isDuration;
5637 hooks.monthsShort = listMonthsShort;
5638 hooks.weekdaysMin = listWeekdaysMin;
5639 hooks.defineLocale = defineLocale;
5640 hooks.updateLocale = updateLocale;
5641 hooks.locales = listLocales;
5642 hooks.weekdaysShort = listWeekdaysShort;
5643 hooks.normalizeUnits = normalizeUnits;
5644 hooks.relativeTimeRounding = getSetRelativeTimeRounding;
5645 hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
5646 hooks.calendarFormat = getCalendarFormat;
5647 hooks.prototype = proto;
5648
5649 // currently HTML5 input type only supports 24-hour formats
5650 hooks.HTML5_FMT = {
5651 DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type="datetime-local" />
5652 DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type="datetime-local" step="1" />
5653 DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type="datetime-local" step="0.001" />
5654 DATE: 'YYYY-MM-DD', // <input type="date" />
5655 TIME: 'HH:mm', // <input type="time" />
5656 TIME_SECONDS: 'HH:mm:ss', // <input type="time" step="1" />
5657 TIME_MS: 'HH:mm:ss.SSS', // <input type="time" step="0.001" />
5658 WEEK: 'GGGG-[W]WW', // <input type="week" />
5659 MONTH: 'YYYY-MM', // <input type="month" />
5660 };
5661
5662 //! moment.js locale configuration
5663
5664 hooks.defineLocale('af', {
5665 months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(
5666 '_'
5667 ),
5668 monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
5669 weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(
5670 '_'
5671 ),
5672 weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
5673 weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
5674 meridiemParse: /vm|nm/i,
5675 isPM: function (input) {
5676 return /^nm$/i.test(input);
5677 },
5678 meridiem: function (hours, minutes, isLower) {
5679 if (hours < 12) {
5680 return isLower ? 'vm' : 'VM';
5681 } else {
5682 return isLower ? 'nm' : 'NM';
5683 }
5684 },
5685 longDateFormat: {
5686 LT: 'HH:mm',
5687 LTS: 'HH:mm:ss',
5688 L: 'DD/MM/YYYY',
5689 LL: 'D MMMM YYYY',
5690 LLL: 'D MMMM YYYY HH:mm',
5691 LLLL: 'dddd, D MMMM YYYY HH:mm',
5692 },
5693 calendar: {
5694 sameDay: '[Vandag om] LT',
5695 nextDay: '[Môre om] LT',
5696 nextWeek: 'dddd [om] LT',
5697 lastDay: '[Gister om] LT',
5698 lastWeek: '[Laas] dddd [om] LT',
5699 sameElse: 'L',
5700 },
5701 relativeTime: {
5702 future: 'oor %s',
5703 past: '%s gelede',
5704 s: "'n paar sekondes",
5705 ss: '%d sekondes',
5706 m: "'n minuut",
5707 mm: '%d minute',
5708 h: "'n uur",
5709 hh: '%d ure',
5710 d: "'n dag",
5711 dd: '%d dae',
5712 M: "'n maand",
5713 MM: '%d maande',
5714 y: "'n jaar",
5715 yy: '%d jaar',
5716 },
5717 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
5718 ordinal: function (number) {
5719 return (
5720 number +
5721 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
5722 ); // Thanks to Joris Röling : https://github.com/jjupiter
5723 },
5724 week: {
5725 dow: 1, // Maandag is die eerste dag van die week.
5726 doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
5727 },
5728 });
5729
5730 //! moment.js locale configuration
5731
5732 var pluralForm = function (n) {
5733 return n === 0
5734 ? 0
5735 : n === 1
5736 ? 1
5737 : n === 2
5738 ? 2
5739 : n % 100 >= 3 && n % 100 <= 10
5740 ? 3
5741 : n % 100 >= 11
5742 ? 4
5743 : 5;
5744 },
5745 plurals = {
5746 s: [
5747 'أقل من ثانية',
5748 'ثانية واحدة',
5749 ['ثانيتان', 'ثانيتين'],
5750 '%d ثوان',
5751 '%d ثانية',
5752 '%d ثانية',
5753 ],
5754 m: [
5755 'أقل من دقيقة',
5756 'دقيقة واحدة',
5757 ['دقيقتان', 'دقيقتين'],
5758 '%d دقائق',
5759 '%d دقيقة',
5760 '%d دقيقة',
5761 ],
5762 h: [
5763 'أقل من ساعة',
5764 'ساعة واحدة',
5765 ['ساعتان', 'ساعتين'],
5766 '%d ساعات',
5767 '%d ساعة',
5768 '%d ساعة',
5769 ],
5770 d: [
5771 'أقل من يوم',
5772 'يوم واحد',
5773 ['يومان', 'يومين'],
5774 '%d أيام',
5775 '%d يومًا',
5776 '%d يوم',
5777 ],
5778 M: [
5779 'أقل من شهر',
5780 'شهر واحد',
5781 ['شهران', 'شهرين'],
5782 '%d أشهر',
5783 '%d شهرا',
5784 '%d شهر',
5785 ],
5786 y: [
5787 'أقل من عام',
5788 'عام واحد',
5789 ['عامان', 'عامين'],
5790 '%d أعوام',
5791 '%d عامًا',
5792 '%d عام',
5793 ],
5794 },
5795 pluralize = function (u) {
5796 return function (number, withoutSuffix, string, isFuture) {
5797 var f = pluralForm(number),
5798 str = plurals[u][pluralForm(number)];
5799 if (f === 2) {
5800 str = str[withoutSuffix ? 0 : 1];
5801 }
5802 return str.replace(/%d/i, number);
5803 };
5804 },
5805 months$1 = [
5806 'جانفي',
5807 'فيفري',
5808 'مارس',
5809 'أفريل',
5810 'ماي',
5811 'جوان',
5812 'جويلية',
5813 'أوت',
5814 'سبتمبر',
5815 'أكتوبر',
5816 'نوفمبر',
5817 'ديسمبر',
5818 ];
5819
5820 hooks.defineLocale('ar-dz', {
5821 months: months$1,
5822 monthsShort: months$1,
5823 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
5824 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
5825 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
5826 weekdaysParseExact: true,
5827 longDateFormat: {
5828 LT: 'HH:mm',
5829 LTS: 'HH:mm:ss',
5830 L: 'D/\u200FM/\u200FYYYY',
5831 LL: 'D MMMM YYYY',
5832 LLL: 'D MMMM YYYY HH:mm',
5833 LLLL: 'dddd D MMMM YYYY HH:mm',
5834 },
5835 meridiemParse: /ص|م/,
5836 isPM: function (input) {
5837 return 'م' === input;
5838 },
5839 meridiem: function (hour, minute, isLower) {
5840 if (hour < 12) {
5841 return 'ص';
5842 } else {
5843 return 'م';
5844 }
5845 },
5846 calendar: {
5847 sameDay: '[اليوم عند الساعة] LT',
5848 nextDay: '[غدًا عند الساعة] LT',
5849 nextWeek: 'dddd [عند الساعة] LT',
5850 lastDay: '[أمس عند الساعة] LT',
5851 lastWeek: 'dddd [عند الساعة] LT',
5852 sameElse: 'L',
5853 },
5854 relativeTime: {
5855 future: 'بعد %s',
5856 past: 'منذ %s',
5857 s: pluralize('s'),
5858 ss: pluralize('s'),
5859 m: pluralize('m'),
5860 mm: pluralize('m'),
5861 h: pluralize('h'),
5862 hh: pluralize('h'),
5863 d: pluralize('d'),
5864 dd: pluralize('d'),
5865 M: pluralize('M'),
5866 MM: pluralize('M'),
5867 y: pluralize('y'),
5868 yy: pluralize('y'),
5869 },
5870 postformat: function (string) {
5871 return string.replace(/,/g, '،');
5872 },
5873 week: {
5874 dow: 0, // Sunday is the first day of the week.
5875 doy: 4, // The week that contains Jan 4th is the first week of the year.
5876 },
5877 });
5878
5879 //! moment.js locale configuration
5880
5881 hooks.defineLocale('ar-kw', {
5882 months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
5883 '_'
5884 ),
5885 monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
5886 '_'
5887 ),
5888 weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
5889 weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
5890 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
5891 weekdaysParseExact: true,
5892 longDateFormat: {
5893 LT: 'HH:mm',
5894 LTS: 'HH:mm:ss',
5895 L: 'DD/MM/YYYY',
5896 LL: 'D MMMM YYYY',
5897 LLL: 'D MMMM YYYY HH:mm',
5898 LLLL: 'dddd D MMMM YYYY HH:mm',
5899 },
5900 calendar: {
5901 sameDay: '[اليوم على الساعة] LT',
5902 nextDay: '[غدا على الساعة] LT',
5903 nextWeek: 'dddd [على الساعة] LT',
5904 lastDay: '[أمس على الساعة] LT',
5905 lastWeek: 'dddd [على الساعة] LT',
5906 sameElse: 'L',
5907 },
5908 relativeTime: {
5909 future: 'في %s',
5910 past: 'منذ %s',
5911 s: 'ثوان',
5912 ss: '%d ثانية',
5913 m: 'دقيقة',
5914 mm: '%d دقائق',
5915 h: 'ساعة',
5916 hh: '%d ساعات',
5917 d: 'يوم',
5918 dd: '%d أيام',
5919 M: 'شهر',
5920 MM: '%d أشهر',
5921 y: 'سنة',
5922 yy: '%d سنوات',
5923 },
5924 week: {
5925 dow: 0, // Sunday is the first day of the week.
5926 doy: 12, // The week that contains Jan 12th is the first week of the year.
5927 },
5928 });
5929
5930 //! moment.js locale configuration
5931
5932 var symbolMap = {
5933 1: '1',
5934 2: '2',
5935 3: '3',
5936 4: '4',
5937 5: '5',
5938 6: '6',
5939 7: '7',
5940 8: '8',
5941 9: '9',
5942 0: '0',
5943 },
5944 pluralForm$1 = function (n) {
5945 return n === 0
5946 ? 0
5947 : n === 1
5948 ? 1
5949 : n === 2
5950 ? 2
5951 : n % 100 >= 3 && n % 100 <= 10
5952 ? 3
5953 : n % 100 >= 11
5954 ? 4
5955 : 5;
5956 },
5957 plurals$1 = {
5958 s: [
5959 'أقل من ثانية',
5960 'ثانية واحدة',
5961 ['ثانيتان', 'ثانيتين'],
5962 '%d ثوان',
5963 '%d ثانية',
5964 '%d ثانية',
5965 ],
5966 m: [
5967 'أقل من دقيقة',
5968 'دقيقة واحدة',
5969 ['دقيقتان', 'دقيقتين'],
5970 '%d دقائق',
5971 '%d دقيقة',
5972 '%d دقيقة',
5973 ],
5974 h: [
5975 'أقل من ساعة',
5976 'ساعة واحدة',
5977 ['ساعتان', 'ساعتين'],
5978 '%d ساعات',
5979 '%d ساعة',
5980 '%d ساعة',
5981 ],
5982 d: [
5983 'أقل من يوم',
5984 'يوم واحد',
5985 ['يومان', 'يومين'],
5986 '%d أيام',
5987 '%d يومًا',
5988 '%d يوم',
5989 ],
5990 M: [
5991 'أقل من شهر',
5992 'شهر واحد',
5993 ['شهران', 'شهرين'],
5994 '%d أشهر',
5995 '%d شهرا',
5996 '%d شهر',
5997 ],
5998 y: [
5999 'أقل من عام',
6000 'عام واحد',
6001 ['عامان', 'عامين'],
6002 '%d أعوام',
6003 '%d عامًا',
6004 '%d عام',
6005 ],
6006 },
6007 pluralize$1 = function (u) {
6008 return function (number, withoutSuffix, string, isFuture) {
6009 var f = pluralForm$1(number),
6010 str = plurals$1[u][pluralForm$1(number)];
6011 if (f === 2) {
6012 str = str[withoutSuffix ? 0 : 1];
6013 }
6014 return str.replace(/%d/i, number);
6015 };
6016 },
6017 months$2 = [
6018 'يناير',
6019 'فبراير',
6020 'مارس',
6021 'أبريل',
6022 'مايو',
6023 'يونيو',
6024 'يوليو',
6025 'أغسطس',
6026 'سبتمبر',
6027 'أكتوبر',
6028 'نوفمبر',
6029 'ديسمبر',
6030 ];
6031
6032 hooks.defineLocale('ar-ly', {
6033 months: months$2,
6034 monthsShort: months$2,
6035 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6036 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
6037 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6038 weekdaysParseExact: true,
6039 longDateFormat: {
6040 LT: 'HH:mm',
6041 LTS: 'HH:mm:ss',
6042 L: 'D/\u200FM/\u200FYYYY',
6043 LL: 'D MMMM YYYY',
6044 LLL: 'D MMMM YYYY HH:mm',
6045 LLLL: 'dddd D MMMM YYYY HH:mm',
6046 },
6047 meridiemParse: /ص|م/,
6048 isPM: function (input) {
6049 return 'م' === input;
6050 },
6051 meridiem: function (hour, minute, isLower) {
6052 if (hour < 12) {
6053 return 'ص';
6054 } else {
6055 return 'م';
6056 }
6057 },
6058 calendar: {
6059 sameDay: '[اليوم عند الساعة] LT',
6060 nextDay: '[غدًا عند الساعة] LT',
6061 nextWeek: 'dddd [عند الساعة] LT',
6062 lastDay: '[أمس عند الساعة] LT',
6063 lastWeek: 'dddd [عند الساعة] LT',
6064 sameElse: 'L',
6065 },
6066 relativeTime: {
6067 future: 'بعد %s',
6068 past: 'منذ %s',
6069 s: pluralize$1('s'),
6070 ss: pluralize$1('s'),
6071 m: pluralize$1('m'),
6072 mm: pluralize$1('m'),
6073 h: pluralize$1('h'),
6074 hh: pluralize$1('h'),
6075 d: pluralize$1('d'),
6076 dd: pluralize$1('d'),
6077 M: pluralize$1('M'),
6078 MM: pluralize$1('M'),
6079 y: pluralize$1('y'),
6080 yy: pluralize$1('y'),
6081 },
6082 preparse: function (string) {
6083 return string.replace(/،/g, ',');
6084 },
6085 postformat: function (string) {
6086 return string
6087 .replace(/\d/g, function (match) {
6088 return symbolMap[match];
6089 })
6090 .replace(/,/g, '،');
6091 },
6092 week: {
6093 dow: 6, // Saturday is the first day of the week.
6094 doy: 12, // The week that contains Jan 12th is the first week of the year.
6095 },
6096 });
6097
6098 //! moment.js locale configuration
6099
6100 hooks.defineLocale('ar-ma', {
6101 months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
6102 '_'
6103 ),
6104 monthsShort: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(
6105 '_'
6106 ),
6107 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6108 weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
6109 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6110 weekdaysParseExact: true,
6111 longDateFormat: {
6112 LT: 'HH:mm',
6113 LTS: 'HH:mm:ss',
6114 L: 'DD/MM/YYYY',
6115 LL: 'D MMMM YYYY',
6116 LLL: 'D MMMM YYYY HH:mm',
6117 LLLL: 'dddd D MMMM YYYY HH:mm',
6118 },
6119 calendar: {
6120 sameDay: '[اليوم على الساعة] LT',
6121 nextDay: '[غدا على الساعة] LT',
6122 nextWeek: 'dddd [على الساعة] LT',
6123 lastDay: '[أمس على الساعة] LT',
6124 lastWeek: 'dddd [على الساعة] LT',
6125 sameElse: 'L',
6126 },
6127 relativeTime: {
6128 future: 'في %s',
6129 past: 'منذ %s',
6130 s: 'ثوان',
6131 ss: '%d ثانية',
6132 m: 'دقيقة',
6133 mm: '%d دقائق',
6134 h: 'ساعة',
6135 hh: '%d ساعات',
6136 d: 'يوم',
6137 dd: '%d أيام',
6138 M: 'شهر',
6139 MM: '%d أشهر',
6140 y: 'سنة',
6141 yy: '%d سنوات',
6142 },
6143 week: {
6144 dow: 1, // Monday is the first day of the week.
6145 doy: 4, // The week that contains Jan 4th is the first week of the year.
6146 },
6147 });
6148
6149 //! moment.js locale configuration
6150
6151 var symbolMap$1 = {
6152 1: '١',
6153 2: '٢',
6154 3: '٣',
6155 4: '٤',
6156 5: '٥',
6157 6: '٦',
6158 7: '٧',
6159 8: '٨',
6160 9: '٩',
6161 0: '٠',
6162 },
6163 numberMap = {
6164 '١': '1',
6165 '٢': '2',
6166 '٣': '3',
6167 '٤': '4',
6168 '٥': '5',
6169 '٦': '6',
6170 '٧': '7',
6171 '٨': '8',
6172 '٩': '9',
6173 '٠': '0',
6174 };
6175
6176 hooks.defineLocale('ar-sa', {
6177 months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
6178 '_'
6179 ),
6180 monthsShort: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
6181 '_'
6182 ),
6183 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6184 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
6185 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6186 weekdaysParseExact: true,
6187 longDateFormat: {
6188 LT: 'HH:mm',
6189 LTS: 'HH:mm:ss',
6190 L: 'DD/MM/YYYY',
6191 LL: 'D MMMM YYYY',
6192 LLL: 'D MMMM YYYY HH:mm',
6193 LLLL: 'dddd D MMMM YYYY HH:mm',
6194 },
6195 meridiemParse: /ص|م/,
6196 isPM: function (input) {
6197 return 'م' === input;
6198 },
6199 meridiem: function (hour, minute, isLower) {
6200 if (hour < 12) {
6201 return 'ص';
6202 } else {
6203 return 'م';
6204 }
6205 },
6206 calendar: {
6207 sameDay: '[اليوم على الساعة] LT',
6208 nextDay: '[غدا على الساعة] LT',
6209 nextWeek: 'dddd [على الساعة] LT',
6210 lastDay: '[أمس على الساعة] LT',
6211 lastWeek: 'dddd [على الساعة] LT',
6212 sameElse: 'L',
6213 },
6214 relativeTime: {
6215 future: 'في %s',
6216 past: 'منذ %s',
6217 s: 'ثوان',
6218 ss: '%d ثانية',
6219 m: 'دقيقة',
6220 mm: '%d دقائق',
6221 h: 'ساعة',
6222 hh: '%d ساعات',
6223 d: 'يوم',
6224 dd: '%d أيام',
6225 M: 'شهر',
6226 MM: '%d أشهر',
6227 y: 'سنة',
6228 yy: '%d سنوات',
6229 },
6230 preparse: function (string) {
6231 return string
6232 .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
6233 return numberMap[match];
6234 })
6235 .replace(/،/g, ',');
6236 },
6237 postformat: function (string) {
6238 return string
6239 .replace(/\d/g, function (match) {
6240 return symbolMap$1[match];
6241 })
6242 .replace(/,/g, '،');
6243 },
6244 week: {
6245 dow: 0, // Sunday is the first day of the week.
6246 doy: 6, // The week that contains Jan 6th is the first week of the year.
6247 },
6248 });
6249
6250 //! moment.js locale configuration
6251
6252 hooks.defineLocale('ar-tn', {
6253 months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
6254 '_'
6255 ),
6256 monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(
6257 '_'
6258 ),
6259 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6260 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
6261 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6262 weekdaysParseExact: true,
6263 longDateFormat: {
6264 LT: 'HH:mm',
6265 LTS: 'HH:mm:ss',
6266 L: 'DD/MM/YYYY',
6267 LL: 'D MMMM YYYY',
6268 LLL: 'D MMMM YYYY HH:mm',
6269 LLLL: 'dddd D MMMM YYYY HH:mm',
6270 },
6271 calendar: {
6272 sameDay: '[اليوم على الساعة] LT',
6273 nextDay: '[غدا على الساعة] LT',
6274 nextWeek: 'dddd [على الساعة] LT',
6275 lastDay: '[أمس على الساعة] LT',
6276 lastWeek: 'dddd [على الساعة] LT',
6277 sameElse: 'L',
6278 },
6279 relativeTime: {
6280 future: 'في %s',
6281 past: 'منذ %s',
6282 s: 'ثوان',
6283 ss: '%d ثانية',
6284 m: 'دقيقة',
6285 mm: '%d دقائق',
6286 h: 'ساعة',
6287 hh: '%d ساعات',
6288 d: 'يوم',
6289 dd: '%d أيام',
6290 M: 'شهر',
6291 MM: '%d أشهر',
6292 y: 'سنة',
6293 yy: '%d سنوات',
6294 },
6295 week: {
6296 dow: 1, // Monday is the first day of the week.
6297 doy: 4, // The week that contains Jan 4th is the first week of the year.
6298 },
6299 });
6300
6301 //! moment.js locale configuration
6302
6303 var symbolMap$2 = {
6304 1: '١',
6305 2: '٢',
6306 3: '٣',
6307 4: '٤',
6308 5: '٥',
6309 6: '٦',
6310 7: '٧',
6311 8: '٨',
6312 9: '٩',
6313 0: '٠',
6314 },
6315 numberMap$1 = {
6316 '١': '1',
6317 '٢': '2',
6318 '٣': '3',
6319 '٤': '4',
6320 '٥': '5',
6321 '٦': '6',
6322 '٧': '7',
6323 '٨': '8',
6324 '٩': '9',
6325 '٠': '0',
6326 },
6327 pluralForm$2 = function (n) {
6328 return n === 0
6329 ? 0
6330 : n === 1
6331 ? 1
6332 : n === 2
6333 ? 2
6334 : n % 100 >= 3 && n % 100 <= 10
6335 ? 3
6336 : n % 100 >= 11
6337 ? 4
6338 : 5;
6339 },
6340 plurals$2 = {
6341 s: [
6342 'أقل من ثانية',
6343 'ثانية واحدة',
6344 ['ثانيتان', 'ثانيتين'],
6345 '%d ثوان',
6346 '%d ثانية',
6347 '%d ثانية',
6348 ],
6349 m: [
6350 'أقل من دقيقة',
6351 'دقيقة واحدة',
6352 ['دقيقتان', 'دقيقتين'],
6353 '%d دقائق',
6354 '%d دقيقة',
6355 '%d دقيقة',
6356 ],
6357 h: [
6358 'أقل من ساعة',
6359 'ساعة واحدة',
6360 ['ساعتان', 'ساعتين'],
6361 '%d ساعات',
6362 '%d ساعة',
6363 '%d ساعة',
6364 ],
6365 d: [
6366 'أقل من يوم',
6367 'يوم واحد',
6368 ['يومان', 'يومين'],
6369 '%d أيام',
6370 '%d يومًا',
6371 '%d يوم',
6372 ],
6373 M: [
6374 'أقل من شهر',
6375 'شهر واحد',
6376 ['شهران', 'شهرين'],
6377 '%d أشهر',
6378 '%d شهرا',
6379 '%d شهر',
6380 ],
6381 y: [
6382 'أقل من عام',
6383 'عام واحد',
6384 ['عامان', 'عامين'],
6385 '%d أعوام',
6386 '%d عامًا',
6387 '%d عام',
6388 ],
6389 },
6390 pluralize$2 = function (u) {
6391 return function (number, withoutSuffix, string, isFuture) {
6392 var f = pluralForm$2(number),
6393 str = plurals$2[u][pluralForm$2(number)];
6394 if (f === 2) {
6395 str = str[withoutSuffix ? 0 : 1];
6396 }
6397 return str.replace(/%d/i, number);
6398 };
6399 },
6400 months$3 = [
6401 'يناير',
6402 'فبراير',
6403 'مارس',
6404 'أبريل',
6405 'مايو',
6406 'يونيو',
6407 'يوليو',
6408 'أغسطس',
6409 'سبتمبر',
6410 'أكتوبر',
6411 'نوفمبر',
6412 'ديسمبر',
6413 ];
6414
6415 hooks.defineLocale('ar', {
6416 months: months$3,
6417 monthsShort: months$3,
6418 weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
6419 weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
6420 weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
6421 weekdaysParseExact: true,
6422 longDateFormat: {
6423 LT: 'HH:mm',
6424 LTS: 'HH:mm:ss',
6425 L: 'D/\u200FM/\u200FYYYY',
6426 LL: 'D MMMM YYYY',
6427 LLL: 'D MMMM YYYY HH:mm',
6428 LLLL: 'dddd D MMMM YYYY HH:mm',
6429 },
6430 meridiemParse: /ص|م/,
6431 isPM: function (input) {
6432 return 'م' === input;
6433 },
6434 meridiem: function (hour, minute, isLower) {
6435 if (hour < 12) {
6436 return 'ص';
6437 } else {
6438 return 'م';
6439 }
6440 },
6441 calendar: {
6442 sameDay: '[اليوم عند الساعة] LT',
6443 nextDay: '[غدًا عند الساعة] LT',
6444 nextWeek: 'dddd [عند الساعة] LT',
6445 lastDay: '[أمس عند الساعة] LT',
6446 lastWeek: 'dddd [عند الساعة] LT',
6447 sameElse: 'L',
6448 },
6449 relativeTime: {
6450 future: 'بعد %s',
6451 past: 'منذ %s',
6452 s: pluralize$2('s'),
6453 ss: pluralize$2('s'),
6454 m: pluralize$2('m'),
6455 mm: pluralize$2('m'),
6456 h: pluralize$2('h'),
6457 hh: pluralize$2('h'),
6458 d: pluralize$2('d'),
6459 dd: pluralize$2('d'),
6460 M: pluralize$2('M'),
6461 MM: pluralize$2('M'),
6462 y: pluralize$2('y'),
6463 yy: pluralize$2('y'),
6464 },
6465 preparse: function (string) {
6466 return string
6467 .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
6468 return numberMap$1[match];
6469 })
6470 .replace(/،/g, ',');
6471 },
6472 postformat: function (string) {
6473 return string
6474 .replace(/\d/g, function (match) {
6475 return symbolMap$2[match];
6476 })
6477 .replace(/,/g, '،');
6478 },
6479 week: {
6480 dow: 6, // Saturday is the first day of the week.
6481 doy: 12, // The week that contains Jan 12th is the first week of the year.
6482 },
6483 });
6484
6485 //! moment.js locale configuration
6486
6487 var suffixes = {
6488 1: '-inci',
6489 5: '-inci',
6490 8: '-inci',
6491 70: '-inci',
6492 80: '-inci',
6493 2: '-nci',
6494 7: '-nci',
6495 20: '-nci',
6496 50: '-nci',
6497 3: '-üncü',
6498 4: '-üncü',
6499 100: '-üncü',
6500 6: '-ncı',
6501 9: '-uncu',
6502 10: '-uncu',
6503 30: '-uncu',
6504 60: '-ıncı',
6505 90: '-ıncı',
6506 };
6507
6508 hooks.defineLocale('az', {
6509 months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(
6510 '_'
6511 ),
6512 monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
6513 weekdays: 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(
6514 '_'
6515 ),
6516 weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
6517 weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
6518 weekdaysParseExact: true,
6519 longDateFormat: {
6520 LT: 'HH:mm',
6521 LTS: 'HH:mm:ss',
6522 L: 'DD.MM.YYYY',
6523 LL: 'D MMMM YYYY',
6524 LLL: 'D MMMM YYYY HH:mm',
6525 LLLL: 'dddd, D MMMM YYYY HH:mm',
6526 },
6527 calendar: {
6528 sameDay: '[bugün saat] LT',
6529 nextDay: '[sabah saat] LT',
6530 nextWeek: '[gələn həftə] dddd [saat] LT',
6531 lastDay: '[dünən] LT',
6532 lastWeek: '[keçən həftə] dddd [saat] LT',
6533 sameElse: 'L',
6534 },
6535 relativeTime: {
6536 future: '%s sonra',
6537 past: '%s əvvəl',
6538 s: 'bir neçə saniyə',
6539 ss: '%d saniyə',
6540 m: 'bir dəqiqə',
6541 mm: '%d dəqiqə',
6542 h: 'bir saat',
6543 hh: '%d saat',
6544 d: 'bir gün',
6545 dd: '%d gün',
6546 M: 'bir ay',
6547 MM: '%d ay',
6548 y: 'bir il',
6549 yy: '%d il',
6550 },
6551 meridiemParse: /gecə|səhər|gündüz|axşam/,
6552 isPM: function (input) {
6553 return /^(gündüz|axşam)$/.test(input);
6554 },
6555 meridiem: function (hour, minute, isLower) {
6556 if (hour < 4) {
6557 return 'gecə';
6558 } else if (hour < 12) {
6559 return 'səhər';
6560 } else if (hour < 17) {
6561 return 'gündüz';
6562 } else {
6563 return 'axşam';
6564 }
6565 },
6566 dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
6567 ordinal: function (number) {
6568 if (number === 0) {
6569 // special case for zero
6570 return number + '-ıncı';
6571 }
6572 var a = number % 10,
6573 b = (number % 100) - a,
6574 c = number >= 100 ? 100 : null;
6575 return number + (suffixes[a] || suffixes[b] || suffixes[c]);
6576 },
6577 week: {
6578 dow: 1, // Monday is the first day of the week.
6579 doy: 7, // The week that contains Jan 7th is the first week of the year.
6580 },
6581 });
6582
6583 //! moment.js locale configuration
6584
6585 function plural(word, num) {
6586 var forms = word.split('_');
6587 return num % 10 === 1 && num % 100 !== 11
6588 ? forms[0]
6589 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
6590 ? forms[1]
6591 : forms[2];
6592 }
6593 function relativeTimeWithPlural(number, withoutSuffix, key) {
6594 var format = {
6595 ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
6596 mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
6597 hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
6598 dd: 'дзень_дні_дзён',
6599 MM: 'месяц_месяцы_месяцаў',
6600 yy: 'год_гады_гадоў',
6601 };
6602 if (key === 'm') {
6603 return withoutSuffix ? 'хвіліна' : 'хвіліну';
6604 } else if (key === 'h') {
6605 return withoutSuffix ? 'гадзіна' : 'гадзіну';
6606 } else {
6607 return number + ' ' + plural(format[key], +number);
6608 }
6609 }
6610
6611 hooks.defineLocale('be', {
6612 months: {
6613 format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(
6614 '_'
6615 ),
6616 standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(
6617 '_'
6618 ),
6619 },
6620 monthsShort: 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split(
6621 '_'
6622 ),
6623 weekdays: {
6624 format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(
6625 '_'
6626 ),
6627 standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(
6628 '_'
6629 ),
6630 isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/,
6631 },
6632 weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
6633 weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
6634 longDateFormat: {
6635 LT: 'HH:mm',
6636 LTS: 'HH:mm:ss',
6637 L: 'DD.MM.YYYY',
6638 LL: 'D MMMM YYYY г.',
6639 LLL: 'D MMMM YYYY г., HH:mm',
6640 LLLL: 'dddd, D MMMM YYYY г., HH:mm',
6641 },
6642 calendar: {
6643 sameDay: '[Сёння ў] LT',
6644 nextDay: '[Заўтра ў] LT',
6645 lastDay: '[Учора ў] LT',
6646 nextWeek: function () {
6647 return '[У] dddd [ў] LT';
6648 },
6649 lastWeek: function () {
6650 switch (this.day()) {
6651 case 0:
6652 case 3:
6653 case 5:
6654 case 6:
6655 return '[У мінулую] dddd [ў] LT';
6656 case 1:
6657 case 2:
6658 case 4:
6659 return '[У мінулы] dddd [ў] LT';
6660 }
6661 },
6662 sameElse: 'L',
6663 },
6664 relativeTime: {
6665 future: 'праз %s',
6666 past: '%s таму',
6667 s: 'некалькі секунд',
6668 m: relativeTimeWithPlural,
6669 mm: relativeTimeWithPlural,
6670 h: relativeTimeWithPlural,
6671 hh: relativeTimeWithPlural,
6672 d: 'дзень',
6673 dd: relativeTimeWithPlural,
6674 M: 'месяц',
6675 MM: relativeTimeWithPlural,
6676 y: 'год',
6677 yy: relativeTimeWithPlural,
6678 },
6679 meridiemParse: /ночы|раніцы|дня|вечара/,
6680 isPM: function (input) {
6681 return /^(дня|вечара)$/.test(input);
6682 },
6683 meridiem: function (hour, minute, isLower) {
6684 if (hour < 4) {
6685 return 'ночы';
6686 } else if (hour < 12) {
6687 return 'раніцы';
6688 } else if (hour < 17) {
6689 return 'дня';
6690 } else {
6691 return 'вечара';
6692 }
6693 },
6694 dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
6695 ordinal: function (number, period) {
6696 switch (period) {
6697 case 'M':
6698 case 'd':
6699 case 'DDD':
6700 case 'w':
6701 case 'W':
6702 return (number % 10 === 2 || number % 10 === 3) &&
6703 number % 100 !== 12 &&
6704 number % 100 !== 13
6705 ? number + '-і'
6706 : number + '-ы';
6707 case 'D':
6708 return number + '-га';
6709 default:
6710 return number;
6711 }
6712 },
6713 week: {
6714 dow: 1, // Monday is the first day of the week.
6715 doy: 7, // The week that contains Jan 7th is the first week of the year.
6716 },
6717 });
6718
6719 //! moment.js locale configuration
6720
6721 hooks.defineLocale('bg', {
6722 months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(
6723 '_'
6724 ),
6725 monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
6726 weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(
6727 '_'
6728 ),
6729 weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
6730 weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
6731 longDateFormat: {
6732 LT: 'H:mm',
6733 LTS: 'H:mm:ss',
6734 L: 'D.MM.YYYY',
6735 LL: 'D MMMM YYYY',
6736 LLL: 'D MMMM YYYY H:mm',
6737 LLLL: 'dddd, D MMMM YYYY H:mm',
6738 },
6739 calendar: {
6740 sameDay: '[Днес в] LT',
6741 nextDay: '[Утре в] LT',
6742 nextWeek: 'dddd [в] LT',
6743 lastDay: '[Вчера в] LT',
6744 lastWeek: function () {
6745 switch (this.day()) {
6746 case 0:
6747 case 3:
6748 case 6:
6749 return '[Миналата] dddd [в] LT';
6750 case 1:
6751 case 2:
6752 case 4:
6753 case 5:
6754 return '[Миналия] dddd [в] LT';
6755 }
6756 },
6757 sameElse: 'L',
6758 },
6759 relativeTime: {
6760 future: 'след %s',
6761 past: 'преди %s',
6762 s: 'няколко секунди',
6763 ss: '%d секунди',
6764 m: 'минута',
6765 mm: '%d минути',
6766 h: 'час',
6767 hh: '%d часа',
6768 d: 'ден',
6769 dd: '%d дена',
6770 w: 'седмица',
6771 ww: '%d седмици',
6772 M: 'месец',
6773 MM: '%d месеца',
6774 y: 'година',
6775 yy: '%d години',
6776 },
6777 dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
6778 ordinal: function (number) {
6779 var lastDigit = number % 10,
6780 last2Digits = number % 100;
6781 if (number === 0) {
6782 return number + '-ев';
6783 } else if (last2Digits === 0) {
6784 return number + '-ен';
6785 } else if (last2Digits > 10 && last2Digits < 20) {
6786 return number + '-ти';
6787 } else if (lastDigit === 1) {
6788 return number + '-ви';
6789 } else if (lastDigit === 2) {
6790 return number + '-ри';
6791 } else if (lastDigit === 7 || lastDigit === 8) {
6792 return number + '-ми';
6793 } else {
6794 return number + '-ти';
6795 }
6796 },
6797 week: {
6798 dow: 1, // Monday is the first day of the week.
6799 doy: 7, // The week that contains Jan 7th is the first week of the year.
6800 },
6801 });
6802
6803 //! moment.js locale configuration
6804
6805 hooks.defineLocale('bm', {
6806 months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(
6807 '_'
6808 ),
6809 monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
6810 weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
6811 weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
6812 weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
6813 longDateFormat: {
6814 LT: 'HH:mm',
6815 LTS: 'HH:mm:ss',
6816 L: 'DD/MM/YYYY',
6817 LL: 'MMMM [tile] D [san] YYYY',
6818 LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
6819 LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
6820 },
6821 calendar: {
6822 sameDay: '[Bi lɛrɛ] LT',
6823 nextDay: '[Sini lɛrɛ] LT',
6824 nextWeek: 'dddd [don lɛrɛ] LT',
6825 lastDay: '[Kunu lɛrɛ] LT',
6826 lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',
6827 sameElse: 'L',
6828 },
6829 relativeTime: {
6830 future: '%s kɔnɔ',
6831 past: 'a bɛ %s bɔ',
6832 s: 'sanga dama dama',
6833 ss: 'sekondi %d',
6834 m: 'miniti kelen',
6835 mm: 'miniti %d',
6836 h: 'lɛrɛ kelen',
6837 hh: 'lɛrɛ %d',
6838 d: 'tile kelen',
6839 dd: 'tile %d',
6840 M: 'kalo kelen',
6841 MM: 'kalo %d',
6842 y: 'san kelen',
6843 yy: 'san %d',
6844 },
6845 week: {
6846 dow: 1, // Monday is the first day of the week.
6847 doy: 4, // The week that contains Jan 4th is the first week of the year.
6848 },
6849 });
6850
6851 //! moment.js locale configuration
6852
6853 var symbolMap$3 = {
6854 1: '১',
6855 2: '২',
6856 3: '৩',
6857 4: '৪',
6858 5: '৫',
6859 6: '৬',
6860 7: '৭',
6861 8: '৮',
6862 9: '৯',
6863 0: '০',
6864 },
6865 numberMap$2 = {
6866 '১': '1',
6867 '২': '2',
6868 '৩': '3',
6869 '৪': '4',
6870 '৫': '5',
6871 '৬': '6',
6872 '৭': '7',
6873 '৮': '8',
6874 '৯': '9',
6875 '০': '0',
6876 };
6877
6878 hooks.defineLocale('bn-bd', {
6879 months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
6880 '_'
6881 ),
6882 monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
6883 '_'
6884 ),
6885 weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
6886 '_'
6887 ),
6888 weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
6889 weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
6890 longDateFormat: {
6891 LT: 'A h:mm সময়',
6892 LTS: 'A h:mm:ss সময়',
6893 L: 'DD/MM/YYYY',
6894 LL: 'D MMMM YYYY',
6895 LLL: 'D MMMM YYYY, A h:mm সময়',
6896 LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
6897 },
6898 calendar: {
6899 sameDay: '[আজ] LT',
6900 nextDay: '[আগামীকাল] LT',
6901 nextWeek: 'dddd, LT',
6902 lastDay: '[গতকাল] LT',
6903 lastWeek: '[গত] dddd, LT',
6904 sameElse: 'L',
6905 },
6906 relativeTime: {
6907 future: '%s পরে',
6908 past: '%s আগে',
6909 s: 'কয়েক সেকেন্ড',
6910 ss: '%d সেকেন্ড',
6911 m: 'এক মিনিট',
6912 mm: '%d মিনিট',
6913 h: 'এক ঘন্টা',
6914 hh: '%d ঘন্টা',
6915 d: 'এক দিন',
6916 dd: '%d দিন',
6917 M: 'এক মাস',
6918 MM: '%d মাস',
6919 y: 'এক বছর',
6920 yy: '%d বছর',
6921 },
6922 preparse: function (string) {
6923 return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
6924 return numberMap$2[match];
6925 });
6926 },
6927 postformat: function (string) {
6928 return string.replace(/\d/g, function (match) {
6929 return symbolMap$3[match];
6930 });
6931 },
6932
6933 meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,
6934 meridiemHour: function (hour, meridiem) {
6935 if (hour === 12) {
6936 hour = 0;
6937 }
6938 if (meridiem === 'রাত') {
6939 return hour < 4 ? hour : hour + 12;
6940 } else if (meridiem === 'ভোর') {
6941 return hour;
6942 } else if (meridiem === 'সকাল') {
6943 return hour;
6944 } else if (meridiem === 'দুপুর') {
6945 return hour >= 3 ? hour : hour + 12;
6946 } else if (meridiem === 'বিকাল') {
6947 return hour + 12;
6948 } else if (meridiem === 'সন্ধ্যা') {
6949 return hour + 12;
6950 }
6951 },
6952
6953 meridiem: function (hour, minute, isLower) {
6954 if (hour < 4) {
6955 return 'রাত';
6956 } else if (hour < 6) {
6957 return 'ভোর';
6958 } else if (hour < 12) {
6959 return 'সকাল';
6960 } else if (hour < 15) {
6961 return 'দুপুর';
6962 } else if (hour < 18) {
6963 return 'বিকাল';
6964 } else if (hour < 20) {
6965 return 'সন্ধ্যা';
6966 } else {
6967 return 'রাত';
6968 }
6969 },
6970 week: {
6971 dow: 0, // Sunday is the first day of the week.
6972 doy: 6, // The week that contains Jan 6th is the first week of the year.
6973 },
6974 });
6975
6976 //! moment.js locale configuration
6977
6978 var symbolMap$4 = {
6979 1: '১',
6980 2: '২',
6981 3: '৩',
6982 4: '৪',
6983 5: '৫',
6984 6: '৬',
6985 7: '৭',
6986 8: '৮',
6987 9: '৯',
6988 0: '০',
6989 },
6990 numberMap$3 = {
6991 '১': '1',
6992 '২': '2',
6993 '৩': '3',
6994 '৪': '4',
6995 '৫': '5',
6996 '৬': '6',
6997 '৭': '7',
6998 '৮': '8',
6999 '৯': '9',
7000 '০': '0',
7001 };
7002
7003 hooks.defineLocale('bn', {
7004 months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(
7005 '_'
7006 ),
7007 monthsShort: 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(
7008 '_'
7009 ),
7010 weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(
7011 '_'
7012 ),
7013 weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
7014 weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),
7015 longDateFormat: {
7016 LT: 'A h:mm সময়',
7017 LTS: 'A h:mm:ss সময়',
7018 L: 'DD/MM/YYYY',
7019 LL: 'D MMMM YYYY',
7020 LLL: 'D MMMM YYYY, A h:mm সময়',
7021 LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',
7022 },
7023 calendar: {
7024 sameDay: '[আজ] LT',
7025 nextDay: '[আগামীকাল] LT',
7026 nextWeek: 'dddd, LT',
7027 lastDay: '[গতকাল] LT',
7028 lastWeek: '[গত] dddd, LT',
7029 sameElse: 'L',
7030 },
7031 relativeTime: {
7032 future: '%s পরে',
7033 past: '%s আগে',
7034 s: 'কয়েক সেকেন্ড',
7035 ss: '%d সেকেন্ড',
7036 m: 'এক মিনিট',
7037 mm: '%d মিনিট',
7038 h: 'এক ঘন্টা',
7039 hh: '%d ঘন্টা',
7040 d: 'এক দিন',
7041 dd: '%d দিন',
7042 M: 'এক মাস',
7043 MM: '%d মাস',
7044 y: 'এক বছর',
7045 yy: '%d বছর',
7046 },
7047 preparse: function (string) {
7048 return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
7049 return numberMap$3[match];
7050 });
7051 },
7052 postformat: function (string) {
7053 return string.replace(/\d/g, function (match) {
7054 return symbolMap$4[match];
7055 });
7056 },
7057 meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
7058 meridiemHour: function (hour, meridiem) {
7059 if (hour === 12) {
7060 hour = 0;
7061 }
7062 if (
7063 (meridiem === 'রাত' && hour >= 4) ||
7064 (meridiem === 'দুপুর' && hour < 5) ||
7065 meridiem === 'বিকাল'
7066 ) {
7067 return hour + 12;
7068 } else {
7069 return hour;
7070 }
7071 },
7072 meridiem: function (hour, minute, isLower) {
7073 if (hour < 4) {
7074 return 'রাত';
7075 } else if (hour < 10) {
7076 return 'সকাল';
7077 } else if (hour < 17) {
7078 return 'দুপুর';
7079 } else if (hour < 20) {
7080 return 'বিকাল';
7081 } else {
7082 return 'রাত';
7083 }
7084 },
7085 week: {
7086 dow: 0, // Sunday is the first day of the week.
7087 doy: 6, // The week that contains Jan 6th is the first week of the year.
7088 },
7089 });
7090
7091 //! moment.js locale configuration
7092
7093 var symbolMap$5 = {
7094 1: '༡',
7095 2: '༢',
7096 3: '༣',
7097 4: '༤',
7098 5: '༥',
7099 6: '༦',
7100 7: '༧',
7101 8: '༨',
7102 9: '༩',
7103 0: '༠',
7104 },
7105 numberMap$4 = {
7106 '༡': '1',
7107 '༢': '2',
7108 '༣': '3',
7109 '༤': '4',
7110 '༥': '5',
7111 '༦': '6',
7112 '༧': '7',
7113 '༨': '8',
7114 '༩': '9',
7115 '༠': '0',
7116 };
7117
7118 hooks.defineLocale('bo', {
7119 months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(
7120 '_'
7121 ),
7122 monthsShort: 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(
7123 '_'
7124 ),
7125 monthsShortRegex: /^(ཟླ་\d{1,2})/,
7126 monthsParseExact: true,
7127 weekdays: 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(
7128 '_'
7129 ),
7130 weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(
7131 '_'
7132 ),
7133 weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),
7134 longDateFormat: {
7135 LT: 'A h:mm',
7136 LTS: 'A h:mm:ss',
7137 L: 'DD/MM/YYYY',
7138 LL: 'D MMMM YYYY',
7139 LLL: 'D MMMM YYYY, A h:mm',
7140 LLLL: 'dddd, D MMMM YYYY, A h:mm',
7141 },
7142 calendar: {
7143 sameDay: '[དི་རིང] LT',
7144 nextDay: '[སང་ཉིན] LT',
7145 nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',
7146 lastDay: '[ཁ་སང] LT',
7147 lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
7148 sameElse: 'L',
7149 },
7150 relativeTime: {
7151 future: '%s ལ་',
7152 past: '%s སྔན་ལ',
7153 s: 'ལམ་སང',
7154 ss: '%d སྐར་ཆ།',
7155 m: 'སྐར་མ་གཅིག',
7156 mm: '%d སྐར་མ',
7157 h: 'ཆུ་ཚོད་གཅིག',
7158 hh: '%d ཆུ་ཚོད',
7159 d: 'ཉིན་གཅིག',
7160 dd: '%d ཉིན་',
7161 M: 'ཟླ་བ་གཅིག',
7162 MM: '%d ཟླ་བ',
7163 y: 'ལོ་གཅིག',
7164 yy: '%d ལོ',
7165 },
7166 preparse: function (string) {
7167 return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
7168 return numberMap$4[match];
7169 });
7170 },
7171 postformat: function (string) {
7172 return string.replace(/\d/g, function (match) {
7173 return symbolMap$5[match];
7174 });
7175 },
7176 meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
7177 meridiemHour: function (hour, meridiem) {
7178 if (hour === 12) {
7179 hour = 0;
7180 }
7181 if (
7182 (meridiem === 'མཚན་མོ' && hour >= 4) ||
7183 (meridiem === 'ཉིན་གུང' && hour < 5) ||
7184 meridiem === 'དགོང་དག'
7185 ) {
7186 return hour + 12;
7187 } else {
7188 return hour;
7189 }
7190 },
7191 meridiem: function (hour, minute, isLower) {
7192 if (hour < 4) {
7193 return 'མཚན་མོ';
7194 } else if (hour < 10) {
7195 return 'ཞོགས་ཀས';
7196 } else if (hour < 17) {
7197 return 'ཉིན་གུང';
7198 } else if (hour < 20) {
7199 return 'དགོང་དག';
7200 } else {
7201 return 'མཚན་མོ';
7202 }
7203 },
7204 week: {
7205 dow: 0, // Sunday is the first day of the week.
7206 doy: 6, // The week that contains Jan 6th is the first week of the year.
7207 },
7208 });
7209
7210 //! moment.js locale configuration
7211
7212 function relativeTimeWithMutation(number, withoutSuffix, key) {
7213 var format = {
7214 mm: 'munutenn',
7215 MM: 'miz',
7216 dd: 'devezh',
7217 };
7218 return number + ' ' + mutation(format[key], number);
7219 }
7220 function specialMutationForYears(number) {
7221 switch (lastNumber(number)) {
7222 case 1:
7223 case 3:
7224 case 4:
7225 case 5:
7226 case 9:
7227 return number + ' bloaz';
7228 default:
7229 return number + ' vloaz';
7230 }
7231 }
7232 function lastNumber(number) {
7233 if (number > 9) {
7234 return lastNumber(number % 10);
7235 }
7236 return number;
7237 }
7238 function mutation(text, number) {
7239 if (number === 2) {
7240 return softMutation(text);
7241 }
7242 return text;
7243 }
7244 function softMutation(text) {
7245 var mutationTable = {
7246 m: 'v',
7247 b: 'v',
7248 d: 'z',
7249 };
7250 if (mutationTable[text.charAt(0)] === undefined) {
7251 return text;
7252 }
7253 return mutationTable[text.charAt(0)] + text.substring(1);
7254 }
7255
7256 var monthsParse = [
7257 /^gen/i,
7258 /^c[ʼ\']hwe/i,
7259 /^meu/i,
7260 /^ebr/i,
7261 /^mae/i,
7262 /^(mez|eve)/i,
7263 /^gou/i,
7264 /^eos/i,
7265 /^gwe/i,
7266 /^her/i,
7267 /^du/i,
7268 /^ker/i,
7269 ],
7270 monthsRegex$1 = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
7271 monthsStrictRegex = /^(genver|c[ʼ\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,
7272 monthsShortStrictRegex = /^(gen|c[ʼ\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,
7273 fullWeekdaysParse = [
7274 /^sul/i,
7275 /^lun/i,
7276 /^meurzh/i,
7277 /^merc[ʼ\']her/i,
7278 /^yaou/i,
7279 /^gwener/i,
7280 /^sadorn/i,
7281 ],
7282 shortWeekdaysParse = [
7283 /^Sul/i,
7284 /^Lun/i,
7285 /^Meu/i,
7286 /^Mer/i,
7287 /^Yao/i,
7288 /^Gwe/i,
7289 /^Sad/i,
7290 ],
7291 minWeekdaysParse = [
7292 /^Su/i,
7293 /^Lu/i,
7294 /^Me([^r]|$)/i,
7295 /^Mer/i,
7296 /^Ya/i,
7297 /^Gw/i,
7298 /^Sa/i,
7299 ];
7300
7301 hooks.defineLocale('br', {
7302 months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(
7303 '_'
7304 ),
7305 monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
7306 weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),
7307 weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
7308 weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
7309 weekdaysParse: minWeekdaysParse,
7310 fullWeekdaysParse: fullWeekdaysParse,
7311 shortWeekdaysParse: shortWeekdaysParse,
7312 minWeekdaysParse: minWeekdaysParse,
7313
7314 monthsRegex: monthsRegex$1,
7315 monthsShortRegex: monthsRegex$1,
7316 monthsStrictRegex: monthsStrictRegex,
7317 monthsShortStrictRegex: monthsShortStrictRegex,
7318 monthsParse: monthsParse,
7319 longMonthsParse: monthsParse,
7320 shortMonthsParse: monthsParse,
7321
7322 longDateFormat: {
7323 LT: 'HH:mm',
7324 LTS: 'HH:mm:ss',
7325 L: 'DD/MM/YYYY',
7326 LL: 'D [a viz] MMMM YYYY',
7327 LLL: 'D [a viz] MMMM YYYY HH:mm',
7328 LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',
7329 },
7330 calendar: {
7331 sameDay: '[Hiziv da] LT',
7332 nextDay: '[Warcʼhoazh da] LT',
7333 nextWeek: 'dddd [da] LT',
7334 lastDay: '[Decʼh da] LT',
7335 lastWeek: 'dddd [paset da] LT',
7336 sameElse: 'L',
7337 },
7338 relativeTime: {
7339 future: 'a-benn %s',
7340 past: '%s ʼzo',
7341 s: 'un nebeud segondennoù',
7342 ss: '%d eilenn',
7343 m: 'ur vunutenn',
7344 mm: relativeTimeWithMutation,
7345 h: 'un eur',
7346 hh: '%d eur',
7347 d: 'un devezh',
7348 dd: relativeTimeWithMutation,
7349 M: 'ur miz',
7350 MM: relativeTimeWithMutation,
7351 y: 'ur bloaz',
7352 yy: specialMutationForYears,
7353 },
7354 dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
7355 ordinal: function (number) {
7356 var output = number === 1 ? 'añ' : 'vet';
7357 return number + output;
7358 },
7359 week: {
7360 dow: 1, // Monday is the first day of the week.
7361 doy: 4, // The week that contains Jan 4th is the first week of the year.
7362 },
7363 meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn
7364 isPM: function (token) {
7365 return token === 'g.m.';
7366 },
7367 meridiem: function (hour, minute, isLower) {
7368 return hour < 12 ? 'a.m.' : 'g.m.';
7369 },
7370 });
7371
7372 //! moment.js locale configuration
7373
7374 function translate(number, withoutSuffix, key) {
7375 var result = number + ' ';
7376 switch (key) {
7377 case 'ss':
7378 if (number === 1) {
7379 result += 'sekunda';
7380 } else if (number === 2 || number === 3 || number === 4) {
7381 result += 'sekunde';
7382 } else {
7383 result += 'sekundi';
7384 }
7385 return result;
7386 case 'm':
7387 return withoutSuffix ? 'jedna minuta' : 'jedne minute';
7388 case 'mm':
7389 if (number === 1) {
7390 result += 'minuta';
7391 } else if (number === 2 || number === 3 || number === 4) {
7392 result += 'minute';
7393 } else {
7394 result += 'minuta';
7395 }
7396 return result;
7397 case 'h':
7398 return withoutSuffix ? 'jedan sat' : 'jednog sata';
7399 case 'hh':
7400 if (number === 1) {
7401 result += 'sat';
7402 } else if (number === 2 || number === 3 || number === 4) {
7403 result += 'sata';
7404 } else {
7405 result += 'sati';
7406 }
7407 return result;
7408 case 'dd':
7409 if (number === 1) {
7410 result += 'dan';
7411 } else {
7412 result += 'dana';
7413 }
7414 return result;
7415 case 'MM':
7416 if (number === 1) {
7417 result += 'mjesec';
7418 } else if (number === 2 || number === 3 || number === 4) {
7419 result += 'mjeseca';
7420 } else {
7421 result += 'mjeseci';
7422 }
7423 return result;
7424 case 'yy':
7425 if (number === 1) {
7426 result += 'godina';
7427 } else if (number === 2 || number === 3 || number === 4) {
7428 result += 'godine';
7429 } else {
7430 result += 'godina';
7431 }
7432 return result;
7433 }
7434 }
7435
7436 hooks.defineLocale('bs', {
7437 months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(
7438 '_'
7439 ),
7440 monthsShort: 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(
7441 '_'
7442 ),
7443 monthsParseExact: true,
7444 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
7445 '_'
7446 ),
7447 weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
7448 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
7449 weekdaysParseExact: true,
7450 longDateFormat: {
7451 LT: 'H:mm',
7452 LTS: 'H:mm:ss',
7453 L: 'DD.MM.YYYY',
7454 LL: 'D. MMMM YYYY',
7455 LLL: 'D. MMMM YYYY H:mm',
7456 LLLL: 'dddd, D. MMMM YYYY H:mm',
7457 },
7458 calendar: {
7459 sameDay: '[danas u] LT',
7460 nextDay: '[sutra u] LT',
7461 nextWeek: function () {
7462 switch (this.day()) {
7463 case 0:
7464 return '[u] [nedjelju] [u] LT';
7465 case 3:
7466 return '[u] [srijedu] [u] LT';
7467 case 6:
7468 return '[u] [subotu] [u] LT';
7469 case 1:
7470 case 2:
7471 case 4:
7472 case 5:
7473 return '[u] dddd [u] LT';
7474 }
7475 },
7476 lastDay: '[jučer u] LT',
7477 lastWeek: function () {
7478 switch (this.day()) {
7479 case 0:
7480 case 3:
7481 return '[prošlu] dddd [u] LT';
7482 case 6:
7483 return '[prošle] [subote] [u] LT';
7484 case 1:
7485 case 2:
7486 case 4:
7487 case 5:
7488 return '[prošli] dddd [u] LT';
7489 }
7490 },
7491 sameElse: 'L',
7492 },
7493 relativeTime: {
7494 future: 'za %s',
7495 past: 'prije %s',
7496 s: 'par sekundi',
7497 ss: translate,
7498 m: translate,
7499 mm: translate,
7500 h: translate,
7501 hh: translate,
7502 d: 'dan',
7503 dd: translate,
7504 M: 'mjesec',
7505 MM: translate,
7506 y: 'godinu',
7507 yy: translate,
7508 },
7509 dayOfMonthOrdinalParse: /\d{1,2}\./,
7510 ordinal: '%d.',
7511 week: {
7512 dow: 1, // Monday is the first day of the week.
7513 doy: 7, // The week that contains Jan 7th is the first week of the year.
7514 },
7515 });
7516
7517 //! moment.js locale configuration
7518
7519 hooks.defineLocale('ca', {
7520 months: {
7521 standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(
7522 '_'
7523 ),
7524 format: "de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split(
7525 '_'
7526 ),
7527 isFormat: /D[oD]?(\s)+MMMM/,
7528 },
7529 monthsShort: 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(
7530 '_'
7531 ),
7532 monthsParseExact: true,
7533 weekdays: 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(
7534 '_'
7535 ),
7536 weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
7537 weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
7538 weekdaysParseExact: true,
7539 longDateFormat: {
7540 LT: 'H:mm',
7541 LTS: 'H:mm:ss',
7542 L: 'DD/MM/YYYY',
7543 LL: 'D MMMM [de] YYYY',
7544 ll: 'D MMM YYYY',
7545 LLL: 'D MMMM [de] YYYY [a les] H:mm',
7546 lll: 'D MMM YYYY, H:mm',
7547 LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',
7548 llll: 'ddd D MMM YYYY, H:mm',
7549 },
7550 calendar: {
7551 sameDay: function () {
7552 return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
7553 },
7554 nextDay: function () {
7555 return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
7556 },
7557 nextWeek: function () {
7558 return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
7559 },
7560 lastDay: function () {
7561 return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';
7562 },
7563 lastWeek: function () {
7564 return (
7565 '[el] dddd [passat a ' +
7566 (this.hours() !== 1 ? 'les' : 'la') +
7567 '] LT'
7568 );
7569 },
7570 sameElse: 'L',
7571 },
7572 relativeTime: {
7573 future: "d'aquí %s",
7574 past: 'fa %s',
7575 s: 'uns segons',
7576 ss: '%d segons',
7577 m: 'un minut',
7578 mm: '%d minuts',
7579 h: 'una hora',
7580 hh: '%d hores',
7581 d: 'un dia',
7582 dd: '%d dies',
7583 M: 'un mes',
7584 MM: '%d mesos',
7585 y: 'un any',
7586 yy: '%d anys',
7587 },
7588 dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
7589 ordinal: function (number, period) {
7590 var output =
7591 number === 1
7592 ? 'r'
7593 : number === 2
7594 ? 'n'
7595 : number === 3
7596 ? 'r'
7597 : number === 4
7598 ? 't'
7599 : 'è';
7600 if (period === 'w' || period === 'W') {
7601 output = 'a';
7602 }
7603 return number + output;
7604 },
7605 week: {
7606 dow: 1, // Monday is the first day of the week.
7607 doy: 4, // The week that contains Jan 4th is the first week of the year.
7608 },
7609 });
7610
7611 //! moment.js locale configuration
7612
7613 var months$4 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(
7614 '_'
7615 ),
7616 monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),
7617 monthsParse$1 = [
7618 /^led/i,
7619 /^úno/i,
7620 /^bře/i,
7621 /^dub/i,
7622 /^kvě/i,
7623 /^(čvn|červen$|června)/i,
7624 /^(čvc|červenec|července)/i,
7625 /^srp/i,
7626 /^zář/i,
7627 /^říj/i,
7628 /^lis/i,
7629 /^pro/i,
7630 ],
7631 // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
7632 // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
7633 monthsRegex$2 = /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;
7634
7635 function plural$1(n) {
7636 return n > 1 && n < 5 && ~~(n / 10) !== 1;
7637 }
7638 function translate$1(number, withoutSuffix, key, isFuture) {
7639 var result = number + ' ';
7640 switch (key) {
7641 case 's': // a few seconds / in a few seconds / a few seconds ago
7642 return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';
7643 case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
7644 if (withoutSuffix || isFuture) {
7645 return result + (plural$1(number) ? 'sekundy' : 'sekund');
7646 } else {
7647 return result + 'sekundami';
7648 }
7649 case 'm': // a minute / in a minute / a minute ago
7650 return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';
7651 case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
7652 if (withoutSuffix || isFuture) {
7653 return result + (plural$1(number) ? 'minuty' : 'minut');
7654 } else {
7655 return result + 'minutami';
7656 }
7657 case 'h': // an hour / in an hour / an hour ago
7658 return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
7659 case 'hh': // 9 hours / in 9 hours / 9 hours ago
7660 if (withoutSuffix || isFuture) {
7661 return result + (plural$1(number) ? 'hodiny' : 'hodin');
7662 } else {
7663 return result + 'hodinami';
7664 }
7665 case 'd': // a day / in a day / a day ago
7666 return withoutSuffix || isFuture ? 'den' : 'dnem';
7667 case 'dd': // 9 days / in 9 days / 9 days ago
7668 if (withoutSuffix || isFuture) {
7669 return result + (plural$1(number) ? 'dny' : 'dní');
7670 } else {
7671 return result + 'dny';
7672 }
7673 case 'M': // a month / in a month / a month ago
7674 return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';
7675 case 'MM': // 9 months / in 9 months / 9 months ago
7676 if (withoutSuffix || isFuture) {
7677 return result + (plural$1(number) ? 'měsíce' : 'měsíců');
7678 } else {
7679 return result + 'měsíci';
7680 }
7681 case 'y': // a year / in a year / a year ago
7682 return withoutSuffix || isFuture ? 'rok' : 'rokem';
7683 case 'yy': // 9 years / in 9 years / 9 years ago
7684 if (withoutSuffix || isFuture) {
7685 return result + (plural$1(number) ? 'roky' : 'let');
7686 } else {
7687 return result + 'lety';
7688 }
7689 }
7690 }
7691
7692 hooks.defineLocale('cs', {
7693 months: months$4,
7694 monthsShort: monthsShort,
7695 monthsRegex: monthsRegex$2,
7696 monthsShortRegex: monthsRegex$2,
7697 // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
7698 // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
7699 monthsStrictRegex: /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,
7700 monthsShortStrictRegex: /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
7701 monthsParse: monthsParse$1,
7702 longMonthsParse: monthsParse$1,
7703 shortMonthsParse: monthsParse$1,
7704 weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
7705 weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),
7706 weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),
7707 longDateFormat: {
7708 LT: 'H:mm',
7709 LTS: 'H:mm:ss',
7710 L: 'DD.MM.YYYY',
7711 LL: 'D. MMMM YYYY',
7712 LLL: 'D. MMMM YYYY H:mm',
7713 LLLL: 'dddd D. MMMM YYYY H:mm',
7714 l: 'D. M. YYYY',
7715 },
7716 calendar: {
7717 sameDay: '[dnes v] LT',
7718 nextDay: '[zítra v] LT',
7719 nextWeek: function () {
7720 switch (this.day()) {
7721 case 0:
7722 return '[v neděli v] LT';
7723 case 1:
7724 case 2:
7725 return '[v] dddd [v] LT';
7726 case 3:
7727 return '[ve středu v] LT';
7728 case 4:
7729 return '[ve čtvrtek v] LT';
7730 case 5:
7731 return '[v pátek v] LT';
7732 case 6:
7733 return '[v sobotu v] LT';
7734 }
7735 },
7736 lastDay: '[včera v] LT',
7737 lastWeek: function () {
7738 switch (this.day()) {
7739 case 0:
7740 return '[minulou neděli v] LT';
7741 case 1:
7742 case 2:
7743 return '[minulé] dddd [v] LT';
7744 case 3:
7745 return '[minulou středu v] LT';
7746 case 4:
7747 case 5:
7748 return '[minulý] dddd [v] LT';
7749 case 6:
7750 return '[minulou sobotu v] LT';
7751 }
7752 },
7753 sameElse: 'L',
7754 },
7755 relativeTime: {
7756 future: 'za %s',
7757 past: 'před %s',
7758 s: translate$1,
7759 ss: translate$1,
7760 m: translate$1,
7761 mm: translate$1,
7762 h: translate$1,
7763 hh: translate$1,
7764 d: translate$1,
7765 dd: translate$1,
7766 M: translate$1,
7767 MM: translate$1,
7768 y: translate$1,
7769 yy: translate$1,
7770 },
7771 dayOfMonthOrdinalParse: /\d{1,2}\./,
7772 ordinal: '%d.',
7773 week: {
7774 dow: 1, // Monday is the first day of the week.
7775 doy: 4, // The week that contains Jan 4th is the first week of the year.
7776 },
7777 });
7778
7779 //! moment.js locale configuration
7780
7781 hooks.defineLocale('cv', {
7782 months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(
7783 '_'
7784 ),
7785 monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
7786 weekdays: 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(
7787 '_'
7788 ),
7789 weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
7790 weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
7791 longDateFormat: {
7792 LT: 'HH:mm',
7793 LTS: 'HH:mm:ss',
7794 L: 'DD-MM-YYYY',
7795 LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
7796 LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
7797 LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
7798 },
7799 calendar: {
7800 sameDay: '[Паян] LT [сехетре]',
7801 nextDay: '[Ыран] LT [сехетре]',
7802 lastDay: '[Ӗнер] LT [сехетре]',
7803 nextWeek: '[Ҫитес] dddd LT [сехетре]',
7804 lastWeek: '[Иртнӗ] dddd LT [сехетре]',
7805 sameElse: 'L',
7806 },
7807 relativeTime: {
7808 future: function (output) {
7809 var affix = /сехет$/i.exec(output)
7810 ? 'рен'
7811 : /ҫул$/i.exec(output)
7812 ? 'тан'
7813 : 'ран';
7814 return output + affix;
7815 },
7816 past: '%s каялла',
7817 s: 'пӗр-ик ҫеккунт',
7818 ss: '%d ҫеккунт',
7819 m: 'пӗр минут',
7820 mm: '%d минут',
7821 h: 'пӗр сехет',
7822 hh: '%d сехет',
7823 d: 'пӗр кун',
7824 dd: '%d кун',
7825 M: 'пӗр уйӑх',
7826 MM: '%d уйӑх',
7827 y: 'пӗр ҫул',
7828 yy: '%d ҫул',
7829 },
7830 dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
7831 ordinal: '%d-мӗш',
7832 week: {
7833 dow: 1, // Monday is the first day of the week.
7834 doy: 7, // The week that contains Jan 7th is the first week of the year.
7835 },
7836 });
7837
7838 //! moment.js locale configuration
7839
7840 hooks.defineLocale('cy', {
7841 months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(
7842 '_'
7843 ),
7844 monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(
7845 '_'
7846 ),
7847 weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(
7848 '_'
7849 ),
7850 weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
7851 weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
7852 weekdaysParseExact: true,
7853 // time formats are the same as en-gb
7854 longDateFormat: {
7855 LT: 'HH:mm',
7856 LTS: 'HH:mm:ss',
7857 L: 'DD/MM/YYYY',
7858 LL: 'D MMMM YYYY',
7859 LLL: 'D MMMM YYYY HH:mm',
7860 LLLL: 'dddd, D MMMM YYYY HH:mm',
7861 },
7862 calendar: {
7863 sameDay: '[Heddiw am] LT',
7864 nextDay: '[Yfory am] LT',
7865 nextWeek: 'dddd [am] LT',
7866 lastDay: '[Ddoe am] LT',
7867 lastWeek: 'dddd [diwethaf am] LT',
7868 sameElse: 'L',
7869 },
7870 relativeTime: {
7871 future: 'mewn %s',
7872 past: '%s yn ôl',
7873 s: 'ychydig eiliadau',
7874 ss: '%d eiliad',
7875 m: 'munud',
7876 mm: '%d munud',
7877 h: 'awr',
7878 hh: '%d awr',
7879 d: 'diwrnod',
7880 dd: '%d diwrnod',
7881 M: 'mis',
7882 MM: '%d mis',
7883 y: 'blwyddyn',
7884 yy: '%d flynedd',
7885 },
7886 dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
7887 // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
7888 ordinal: function (number) {
7889 var b = number,
7890 output = '',
7891 lookup = [
7892 '',
7893 'af',
7894 'il',
7895 'ydd',
7896 'ydd',
7897 'ed',
7898 'ed',
7899 'ed',
7900 'fed',
7901 'fed',
7902 'fed', // 1af to 10fed
7903 'eg',
7904 'fed',
7905 'eg',
7906 'eg',
7907 'fed',
7908 'eg',
7909 'eg',
7910 'fed',
7911 'eg',
7912 'fed', // 11eg to 20fed
7913 ];
7914 if (b > 20) {
7915 if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
7916 output = 'fed'; // not 30ain, 70ain or 90ain
7917 } else {
7918 output = 'ain';
7919 }
7920 } else if (b > 0) {
7921 output = lookup[b];
7922 }
7923 return number + output;
7924 },
7925 week: {
7926 dow: 1, // Monday is the first day of the week.
7927 doy: 4, // The week that contains Jan 4th is the first week of the year.
7928 },
7929 });
7930
7931 //! moment.js locale configuration
7932
7933 hooks.defineLocale('da', {
7934 months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(
7935 '_'
7936 ),
7937 monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
7938 weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
7939 weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),
7940 weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
7941 longDateFormat: {
7942 LT: 'HH:mm',
7943 LTS: 'HH:mm:ss',
7944 L: 'DD.MM.YYYY',
7945 LL: 'D. MMMM YYYY',
7946 LLL: 'D. MMMM YYYY HH:mm',
7947 LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',
7948 },
7949 calendar: {
7950 sameDay: '[i dag kl.] LT',
7951 nextDay: '[i morgen kl.] LT',
7952 nextWeek: 'på dddd [kl.] LT',
7953 lastDay: '[i går kl.] LT',
7954 lastWeek: '[i] dddd[s kl.] LT',
7955 sameElse: 'L',
7956 },
7957 relativeTime: {
7958 future: 'om %s',
7959 past: '%s siden',
7960 s: 'få sekunder',
7961 ss: '%d sekunder',
7962 m: 'et minut',
7963 mm: '%d minutter',
7964 h: 'en time',
7965 hh: '%d timer',
7966 d: 'en dag',
7967 dd: '%d dage',
7968 M: 'en måned',
7969 MM: '%d måneder',
7970 y: 'et år',
7971 yy: '%d år',
7972 },
7973 dayOfMonthOrdinalParse: /\d{1,2}\./,
7974 ordinal: '%d.',
7975 week: {
7976 dow: 1, // Monday is the first day of the week.
7977 doy: 4, // The week that contains Jan 4th is the first week of the year.
7978 },
7979 });
7980
7981 //! moment.js locale configuration
7982
7983 function processRelativeTime(number, withoutSuffix, key, isFuture) {
7984 var format = {
7985 m: ['eine Minute', 'einer Minute'],
7986 h: ['eine Stunde', 'einer Stunde'],
7987 d: ['ein Tag', 'einem Tag'],
7988 dd: [number + ' Tage', number + ' Tagen'],
7989 w: ['eine Woche', 'einer Woche'],
7990 M: ['ein Monat', 'einem Monat'],
7991 MM: [number + ' Monate', number + ' Monaten'],
7992 y: ['ein Jahr', 'einem Jahr'],
7993 yy: [number + ' Jahre', number + ' Jahren'],
7994 };
7995 return withoutSuffix ? format[key][0] : format[key][1];
7996 }
7997
7998 hooks.defineLocale('de-at', {
7999 months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
8000 '_'
8001 ),
8002 monthsShort: 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
8003 '_'
8004 ),
8005 monthsParseExact: true,
8006 weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
8007 '_'
8008 ),
8009 weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
8010 weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
8011 weekdaysParseExact: true,
8012 longDateFormat: {
8013 LT: 'HH:mm',
8014 LTS: 'HH:mm:ss',
8015 L: 'DD.MM.YYYY',
8016 LL: 'D. MMMM YYYY',
8017 LLL: 'D. MMMM YYYY HH:mm',
8018 LLLL: 'dddd, D. MMMM YYYY HH:mm',
8019 },
8020 calendar: {
8021 sameDay: '[heute um] LT [Uhr]',
8022 sameElse: 'L',
8023 nextDay: '[morgen um] LT [Uhr]',
8024 nextWeek: 'dddd [um] LT [Uhr]',
8025 lastDay: '[gestern um] LT [Uhr]',
8026 lastWeek: '[letzten] dddd [um] LT [Uhr]',
8027 },
8028 relativeTime: {
8029 future: 'in %s',
8030 past: 'vor %s',
8031 s: 'ein paar Sekunden',
8032 ss: '%d Sekunden',
8033 m: processRelativeTime,
8034 mm: '%d Minuten',
8035 h: processRelativeTime,
8036 hh: '%d Stunden',
8037 d: processRelativeTime,
8038 dd: processRelativeTime,
8039 w: processRelativeTime,
8040 ww: '%d Wochen',
8041 M: processRelativeTime,
8042 MM: processRelativeTime,
8043 y: processRelativeTime,
8044 yy: processRelativeTime,
8045 },
8046 dayOfMonthOrdinalParse: /\d{1,2}\./,
8047 ordinal: '%d.',
8048 week: {
8049 dow: 1, // Monday is the first day of the week.
8050 doy: 4, // The week that contains Jan 4th is the first week of the year.
8051 },
8052 });
8053
8054 //! moment.js locale configuration
8055
8056 function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
8057 var format = {
8058 m: ['eine Minute', 'einer Minute'],
8059 h: ['eine Stunde', 'einer Stunde'],
8060 d: ['ein Tag', 'einem Tag'],
8061 dd: [number + ' Tage', number + ' Tagen'],
8062 w: ['eine Woche', 'einer Woche'],
8063 M: ['ein Monat', 'einem Monat'],
8064 MM: [number + ' Monate', number + ' Monaten'],
8065 y: ['ein Jahr', 'einem Jahr'],
8066 yy: [number + ' Jahre', number + ' Jahren'],
8067 };
8068 return withoutSuffix ? format[key][0] : format[key][1];
8069 }
8070
8071 hooks.defineLocale('de-ch', {
8072 months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
8073 '_'
8074 ),
8075 monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
8076 '_'
8077 ),
8078 monthsParseExact: true,
8079 weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
8080 '_'
8081 ),
8082 weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
8083 weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
8084 weekdaysParseExact: true,
8085 longDateFormat: {
8086 LT: 'HH:mm',
8087 LTS: 'HH:mm:ss',
8088 L: 'DD.MM.YYYY',
8089 LL: 'D. MMMM YYYY',
8090 LLL: 'D. MMMM YYYY HH:mm',
8091 LLLL: 'dddd, D. MMMM YYYY HH:mm',
8092 },
8093 calendar: {
8094 sameDay: '[heute um] LT [Uhr]',
8095 sameElse: 'L',
8096 nextDay: '[morgen um] LT [Uhr]',
8097 nextWeek: 'dddd [um] LT [Uhr]',
8098 lastDay: '[gestern um] LT [Uhr]',
8099 lastWeek: '[letzten] dddd [um] LT [Uhr]',
8100 },
8101 relativeTime: {
8102 future: 'in %s',
8103 past: 'vor %s',
8104 s: 'ein paar Sekunden',
8105 ss: '%d Sekunden',
8106 m: processRelativeTime$1,
8107 mm: '%d Minuten',
8108 h: processRelativeTime$1,
8109 hh: '%d Stunden',
8110 d: processRelativeTime$1,
8111 dd: processRelativeTime$1,
8112 w: processRelativeTime$1,
8113 ww: '%d Wochen',
8114 M: processRelativeTime$1,
8115 MM: processRelativeTime$1,
8116 y: processRelativeTime$1,
8117 yy: processRelativeTime$1,
8118 },
8119 dayOfMonthOrdinalParse: /\d{1,2}\./,
8120 ordinal: '%d.',
8121 week: {
8122 dow: 1, // Monday is the first day of the week.
8123 doy: 4, // The week that contains Jan 4th is the first week of the year.
8124 },
8125 });
8126
8127 //! moment.js locale configuration
8128
8129 function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
8130 var format = {
8131 m: ['eine Minute', 'einer Minute'],
8132 h: ['eine Stunde', 'einer Stunde'],
8133 d: ['ein Tag', 'einem Tag'],
8134 dd: [number + ' Tage', number + ' Tagen'],
8135 w: ['eine Woche', 'einer Woche'],
8136 M: ['ein Monat', 'einem Monat'],
8137 MM: [number + ' Monate', number + ' Monaten'],
8138 y: ['ein Jahr', 'einem Jahr'],
8139 yy: [number + ' Jahre', number + ' Jahren'],
8140 };
8141 return withoutSuffix ? format[key][0] : format[key][1];
8142 }
8143
8144 hooks.defineLocale('de', {
8145 months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(
8146 '_'
8147 ),
8148 monthsShort: 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split(
8149 '_'
8150 ),
8151 monthsParseExact: true,
8152 weekdays: 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(
8153 '_'
8154 ),
8155 weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
8156 weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
8157 weekdaysParseExact: true,
8158 longDateFormat: {
8159 LT: 'HH:mm',
8160 LTS: 'HH:mm:ss',
8161 L: 'DD.MM.YYYY',
8162 LL: 'D. MMMM YYYY',
8163 LLL: 'D. MMMM YYYY HH:mm',
8164 LLLL: 'dddd, D. MMMM YYYY HH:mm',
8165 },
8166 calendar: {
8167 sameDay: '[heute um] LT [Uhr]',
8168 sameElse: 'L',
8169 nextDay: '[morgen um] LT [Uhr]',
8170 nextWeek: 'dddd [um] LT [Uhr]',
8171 lastDay: '[gestern um] LT [Uhr]',
8172 lastWeek: '[letzten] dddd [um] LT [Uhr]',
8173 },
8174 relativeTime: {
8175 future: 'in %s',
8176 past: 'vor %s',
8177 s: 'ein paar Sekunden',
8178 ss: '%d Sekunden',
8179 m: processRelativeTime$2,
8180 mm: '%d Minuten',
8181 h: processRelativeTime$2,
8182 hh: '%d Stunden',
8183 d: processRelativeTime$2,
8184 dd: processRelativeTime$2,
8185 w: processRelativeTime$2,
8186 ww: '%d Wochen',
8187 M: processRelativeTime$2,
8188 MM: processRelativeTime$2,
8189 y: processRelativeTime$2,
8190 yy: processRelativeTime$2,
8191 },
8192 dayOfMonthOrdinalParse: /\d{1,2}\./,
8193 ordinal: '%d.',
8194 week: {
8195 dow: 1, // Monday is the first day of the week.
8196 doy: 4, // The week that contains Jan 4th is the first week of the year.
8197 },
8198 });
8199
8200 //! moment.js locale configuration
8201
8202 var months$5 = [
8203 'ޖެނުއަރީ',
8204 'ފެބްރުއަރީ',
8205 'މާރިޗު',
8206 'އޭޕްރީލު',
8207 'މޭ',
8208 'ޖޫން',
8209 'ޖުލައި',
8210 'އޯގަސްޓު',
8211 'ސެޕްޓެމްބަރު',
8212 'އޮކްޓޯބަރު',
8213 'ނޮވެމްބަރު',
8214 'ޑިސެމްބަރު',
8215 ],
8216 weekdays = [
8217 'އާދިއްތަ',
8218 'ހޯމަ',
8219 'އަންގާރަ',
8220 'ބުދަ',
8221 'ބުރާސްފަތި',
8222 'ހުކުރު',
8223 'ހޮނިހިރު',
8224 ];
8225
8226 hooks.defineLocale('dv', {
8227 months: months$5,
8228 monthsShort: months$5,
8229 weekdays: weekdays,
8230 weekdaysShort: weekdays,
8231 weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
8232 longDateFormat: {
8233 LT: 'HH:mm',
8234 LTS: 'HH:mm:ss',
8235 L: 'D/M/YYYY',
8236 LL: 'D MMMM YYYY',
8237 LLL: 'D MMMM YYYY HH:mm',
8238 LLLL: 'dddd D MMMM YYYY HH:mm',
8239 },
8240 meridiemParse: /މކ|މފ/,
8241 isPM: function (input) {
8242 return 'މފ' === input;
8243 },
8244 meridiem: function (hour, minute, isLower) {
8245 if (hour < 12) {
8246 return 'މކ';
8247 } else {
8248 return 'މފ';
8249 }
8250 },
8251 calendar: {
8252 sameDay: '[މިއަދު] LT',
8253 nextDay: '[މާދަމާ] LT',
8254 nextWeek: 'dddd LT',
8255 lastDay: '[އިއްޔެ] LT',
8256 lastWeek: '[ފާއިތުވި] dddd LT',
8257 sameElse: 'L',
8258 },
8259 relativeTime: {
8260 future: 'ތެރޭގައި %s',
8261 past: 'ކުރިން %s',
8262 s: 'ސިކުންތުކޮޅެއް',
8263 ss: 'd% ސިކުންތު',
8264 m: 'މިނިޓެއް',
8265 mm: 'މިނިޓު %d',
8266 h: 'ގަޑިއިރެއް',
8267 hh: 'ގަޑިއިރު %d',
8268 d: 'ދުވަހެއް',
8269 dd: 'ދުވަސް %d',
8270 M: 'މަހެއް',
8271 MM: 'މަސް %d',
8272 y: 'އަހަރެއް',
8273 yy: 'އަހަރު %d',
8274 },
8275 preparse: function (string) {
8276 return string.replace(/،/g, ',');
8277 },
8278 postformat: function (string) {
8279 return string.replace(/,/g, '،');
8280 },
8281 week: {
8282 dow: 7, // Sunday is the first day of the week.
8283 doy: 12, // The week that contains Jan 12th is the first week of the year.
8284 },
8285 });
8286
8287 //! moment.js locale configuration
8288
8289 function isFunction$1(input) {
8290 return (
8291 (typeof Function !== 'undefined' && input instanceof Function) ||
8292 Object.prototype.toString.call(input) === '[object Function]'
8293 );
8294 }
8295
8296 hooks.defineLocale('el', {
8297 monthsNominativeEl: 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(
8298 '_'
8299 ),
8300 monthsGenitiveEl: 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(
8301 '_'
8302 ),
8303 months: function (momentToFormat, format) {
8304 if (!momentToFormat) {
8305 return this._monthsNominativeEl;
8306 } else if (
8307 typeof format === 'string' &&
8308 /D/.test(format.substring(0, format.indexOf('MMMM')))
8309 ) {
8310 // if there is a day number before 'MMMM'
8311 return this._monthsGenitiveEl[momentToFormat.month()];
8312 } else {
8313 return this._monthsNominativeEl[momentToFormat.month()];
8314 }
8315 },
8316 monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
8317 weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(
8318 '_'
8319 ),
8320 weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
8321 weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
8322 meridiem: function (hours, minutes, isLower) {
8323 if (hours > 11) {
8324 return isLower ? 'μμ' : 'ΜΜ';
8325 } else {
8326 return isLower ? 'πμ' : 'ΠΜ';
8327 }
8328 },
8329 isPM: function (input) {
8330 return (input + '').toLowerCase()[0] === 'μ';
8331 },
8332 meridiemParse: /[ΠΜ]\.?Μ?\.?/i,
8333 longDateFormat: {
8334 LT: 'h:mm A',
8335 LTS: 'h:mm:ss A',
8336 L: 'DD/MM/YYYY',
8337 LL: 'D MMMM YYYY',
8338 LLL: 'D MMMM YYYY h:mm A',
8339 LLLL: 'dddd, D MMMM YYYY h:mm A',
8340 },
8341 calendarEl: {
8342 sameDay: '[Σήμερα {}] LT',
8343 nextDay: '[Αύριο {}] LT',
8344 nextWeek: 'dddd [{}] LT',
8345 lastDay: '[Χθες {}] LT',
8346 lastWeek: function () {
8347 switch (this.day()) {
8348 case 6:
8349 return '[το προηγούμενο] dddd [{}] LT';
8350 default:
8351 return '[την προηγούμενη] dddd [{}] LT';
8352 }
8353 },
8354 sameElse: 'L',
8355 },
8356 calendar: function (key, mom) {
8357 var output = this._calendarEl[key],
8358 hours = mom && mom.hours();
8359 if (isFunction$1(output)) {
8360 output = output.apply(mom);
8361 }
8362 return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');
8363 },
8364 relativeTime: {
8365 future: 'σε %s',
8366 past: '%s πριν',
8367 s: 'λίγα δευτερόλεπτα',
8368 ss: '%d δευτερόλεπτα',
8369 m: 'ένα λεπτό',
8370 mm: '%d λεπτά',
8371 h: 'μία ώρα',
8372 hh: '%d ώρες',
8373 d: 'μία μέρα',
8374 dd: '%d μέρες',
8375 M: 'ένας μήνας',
8376 MM: '%d μήνες',
8377 y: 'ένας χρόνος',
8378 yy: '%d χρόνια',
8379 },
8380 dayOfMonthOrdinalParse: /\d{1,2}η/,
8381 ordinal: '%dη',
8382 week: {
8383 dow: 1, // Monday is the first day of the week.
8384 doy: 4, // The week that contains Jan 4st is the first week of the year.
8385 },
8386 });
8387
8388 //! moment.js locale configuration
8389
8390 hooks.defineLocale('en-au', {
8391 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8392 '_'
8393 ),
8394 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8395 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8396 '_'
8397 ),
8398 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8399 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8400 longDateFormat: {
8401 LT: 'h:mm A',
8402 LTS: 'h:mm:ss A',
8403 L: 'DD/MM/YYYY',
8404 LL: 'D MMMM YYYY',
8405 LLL: 'D MMMM YYYY h:mm A',
8406 LLLL: 'dddd, D MMMM YYYY h:mm A',
8407 },
8408 calendar: {
8409 sameDay: '[Today at] LT',
8410 nextDay: '[Tomorrow at] LT',
8411 nextWeek: 'dddd [at] LT',
8412 lastDay: '[Yesterday at] LT',
8413 lastWeek: '[Last] dddd [at] LT',
8414 sameElse: 'L',
8415 },
8416 relativeTime: {
8417 future: 'in %s',
8418 past: '%s ago',
8419 s: 'a few seconds',
8420 ss: '%d seconds',
8421 m: 'a minute',
8422 mm: '%d minutes',
8423 h: 'an hour',
8424 hh: '%d hours',
8425 d: 'a day',
8426 dd: '%d days',
8427 M: 'a month',
8428 MM: '%d months',
8429 y: 'a year',
8430 yy: '%d years',
8431 },
8432 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8433 ordinal: function (number) {
8434 var b = number % 10,
8435 output =
8436 ~~((number % 100) / 10) === 1
8437 ? 'th'
8438 : b === 1
8439 ? 'st'
8440 : b === 2
8441 ? 'nd'
8442 : b === 3
8443 ? 'rd'
8444 : 'th';
8445 return number + output;
8446 },
8447 week: {
8448 dow: 0, // Sunday is the first day of the week.
8449 doy: 4, // The week that contains Jan 4th is the first week of the year.
8450 },
8451 });
8452
8453 //! moment.js locale configuration
8454
8455 hooks.defineLocale('en-ca', {
8456 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8457 '_'
8458 ),
8459 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8460 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8461 '_'
8462 ),
8463 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8464 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8465 longDateFormat: {
8466 LT: 'h:mm A',
8467 LTS: 'h:mm:ss A',
8468 L: 'YYYY-MM-DD',
8469 LL: 'MMMM D, YYYY',
8470 LLL: 'MMMM D, YYYY h:mm A',
8471 LLLL: 'dddd, MMMM D, YYYY h:mm A',
8472 },
8473 calendar: {
8474 sameDay: '[Today at] LT',
8475 nextDay: '[Tomorrow at] LT',
8476 nextWeek: 'dddd [at] LT',
8477 lastDay: '[Yesterday at] LT',
8478 lastWeek: '[Last] dddd [at] LT',
8479 sameElse: 'L',
8480 },
8481 relativeTime: {
8482 future: 'in %s',
8483 past: '%s ago',
8484 s: 'a few seconds',
8485 ss: '%d seconds',
8486 m: 'a minute',
8487 mm: '%d minutes',
8488 h: 'an hour',
8489 hh: '%d hours',
8490 d: 'a day',
8491 dd: '%d days',
8492 M: 'a month',
8493 MM: '%d months',
8494 y: 'a year',
8495 yy: '%d years',
8496 },
8497 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8498 ordinal: function (number) {
8499 var b = number % 10,
8500 output =
8501 ~~((number % 100) / 10) === 1
8502 ? 'th'
8503 : b === 1
8504 ? 'st'
8505 : b === 2
8506 ? 'nd'
8507 : b === 3
8508 ? 'rd'
8509 : 'th';
8510 return number + output;
8511 },
8512 });
8513
8514 //! moment.js locale configuration
8515
8516 hooks.defineLocale('en-gb', {
8517 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8518 '_'
8519 ),
8520 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8521 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8522 '_'
8523 ),
8524 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8525 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8526 longDateFormat: {
8527 LT: 'HH:mm',
8528 LTS: 'HH:mm:ss',
8529 L: 'DD/MM/YYYY',
8530 LL: 'D MMMM YYYY',
8531 LLL: 'D MMMM YYYY HH:mm',
8532 LLLL: 'dddd, D MMMM YYYY HH:mm',
8533 },
8534 calendar: {
8535 sameDay: '[Today at] LT',
8536 nextDay: '[Tomorrow at] LT',
8537 nextWeek: 'dddd [at] LT',
8538 lastDay: '[Yesterday at] LT',
8539 lastWeek: '[Last] dddd [at] LT',
8540 sameElse: 'L',
8541 },
8542 relativeTime: {
8543 future: 'in %s',
8544 past: '%s ago',
8545 s: 'a few seconds',
8546 ss: '%d seconds',
8547 m: 'a minute',
8548 mm: '%d minutes',
8549 h: 'an hour',
8550 hh: '%d hours',
8551 d: 'a day',
8552 dd: '%d days',
8553 M: 'a month',
8554 MM: '%d months',
8555 y: 'a year',
8556 yy: '%d years',
8557 },
8558 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8559 ordinal: function (number) {
8560 var b = number % 10,
8561 output =
8562 ~~((number % 100) / 10) === 1
8563 ? 'th'
8564 : b === 1
8565 ? 'st'
8566 : b === 2
8567 ? 'nd'
8568 : b === 3
8569 ? 'rd'
8570 : 'th';
8571 return number + output;
8572 },
8573 week: {
8574 dow: 1, // Monday is the first day of the week.
8575 doy: 4, // The week that contains Jan 4th is the first week of the year.
8576 },
8577 });
8578
8579 //! moment.js locale configuration
8580
8581 hooks.defineLocale('en-ie', {
8582 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8583 '_'
8584 ),
8585 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8586 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8587 '_'
8588 ),
8589 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8590 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8591 longDateFormat: {
8592 LT: 'HH:mm',
8593 LTS: 'HH:mm:ss',
8594 L: 'DD/MM/YYYY',
8595 LL: 'D MMMM YYYY',
8596 LLL: 'D MMMM YYYY HH:mm',
8597 LLLL: 'dddd D MMMM YYYY HH:mm',
8598 },
8599 calendar: {
8600 sameDay: '[Today at] LT',
8601 nextDay: '[Tomorrow at] LT',
8602 nextWeek: 'dddd [at] LT',
8603 lastDay: '[Yesterday at] LT',
8604 lastWeek: '[Last] dddd [at] LT',
8605 sameElse: 'L',
8606 },
8607 relativeTime: {
8608 future: 'in %s',
8609 past: '%s ago',
8610 s: 'a few seconds',
8611 ss: '%d seconds',
8612 m: 'a minute',
8613 mm: '%d minutes',
8614 h: 'an hour',
8615 hh: '%d hours',
8616 d: 'a day',
8617 dd: '%d days',
8618 M: 'a month',
8619 MM: '%d months',
8620 y: 'a year',
8621 yy: '%d years',
8622 },
8623 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8624 ordinal: function (number) {
8625 var b = number % 10,
8626 output =
8627 ~~((number % 100) / 10) === 1
8628 ? 'th'
8629 : b === 1
8630 ? 'st'
8631 : b === 2
8632 ? 'nd'
8633 : b === 3
8634 ? 'rd'
8635 : 'th';
8636 return number + output;
8637 },
8638 week: {
8639 dow: 1, // Monday is the first day of the week.
8640 doy: 4, // The week that contains Jan 4th is the first week of the year.
8641 },
8642 });
8643
8644 //! moment.js locale configuration
8645
8646 hooks.defineLocale('en-il', {
8647 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8648 '_'
8649 ),
8650 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8651 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8652 '_'
8653 ),
8654 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8655 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8656 longDateFormat: {
8657 LT: 'HH:mm',
8658 LTS: 'HH:mm:ss',
8659 L: 'DD/MM/YYYY',
8660 LL: 'D MMMM YYYY',
8661 LLL: 'D MMMM YYYY HH:mm',
8662 LLLL: 'dddd, D MMMM YYYY HH:mm',
8663 },
8664 calendar: {
8665 sameDay: '[Today at] LT',
8666 nextDay: '[Tomorrow at] LT',
8667 nextWeek: 'dddd [at] LT',
8668 lastDay: '[Yesterday at] LT',
8669 lastWeek: '[Last] dddd [at] LT',
8670 sameElse: 'L',
8671 },
8672 relativeTime: {
8673 future: 'in %s',
8674 past: '%s ago',
8675 s: 'a few seconds',
8676 ss: '%d seconds',
8677 m: 'a minute',
8678 mm: '%d minutes',
8679 h: 'an hour',
8680 hh: '%d hours',
8681 d: 'a day',
8682 dd: '%d days',
8683 M: 'a month',
8684 MM: '%d months',
8685 y: 'a year',
8686 yy: '%d years',
8687 },
8688 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8689 ordinal: function (number) {
8690 var b = number % 10,
8691 output =
8692 ~~((number % 100) / 10) === 1
8693 ? 'th'
8694 : b === 1
8695 ? 'st'
8696 : b === 2
8697 ? 'nd'
8698 : b === 3
8699 ? 'rd'
8700 : 'th';
8701 return number + output;
8702 },
8703 });
8704
8705 //! moment.js locale configuration
8706
8707 hooks.defineLocale('en-in', {
8708 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8709 '_'
8710 ),
8711 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8712 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8713 '_'
8714 ),
8715 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8716 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8717 longDateFormat: {
8718 LT: 'h:mm A',
8719 LTS: 'h:mm:ss A',
8720 L: 'DD/MM/YYYY',
8721 LL: 'D MMMM YYYY',
8722 LLL: 'D MMMM YYYY h:mm A',
8723 LLLL: 'dddd, D MMMM YYYY h:mm A',
8724 },
8725 calendar: {
8726 sameDay: '[Today at] LT',
8727 nextDay: '[Tomorrow at] LT',
8728 nextWeek: 'dddd [at] LT',
8729 lastDay: '[Yesterday at] LT',
8730 lastWeek: '[Last] dddd [at] LT',
8731 sameElse: 'L',
8732 },
8733 relativeTime: {
8734 future: 'in %s',
8735 past: '%s ago',
8736 s: 'a few seconds',
8737 ss: '%d seconds',
8738 m: 'a minute',
8739 mm: '%d minutes',
8740 h: 'an hour',
8741 hh: '%d hours',
8742 d: 'a day',
8743 dd: '%d days',
8744 M: 'a month',
8745 MM: '%d months',
8746 y: 'a year',
8747 yy: '%d years',
8748 },
8749 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8750 ordinal: function (number) {
8751 var b = number % 10,
8752 output =
8753 ~~((number % 100) / 10) === 1
8754 ? 'th'
8755 : b === 1
8756 ? 'st'
8757 : b === 2
8758 ? 'nd'
8759 : b === 3
8760 ? 'rd'
8761 : 'th';
8762 return number + output;
8763 },
8764 week: {
8765 dow: 0, // Sunday is the first day of the week.
8766 doy: 6, // The week that contains Jan 1st is the first week of the year.
8767 },
8768 });
8769
8770 //! moment.js locale configuration
8771
8772 hooks.defineLocale('en-nz', {
8773 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8774 '_'
8775 ),
8776 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8777 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8778 '_'
8779 ),
8780 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8781 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8782 longDateFormat: {
8783 LT: 'h:mm A',
8784 LTS: 'h:mm:ss A',
8785 L: 'DD/MM/YYYY',
8786 LL: 'D MMMM YYYY',
8787 LLL: 'D MMMM YYYY h:mm A',
8788 LLLL: 'dddd, D MMMM YYYY h:mm A',
8789 },
8790 calendar: {
8791 sameDay: '[Today at] LT',
8792 nextDay: '[Tomorrow at] LT',
8793 nextWeek: 'dddd [at] LT',
8794 lastDay: '[Yesterday at] LT',
8795 lastWeek: '[Last] dddd [at] LT',
8796 sameElse: 'L',
8797 },
8798 relativeTime: {
8799 future: 'in %s',
8800 past: '%s ago',
8801 s: 'a few seconds',
8802 ss: '%d seconds',
8803 m: 'a minute',
8804 mm: '%d minutes',
8805 h: 'an hour',
8806 hh: '%d hours',
8807 d: 'a day',
8808 dd: '%d days',
8809 M: 'a month',
8810 MM: '%d months',
8811 y: 'a year',
8812 yy: '%d years',
8813 },
8814 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8815 ordinal: function (number) {
8816 var b = number % 10,
8817 output =
8818 ~~((number % 100) / 10) === 1
8819 ? 'th'
8820 : b === 1
8821 ? 'st'
8822 : b === 2
8823 ? 'nd'
8824 : b === 3
8825 ? 'rd'
8826 : 'th';
8827 return number + output;
8828 },
8829 week: {
8830 dow: 1, // Monday is the first day of the week.
8831 doy: 4, // The week that contains Jan 4th is the first week of the year.
8832 },
8833 });
8834
8835 //! moment.js locale configuration
8836
8837 hooks.defineLocale('en-sg', {
8838 months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(
8839 '_'
8840 ),
8841 monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
8842 weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(
8843 '_'
8844 ),
8845 weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
8846 weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
8847 longDateFormat: {
8848 LT: 'HH:mm',
8849 LTS: 'HH:mm:ss',
8850 L: 'DD/MM/YYYY',
8851 LL: 'D MMMM YYYY',
8852 LLL: 'D MMMM YYYY HH:mm',
8853 LLLL: 'dddd, D MMMM YYYY HH:mm',
8854 },
8855 calendar: {
8856 sameDay: '[Today at] LT',
8857 nextDay: '[Tomorrow at] LT',
8858 nextWeek: 'dddd [at] LT',
8859 lastDay: '[Yesterday at] LT',
8860 lastWeek: '[Last] dddd [at] LT',
8861 sameElse: 'L',
8862 },
8863 relativeTime: {
8864 future: 'in %s',
8865 past: '%s ago',
8866 s: 'a few seconds',
8867 ss: '%d seconds',
8868 m: 'a minute',
8869 mm: '%d minutes',
8870 h: 'an hour',
8871 hh: '%d hours',
8872 d: 'a day',
8873 dd: '%d days',
8874 M: 'a month',
8875 MM: '%d months',
8876 y: 'a year',
8877 yy: '%d years',
8878 },
8879 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
8880 ordinal: function (number) {
8881 var b = number % 10,
8882 output =
8883 ~~((number % 100) / 10) === 1
8884 ? 'th'
8885 : b === 1
8886 ? 'st'
8887 : b === 2
8888 ? 'nd'
8889 : b === 3
8890 ? 'rd'
8891 : 'th';
8892 return number + output;
8893 },
8894 week: {
8895 dow: 1, // Monday is the first day of the week.
8896 doy: 4, // The week that contains Jan 4th is the first week of the year.
8897 },
8898 });
8899
8900 //! moment.js locale configuration
8901
8902 hooks.defineLocale('eo', {
8903 months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(
8904 '_'
8905 ),
8906 monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),
8907 weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
8908 weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
8909 weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
8910 longDateFormat: {
8911 LT: 'HH:mm',
8912 LTS: 'HH:mm:ss',
8913 L: 'YYYY-MM-DD',
8914 LL: '[la] D[-an de] MMMM, YYYY',
8915 LLL: '[la] D[-an de] MMMM, YYYY HH:mm',
8916 LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',
8917 llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',
8918 },
8919 meridiemParse: /[ap]\.t\.m/i,
8920 isPM: function (input) {
8921 return input.charAt(0).toLowerCase() === 'p';
8922 },
8923 meridiem: function (hours, minutes, isLower) {
8924 if (hours > 11) {
8925 return isLower ? 'p.t.m.' : 'P.T.M.';
8926 } else {
8927 return isLower ? 'a.t.m.' : 'A.T.M.';
8928 }
8929 },
8930 calendar: {
8931 sameDay: '[Hodiaŭ je] LT',
8932 nextDay: '[Morgaŭ je] LT',
8933 nextWeek: 'dddd[n je] LT',
8934 lastDay: '[Hieraŭ je] LT',
8935 lastWeek: '[pasintan] dddd[n je] LT',
8936 sameElse: 'L',
8937 },
8938 relativeTime: {
8939 future: 'post %s',
8940 past: 'antaŭ %s',
8941 s: 'kelkaj sekundoj',
8942 ss: '%d sekundoj',
8943 m: 'unu minuto',
8944 mm: '%d minutoj',
8945 h: 'unu horo',
8946 hh: '%d horoj',
8947 d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo
8948 dd: '%d tagoj',
8949 M: 'unu monato',
8950 MM: '%d monatoj',
8951 y: 'unu jaro',
8952 yy: '%d jaroj',
8953 },
8954 dayOfMonthOrdinalParse: /\d{1,2}a/,
8955 ordinal: '%da',
8956 week: {
8957 dow: 1, // Monday is the first day of the week.
8958 doy: 7, // The week that contains Jan 7th is the first week of the year.
8959 },
8960 });
8961
8962 //! moment.js locale configuration
8963
8964 var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
8965 '_'
8966 ),
8967 monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
8968 monthsParse$2 = [
8969 /^ene/i,
8970 /^feb/i,
8971 /^mar/i,
8972 /^abr/i,
8973 /^may/i,
8974 /^jun/i,
8975 /^jul/i,
8976 /^ago/i,
8977 /^sep/i,
8978 /^oct/i,
8979 /^nov/i,
8980 /^dic/i,
8981 ],
8982 monthsRegex$3 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
8983
8984 hooks.defineLocale('es-do', {
8985 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
8986 '_'
8987 ),
8988 monthsShort: function (m, format) {
8989 if (!m) {
8990 return monthsShortDot;
8991 } else if (/-MMM-/.test(format)) {
8992 return monthsShort$1[m.month()];
8993 } else {
8994 return monthsShortDot[m.month()];
8995 }
8996 },
8997 monthsRegex: monthsRegex$3,
8998 monthsShortRegex: monthsRegex$3,
8999 monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
9000 monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
9001 monthsParse: monthsParse$2,
9002 longMonthsParse: monthsParse$2,
9003 shortMonthsParse: monthsParse$2,
9004 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
9005 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
9006 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
9007 weekdaysParseExact: true,
9008 longDateFormat: {
9009 LT: 'h:mm A',
9010 LTS: 'h:mm:ss A',
9011 L: 'DD/MM/YYYY',
9012 LL: 'D [de] MMMM [de] YYYY',
9013 LLL: 'D [de] MMMM [de] YYYY h:mm A',
9014 LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
9015 },
9016 calendar: {
9017 sameDay: function () {
9018 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9019 },
9020 nextDay: function () {
9021 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9022 },
9023 nextWeek: function () {
9024 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9025 },
9026 lastDay: function () {
9027 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9028 },
9029 lastWeek: function () {
9030 return (
9031 '[el] dddd [pasado a la' +
9032 (this.hours() !== 1 ? 's' : '') +
9033 '] LT'
9034 );
9035 },
9036 sameElse: 'L',
9037 },
9038 relativeTime: {
9039 future: 'en %s',
9040 past: 'hace %s',
9041 s: 'unos segundos',
9042 ss: '%d segundos',
9043 m: 'un minuto',
9044 mm: '%d minutos',
9045 h: 'una hora',
9046 hh: '%d horas',
9047 d: 'un día',
9048 dd: '%d días',
9049 w: 'una semana',
9050 ww: '%d semanas',
9051 M: 'un mes',
9052 MM: '%d meses',
9053 y: 'un año',
9054 yy: '%d años',
9055 },
9056 dayOfMonthOrdinalParse: /\d{1,2}º/,
9057 ordinal: '%dº',
9058 week: {
9059 dow: 1, // Monday is the first day of the week.
9060 doy: 4, // The week that contains Jan 4th is the first week of the year.
9061 },
9062 });
9063
9064 //! moment.js locale configuration
9065
9066 var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
9067 '_'
9068 ),
9069 monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
9070 monthsParse$3 = [
9071 /^ene/i,
9072 /^feb/i,
9073 /^mar/i,
9074 /^abr/i,
9075 /^may/i,
9076 /^jun/i,
9077 /^jul/i,
9078 /^ago/i,
9079 /^sep/i,
9080 /^oct/i,
9081 /^nov/i,
9082 /^dic/i,
9083 ],
9084 monthsRegex$4 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
9085
9086 hooks.defineLocale('es-mx', {
9087 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
9088 '_'
9089 ),
9090 monthsShort: function (m, format) {
9091 if (!m) {
9092 return monthsShortDot$1;
9093 } else if (/-MMM-/.test(format)) {
9094 return monthsShort$2[m.month()];
9095 } else {
9096 return monthsShortDot$1[m.month()];
9097 }
9098 },
9099 monthsRegex: monthsRegex$4,
9100 monthsShortRegex: monthsRegex$4,
9101 monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
9102 monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
9103 monthsParse: monthsParse$3,
9104 longMonthsParse: monthsParse$3,
9105 shortMonthsParse: monthsParse$3,
9106 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
9107 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
9108 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
9109 weekdaysParseExact: true,
9110 longDateFormat: {
9111 LT: 'H:mm',
9112 LTS: 'H:mm:ss',
9113 L: 'DD/MM/YYYY',
9114 LL: 'D [de] MMMM [de] YYYY',
9115 LLL: 'D [de] MMMM [de] YYYY H:mm',
9116 LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
9117 },
9118 calendar: {
9119 sameDay: function () {
9120 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9121 },
9122 nextDay: function () {
9123 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9124 },
9125 nextWeek: function () {
9126 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9127 },
9128 lastDay: function () {
9129 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9130 },
9131 lastWeek: function () {
9132 return (
9133 '[el] dddd [pasado a la' +
9134 (this.hours() !== 1 ? 's' : '') +
9135 '] LT'
9136 );
9137 },
9138 sameElse: 'L',
9139 },
9140 relativeTime: {
9141 future: 'en %s',
9142 past: 'hace %s',
9143 s: 'unos segundos',
9144 ss: '%d segundos',
9145 m: 'un minuto',
9146 mm: '%d minutos',
9147 h: 'una hora',
9148 hh: '%d horas',
9149 d: 'un día',
9150 dd: '%d días',
9151 w: 'una semana',
9152 ww: '%d semanas',
9153 M: 'un mes',
9154 MM: '%d meses',
9155 y: 'un año',
9156 yy: '%d años',
9157 },
9158 dayOfMonthOrdinalParse: /\d{1,2}º/,
9159 ordinal: '%dº',
9160 week: {
9161 dow: 0, // Sunday is the first day of the week.
9162 doy: 4, // The week that contains Jan 4th is the first week of the year.
9163 },
9164 invalidDate: 'Fecha inválida',
9165 });
9166
9167 //! moment.js locale configuration
9168
9169 var monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
9170 '_'
9171 ),
9172 monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
9173 monthsParse$4 = [
9174 /^ene/i,
9175 /^feb/i,
9176 /^mar/i,
9177 /^abr/i,
9178 /^may/i,
9179 /^jun/i,
9180 /^jul/i,
9181 /^ago/i,
9182 /^sep/i,
9183 /^oct/i,
9184 /^nov/i,
9185 /^dic/i,
9186 ],
9187 monthsRegex$5 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
9188
9189 hooks.defineLocale('es-us', {
9190 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
9191 '_'
9192 ),
9193 monthsShort: function (m, format) {
9194 if (!m) {
9195 return monthsShortDot$2;
9196 } else if (/-MMM-/.test(format)) {
9197 return monthsShort$3[m.month()];
9198 } else {
9199 return monthsShortDot$2[m.month()];
9200 }
9201 },
9202 monthsRegex: monthsRegex$5,
9203 monthsShortRegex: monthsRegex$5,
9204 monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
9205 monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
9206 monthsParse: monthsParse$4,
9207 longMonthsParse: monthsParse$4,
9208 shortMonthsParse: monthsParse$4,
9209 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
9210 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
9211 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
9212 weekdaysParseExact: true,
9213 longDateFormat: {
9214 LT: 'h:mm A',
9215 LTS: 'h:mm:ss A',
9216 L: 'MM/DD/YYYY',
9217 LL: 'D [de] MMMM [de] YYYY',
9218 LLL: 'D [de] MMMM [de] YYYY h:mm A',
9219 LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',
9220 },
9221 calendar: {
9222 sameDay: function () {
9223 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9224 },
9225 nextDay: function () {
9226 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9227 },
9228 nextWeek: function () {
9229 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9230 },
9231 lastDay: function () {
9232 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9233 },
9234 lastWeek: function () {
9235 return (
9236 '[el] dddd [pasado a la' +
9237 (this.hours() !== 1 ? 's' : '') +
9238 '] LT'
9239 );
9240 },
9241 sameElse: 'L',
9242 },
9243 relativeTime: {
9244 future: 'en %s',
9245 past: 'hace %s',
9246 s: 'unos segundos',
9247 ss: '%d segundos',
9248 m: 'un minuto',
9249 mm: '%d minutos',
9250 h: 'una hora',
9251 hh: '%d horas',
9252 d: 'un día',
9253 dd: '%d días',
9254 w: 'una semana',
9255 ww: '%d semanas',
9256 M: 'un mes',
9257 MM: '%d meses',
9258 y: 'un año',
9259 yy: '%d años',
9260 },
9261 dayOfMonthOrdinalParse: /\d{1,2}º/,
9262 ordinal: '%dº',
9263 week: {
9264 dow: 0, // Sunday is the first day of the week.
9265 doy: 6, // The week that contains Jan 6th is the first week of the year.
9266 },
9267 });
9268
9269 //! moment.js locale configuration
9270
9271 var monthsShortDot$3 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(
9272 '_'
9273 ),
9274 monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
9275 monthsParse$5 = [
9276 /^ene/i,
9277 /^feb/i,
9278 /^mar/i,
9279 /^abr/i,
9280 /^may/i,
9281 /^jun/i,
9282 /^jul/i,
9283 /^ago/i,
9284 /^sep/i,
9285 /^oct/i,
9286 /^nov/i,
9287 /^dic/i,
9288 ],
9289 monthsRegex$6 = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
9290
9291 hooks.defineLocale('es', {
9292 months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(
9293 '_'
9294 ),
9295 monthsShort: function (m, format) {
9296 if (!m) {
9297 return monthsShortDot$3;
9298 } else if (/-MMM-/.test(format)) {
9299 return monthsShort$4[m.month()];
9300 } else {
9301 return monthsShortDot$3[m.month()];
9302 }
9303 },
9304 monthsRegex: monthsRegex$6,
9305 monthsShortRegex: monthsRegex$6,
9306 monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
9307 monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
9308 monthsParse: monthsParse$5,
9309 longMonthsParse: monthsParse$5,
9310 shortMonthsParse: monthsParse$5,
9311 weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
9312 weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
9313 weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),
9314 weekdaysParseExact: true,
9315 longDateFormat: {
9316 LT: 'H:mm',
9317 LTS: 'H:mm:ss',
9318 L: 'DD/MM/YYYY',
9319 LL: 'D [de] MMMM [de] YYYY',
9320 LLL: 'D [de] MMMM [de] YYYY H:mm',
9321 LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
9322 },
9323 calendar: {
9324 sameDay: function () {
9325 return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9326 },
9327 nextDay: function () {
9328 return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9329 },
9330 nextWeek: function () {
9331 return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9332 },
9333 lastDay: function () {
9334 return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';
9335 },
9336 lastWeek: function () {
9337 return (
9338 '[el] dddd [pasado a la' +
9339 (this.hours() !== 1 ? 's' : '') +
9340 '] LT'
9341 );
9342 },
9343 sameElse: 'L',
9344 },
9345 relativeTime: {
9346 future: 'en %s',
9347 past: 'hace %s',
9348 s: 'unos segundos',
9349 ss: '%d segundos',
9350 m: 'un minuto',
9351 mm: '%d minutos',
9352 h: 'una hora',
9353 hh: '%d horas',
9354 d: 'un día',
9355 dd: '%d días',
9356 w: 'una semana',
9357 ww: '%d semanas',
9358 M: 'un mes',
9359 MM: '%d meses',
9360 y: 'un año',
9361 yy: '%d años',
9362 },
9363 dayOfMonthOrdinalParse: /\d{1,2}º/,
9364 ordinal: '%dº',
9365 week: {
9366 dow: 1, // Monday is the first day of the week.
9367 doy: 4, // The week that contains Jan 4th is the first week of the year.
9368 },
9369 invalidDate: 'Fecha inválida',
9370 });
9371
9372 //! moment.js locale configuration
9373
9374 function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
9375 var format = {
9376 s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
9377 ss: [number + 'sekundi', number + 'sekundit'],
9378 m: ['ühe minuti', 'üks minut'],
9379 mm: [number + ' minuti', number + ' minutit'],
9380 h: ['ühe tunni', 'tund aega', 'üks tund'],
9381 hh: [number + ' tunni', number + ' tundi'],
9382 d: ['ühe päeva', 'üks päev'],
9383 M: ['kuu aja', 'kuu aega', 'üks kuu'],
9384 MM: [number + ' kuu', number + ' kuud'],
9385 y: ['ühe aasta', 'aasta', 'üks aasta'],
9386 yy: [number + ' aasta', number + ' aastat'],
9387 };
9388 if (withoutSuffix) {
9389 return format[key][2] ? format[key][2] : format[key][1];
9390 }
9391 return isFuture ? format[key][0] : format[key][1];
9392 }
9393
9394 hooks.defineLocale('et', {
9395 months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(
9396 '_'
9397 ),
9398 monthsShort: 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split(
9399 '_'
9400 ),
9401 weekdays: 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(
9402 '_'
9403 ),
9404 weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),
9405 weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),
9406 longDateFormat: {
9407 LT: 'H:mm',
9408 LTS: 'H:mm:ss',
9409 L: 'DD.MM.YYYY',
9410 LL: 'D. MMMM YYYY',
9411 LLL: 'D. MMMM YYYY H:mm',
9412 LLLL: 'dddd, D. MMMM YYYY H:mm',
9413 },
9414 calendar: {
9415 sameDay: '[Täna,] LT',
9416 nextDay: '[Homme,] LT',
9417 nextWeek: '[Järgmine] dddd LT',
9418 lastDay: '[Eile,] LT',
9419 lastWeek: '[Eelmine] dddd LT',
9420 sameElse: 'L',
9421 },
9422 relativeTime: {
9423 future: '%s pärast',
9424 past: '%s tagasi',
9425 s: processRelativeTime$3,
9426 ss: processRelativeTime$3,
9427 m: processRelativeTime$3,
9428 mm: processRelativeTime$3,
9429 h: processRelativeTime$3,
9430 hh: processRelativeTime$3,
9431 d: processRelativeTime$3,
9432 dd: '%d päeva',
9433 M: processRelativeTime$3,
9434 MM: processRelativeTime$3,
9435 y: processRelativeTime$3,
9436 yy: processRelativeTime$3,
9437 },
9438 dayOfMonthOrdinalParse: /\d{1,2}\./,
9439 ordinal: '%d.',
9440 week: {
9441 dow: 1, // Monday is the first day of the week.
9442 doy: 4, // The week that contains Jan 4th is the first week of the year.
9443 },
9444 });
9445
9446 //! moment.js locale configuration
9447
9448 hooks.defineLocale('eu', {
9449 months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(
9450 '_'
9451 ),
9452 monthsShort: 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(
9453 '_'
9454 ),
9455 monthsParseExact: true,
9456 weekdays: 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(
9457 '_'
9458 ),
9459 weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),
9460 weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),
9461 weekdaysParseExact: true,
9462 longDateFormat: {
9463 LT: 'HH:mm',
9464 LTS: 'HH:mm:ss',
9465 L: 'YYYY-MM-DD',
9466 LL: 'YYYY[ko] MMMM[ren] D[a]',
9467 LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',
9468 LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
9469 l: 'YYYY-M-D',
9470 ll: 'YYYY[ko] MMM D[a]',
9471 lll: 'YYYY[ko] MMM D[a] HH:mm',
9472 llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',
9473 },
9474 calendar: {
9475 sameDay: '[gaur] LT[etan]',
9476 nextDay: '[bihar] LT[etan]',
9477 nextWeek: 'dddd LT[etan]',
9478 lastDay: '[atzo] LT[etan]',
9479 lastWeek: '[aurreko] dddd LT[etan]',
9480 sameElse: 'L',
9481 },
9482 relativeTime: {
9483 future: '%s barru',
9484 past: 'duela %s',
9485 s: 'segundo batzuk',
9486 ss: '%d segundo',
9487 m: 'minutu bat',
9488 mm: '%d minutu',
9489 h: 'ordu bat',
9490 hh: '%d ordu',
9491 d: 'egun bat',
9492 dd: '%d egun',
9493 M: 'hilabete bat',
9494 MM: '%d hilabete',
9495 y: 'urte bat',
9496 yy: '%d urte',
9497 },
9498 dayOfMonthOrdinalParse: /\d{1,2}\./,
9499 ordinal: '%d.',
9500 week: {
9501 dow: 1, // Monday is the first day of the week.
9502 doy: 7, // The week that contains Jan 7th is the first week of the year.
9503 },
9504 });
9505
9506 //! moment.js locale configuration
9507
9508 var symbolMap$6 = {
9509 1: '۱',
9510 2: '۲',
9511 3: '۳',
9512 4: '۴',
9513 5: '۵',
9514 6: '۶',
9515 7: '۷',
9516 8: '۸',
9517 9: '۹',
9518 0: '۰',
9519 },
9520 numberMap$5 = {
9521 '۱': '1',
9522 '۲': '2',
9523 '۳': '3',
9524 '۴': '4',
9525 '۵': '5',
9526 '۶': '6',
9527 '۷': '7',
9528 '۸': '8',
9529 '۹': '9',
9530 '۰': '0',
9531 };
9532
9533 hooks.defineLocale('fa', {
9534 months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
9535 '_'
9536 ),
9537 monthsShort: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(
9538 '_'
9539 ),
9540 weekdays: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
9541 '_'
9542 ),
9543 weekdaysShort: 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split(
9544 '_'
9545 ),
9546 weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),
9547 weekdaysParseExact: true,
9548 longDateFormat: {
9549 LT: 'HH:mm',
9550 LTS: 'HH:mm:ss',
9551 L: 'DD/MM/YYYY',
9552 LL: 'D MMMM YYYY',
9553 LLL: 'D MMMM YYYY HH:mm',
9554 LLLL: 'dddd, D MMMM YYYY HH:mm',
9555 },
9556 meridiemParse: /قبل از ظهر|بعد از ظهر/,
9557 isPM: function (input) {
9558 return /بعد از ظهر/.test(input);
9559 },
9560 meridiem: function (hour, minute, isLower) {
9561 if (hour < 12) {
9562 return 'قبل از ظهر';
9563 } else {
9564 return 'بعد از ظهر';
9565 }
9566 },
9567 calendar: {
9568 sameDay: '[امروز ساعت] LT',
9569 nextDay: '[فردا ساعت] LT',
9570 nextWeek: 'dddd [ساعت] LT',
9571 lastDay: '[دیروز ساعت] LT',
9572 lastWeek: 'dddd [پیش] [ساعت] LT',
9573 sameElse: 'L',
9574 },
9575 relativeTime: {
9576 future: 'در %s',
9577 past: '%s پیش',
9578 s: 'چند ثانیه',
9579 ss: '%d ثانیه',
9580 m: 'یک دقیقه',
9581 mm: '%d دقیقه',
9582 h: 'یک ساعت',
9583 hh: '%d ساعت',
9584 d: 'یک روز',
9585 dd: '%d روز',
9586 M: 'یک ماه',
9587 MM: '%d ماه',
9588 y: 'یک سال',
9589 yy: '%d سال',
9590 },
9591 preparse: function (string) {
9592 return string
9593 .replace(/[۰-۹]/g, function (match) {
9594 return numberMap$5[match];
9595 })
9596 .replace(/،/g, ',');
9597 },
9598 postformat: function (string) {
9599 return string
9600 .replace(/\d/g, function (match) {
9601 return symbolMap$6[match];
9602 })
9603 .replace(/,/g, '،');
9604 },
9605 dayOfMonthOrdinalParse: /\d{1,2}م/,
9606 ordinal: '%dم',
9607 week: {
9608 dow: 6, // Saturday is the first day of the week.
9609 doy: 12, // The week that contains Jan 12th is the first week of the year.
9610 },
9611 });
9612
9613 //! moment.js locale configuration
9614
9615 var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(
9616 ' '
9617 ),
9618 numbersFuture = [
9619 'nolla',
9620 'yhden',
9621 'kahden',
9622 'kolmen',
9623 'neljän',
9624 'viiden',
9625 'kuuden',
9626 numbersPast[7],
9627 numbersPast[8],
9628 numbersPast[9],
9629 ];
9630 function translate$2(number, withoutSuffix, key, isFuture) {
9631 var result = '';
9632 switch (key) {
9633 case 's':
9634 return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
9635 case 'ss':
9636 result = isFuture ? 'sekunnin' : 'sekuntia';
9637 break;
9638 case 'm':
9639 return isFuture ? 'minuutin' : 'minuutti';
9640 case 'mm':
9641 result = isFuture ? 'minuutin' : 'minuuttia';
9642 break;
9643 case 'h':
9644 return isFuture ? 'tunnin' : 'tunti';
9645 case 'hh':
9646 result = isFuture ? 'tunnin' : 'tuntia';
9647 break;
9648 case 'd':
9649 return isFuture ? 'päivän' : 'päivä';
9650 case 'dd':
9651 result = isFuture ? 'päivän' : 'päivää';
9652 break;
9653 case 'M':
9654 return isFuture ? 'kuukauden' : 'kuukausi';
9655 case 'MM':
9656 result = isFuture ? 'kuukauden' : 'kuukautta';
9657 break;
9658 case 'y':
9659 return isFuture ? 'vuoden' : 'vuosi';
9660 case 'yy':
9661 result = isFuture ? 'vuoden' : 'vuotta';
9662 break;
9663 }
9664 result = verbalNumber(number, isFuture) + ' ' + result;
9665 return result;
9666 }
9667 function verbalNumber(number, isFuture) {
9668 return number < 10
9669 ? isFuture
9670 ? numbersFuture[number]
9671 : numbersPast[number]
9672 : number;
9673 }
9674
9675 hooks.defineLocale('fi', {
9676 months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(
9677 '_'
9678 ),
9679 monthsShort: 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(
9680 '_'
9681 ),
9682 weekdays: 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(
9683 '_'
9684 ),
9685 weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),
9686 weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),
9687 longDateFormat: {
9688 LT: 'HH.mm',
9689 LTS: 'HH.mm.ss',
9690 L: 'DD.MM.YYYY',
9691 LL: 'Do MMMM[ta] YYYY',
9692 LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',
9693 LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
9694 l: 'D.M.YYYY',
9695 ll: 'Do MMM YYYY',
9696 lll: 'Do MMM YYYY, [klo] HH.mm',
9697 llll: 'ddd, Do MMM YYYY, [klo] HH.mm',
9698 },
9699 calendar: {
9700 sameDay: '[tänään] [klo] LT',
9701 nextDay: '[huomenna] [klo] LT',
9702 nextWeek: 'dddd [klo] LT',
9703 lastDay: '[eilen] [klo] LT',
9704 lastWeek: '[viime] dddd[na] [klo] LT',
9705 sameElse: 'L',
9706 },
9707 relativeTime: {
9708 future: '%s päästä',
9709 past: '%s sitten',
9710 s: translate$2,
9711 ss: translate$2,
9712 m: translate$2,
9713 mm: translate$2,
9714 h: translate$2,
9715 hh: translate$2,
9716 d: translate$2,
9717 dd: translate$2,
9718 M: translate$2,
9719 MM: translate$2,
9720 y: translate$2,
9721 yy: translate$2,
9722 },
9723 dayOfMonthOrdinalParse: /\d{1,2}\./,
9724 ordinal: '%d.',
9725 week: {
9726 dow: 1, // Monday is the first day of the week.
9727 doy: 4, // The week that contains Jan 4th is the first week of the year.
9728 },
9729 });
9730
9731 //! moment.js locale configuration
9732
9733 hooks.defineLocale('fil', {
9734 months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
9735 '_'
9736 ),
9737 monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
9738 weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
9739 '_'
9740 ),
9741 weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
9742 weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
9743 longDateFormat: {
9744 LT: 'HH:mm',
9745 LTS: 'HH:mm:ss',
9746 L: 'MM/D/YYYY',
9747 LL: 'MMMM D, YYYY',
9748 LLL: 'MMMM D, YYYY HH:mm',
9749 LLLL: 'dddd, MMMM DD, YYYY HH:mm',
9750 },
9751 calendar: {
9752 sameDay: 'LT [ngayong araw]',
9753 nextDay: '[Bukas ng] LT',
9754 nextWeek: 'LT [sa susunod na] dddd',
9755 lastDay: 'LT [kahapon]',
9756 lastWeek: 'LT [noong nakaraang] dddd',
9757 sameElse: 'L',
9758 },
9759 relativeTime: {
9760 future: 'sa loob ng %s',
9761 past: '%s ang nakalipas',
9762 s: 'ilang segundo',
9763 ss: '%d segundo',
9764 m: 'isang minuto',
9765 mm: '%d minuto',
9766 h: 'isang oras',
9767 hh: '%d oras',
9768 d: 'isang araw',
9769 dd: '%d araw',
9770 M: 'isang buwan',
9771 MM: '%d buwan',
9772 y: 'isang taon',
9773 yy: '%d taon',
9774 },
9775 dayOfMonthOrdinalParse: /\d{1,2}/,
9776 ordinal: function (number) {
9777 return number;
9778 },
9779 week: {
9780 dow: 1, // Monday is the first day of the week.
9781 doy: 4, // The week that contains Jan 4th is the first week of the year.
9782 },
9783 });
9784
9785 //! moment.js locale configuration
9786
9787 hooks.defineLocale('fo', {
9788 months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(
9789 '_'
9790 ),
9791 monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
9792 weekdays: 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(
9793 '_'
9794 ),
9795 weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
9796 weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),
9797 longDateFormat: {
9798 LT: 'HH:mm',
9799 LTS: 'HH:mm:ss',
9800 L: 'DD/MM/YYYY',
9801 LL: 'D MMMM YYYY',
9802 LLL: 'D MMMM YYYY HH:mm',
9803 LLLL: 'dddd D. MMMM, YYYY HH:mm',
9804 },
9805 calendar: {
9806 sameDay: '[Í dag kl.] LT',
9807 nextDay: '[Í morgin kl.] LT',
9808 nextWeek: 'dddd [kl.] LT',
9809 lastDay: '[Í gjár kl.] LT',
9810 lastWeek: '[síðstu] dddd [kl] LT',
9811 sameElse: 'L',
9812 },
9813 relativeTime: {
9814 future: 'um %s',
9815 past: '%s síðani',
9816 s: 'fá sekund',
9817 ss: '%d sekundir',
9818 m: 'ein minuttur',
9819 mm: '%d minuttir',
9820 h: 'ein tími',
9821 hh: '%d tímar',
9822 d: 'ein dagur',
9823 dd: '%d dagar',
9824 M: 'ein mánaður',
9825 MM: '%d mánaðir',
9826 y: 'eitt ár',
9827 yy: '%d ár',
9828 },
9829 dayOfMonthOrdinalParse: /\d{1,2}\./,
9830 ordinal: '%d.',
9831 week: {
9832 dow: 1, // Monday is the first day of the week.
9833 doy: 4, // The week that contains Jan 4th is the first week of the year.
9834 },
9835 });
9836
9837 //! moment.js locale configuration
9838
9839 hooks.defineLocale('fr-ca', {
9840 months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
9841 '_'
9842 ),
9843 monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
9844 '_'
9845 ),
9846 monthsParseExact: true,
9847 weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
9848 weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
9849 weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
9850 weekdaysParseExact: true,
9851 longDateFormat: {
9852 LT: 'HH:mm',
9853 LTS: 'HH:mm:ss',
9854 L: 'YYYY-MM-DD',
9855 LL: 'D MMMM YYYY',
9856 LLL: 'D MMMM YYYY HH:mm',
9857 LLLL: 'dddd D MMMM YYYY HH:mm',
9858 },
9859 calendar: {
9860 sameDay: '[Aujourd’hui à] LT',
9861 nextDay: '[Demain à] LT',
9862 nextWeek: 'dddd [à] LT',
9863 lastDay: '[Hier à] LT',
9864 lastWeek: 'dddd [dernier à] LT',
9865 sameElse: 'L',
9866 },
9867 relativeTime: {
9868 future: 'dans %s',
9869 past: 'il y a %s',
9870 s: 'quelques secondes',
9871 ss: '%d secondes',
9872 m: 'une minute',
9873 mm: '%d minutes',
9874 h: 'une heure',
9875 hh: '%d heures',
9876 d: 'un jour',
9877 dd: '%d jours',
9878 M: 'un mois',
9879 MM: '%d mois',
9880 y: 'un an',
9881 yy: '%d ans',
9882 },
9883 dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
9884 ordinal: function (number, period) {
9885 switch (period) {
9886 // Words with masculine grammatical gender: mois, trimestre, jour
9887 default:
9888 case 'M':
9889 case 'Q':
9890 case 'D':
9891 case 'DDD':
9892 case 'd':
9893 return number + (number === 1 ? 'er' : 'e');
9894
9895 // Words with feminine grammatical gender: semaine
9896 case 'w':
9897 case 'W':
9898 return number + (number === 1 ? 're' : 'e');
9899 }
9900 },
9901 });
9902
9903 //! moment.js locale configuration
9904
9905 hooks.defineLocale('fr-ch', {
9906 months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
9907 '_'
9908 ),
9909 monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
9910 '_'
9911 ),
9912 monthsParseExact: true,
9913 weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
9914 weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
9915 weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
9916 weekdaysParseExact: true,
9917 longDateFormat: {
9918 LT: 'HH:mm',
9919 LTS: 'HH:mm:ss',
9920 L: 'DD.MM.YYYY',
9921 LL: 'D MMMM YYYY',
9922 LLL: 'D MMMM YYYY HH:mm',
9923 LLLL: 'dddd D MMMM YYYY HH:mm',
9924 },
9925 calendar: {
9926 sameDay: '[Aujourd’hui à] LT',
9927 nextDay: '[Demain à] LT',
9928 nextWeek: 'dddd [à] LT',
9929 lastDay: '[Hier à] LT',
9930 lastWeek: 'dddd [dernier à] LT',
9931 sameElse: 'L',
9932 },
9933 relativeTime: {
9934 future: 'dans %s',
9935 past: 'il y a %s',
9936 s: 'quelques secondes',
9937 ss: '%d secondes',
9938 m: 'une minute',
9939 mm: '%d minutes',
9940 h: 'une heure',
9941 hh: '%d heures',
9942 d: 'un jour',
9943 dd: '%d jours',
9944 M: 'un mois',
9945 MM: '%d mois',
9946 y: 'un an',
9947 yy: '%d ans',
9948 },
9949 dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
9950 ordinal: function (number, period) {
9951 switch (period) {
9952 // Words with masculine grammatical gender: mois, trimestre, jour
9953 default:
9954 case 'M':
9955 case 'Q':
9956 case 'D':
9957 case 'DDD':
9958 case 'd':
9959 return number + (number === 1 ? 'er' : 'e');
9960
9961 // Words with feminine grammatical gender: semaine
9962 case 'w':
9963 case 'W':
9964 return number + (number === 1 ? 're' : 'e');
9965 }
9966 },
9967 week: {
9968 dow: 1, // Monday is the first day of the week.
9969 doy: 4, // The week that contains Jan 4th is the first week of the year.
9970 },
9971 });
9972
9973 //! moment.js locale configuration
9974
9975 var monthsStrictRegex$1 = /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
9976 monthsShortStrictRegex$1 = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?)/i,
9977 monthsRegex$7 = /(janv\.?|févr\.?|mars|avr\.?|mai|juin|juil\.?|août|sept\.?|oct\.?|nov\.?|déc\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,
9978 monthsParse$6 = [
9979 /^janv/i,
9980 /^févr/i,
9981 /^mars/i,
9982 /^avr/i,
9983 /^mai/i,
9984 /^juin/i,
9985 /^juil/i,
9986 /^août/i,
9987 /^sept/i,
9988 /^oct/i,
9989 /^nov/i,
9990 /^déc/i,
9991 ];
9992
9993 hooks.defineLocale('fr', {
9994 months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(
9995 '_'
9996 ),
9997 monthsShort: 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(
9998 '_'
9999 ),
10000 monthsRegex: monthsRegex$7,
10001 monthsShortRegex: monthsRegex$7,
10002 monthsStrictRegex: monthsStrictRegex$1,
10003 monthsShortStrictRegex: monthsShortStrictRegex$1,
10004 monthsParse: monthsParse$6,
10005 longMonthsParse: monthsParse$6,
10006 shortMonthsParse: monthsParse$6,
10007 weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
10008 weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
10009 weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),
10010 weekdaysParseExact: true,
10011 longDateFormat: {
10012 LT: 'HH:mm',
10013 LTS: 'HH:mm:ss',
10014 L: 'DD/MM/YYYY',
10015 LL: 'D MMMM YYYY',
10016 LLL: 'D MMMM YYYY HH:mm',
10017 LLLL: 'dddd D MMMM YYYY HH:mm',
10018 },
10019 calendar: {
10020 sameDay: '[Aujourd’hui à] LT',
10021 nextDay: '[Demain à] LT',
10022 nextWeek: 'dddd [à] LT',
10023 lastDay: '[Hier à] LT',
10024 lastWeek: 'dddd [dernier à] LT',
10025 sameElse: 'L',
10026 },
10027 relativeTime: {
10028 future: 'dans %s',
10029 past: 'il y a %s',
10030 s: 'quelques secondes',
10031 ss: '%d secondes',
10032 m: 'une minute',
10033 mm: '%d minutes',
10034 h: 'une heure',
10035 hh: '%d heures',
10036 d: 'un jour',
10037 dd: '%d jours',
10038 w: 'une semaine',
10039 ww: '%d semaines',
10040 M: 'un mois',
10041 MM: '%d mois',
10042 y: 'un an',
10043 yy: '%d ans',
10044 },
10045 dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
10046 ordinal: function (number, period) {
10047 switch (period) {
10048 // TODO: Return 'e' when day of month > 1. Move this case inside
10049 // block for masculine words below.
10050 // See https://github.com/moment/moment/issues/3375
10051 case 'D':
10052 return number + (number === 1 ? 'er' : '');
10053
10054 // Words with masculine grammatical gender: mois, trimestre, jour
10055 default:
10056 case 'M':
10057 case 'Q':
10058 case 'DDD':
10059 case 'd':
10060 return number + (number === 1 ? 'er' : 'e');
10061
10062 // Words with feminine grammatical gender: semaine
10063 case 'w':
10064 case 'W':
10065 return number + (number === 1 ? 're' : 'e');
10066 }
10067 },
10068 week: {
10069 dow: 1, // Monday is the first day of the week.
10070 doy: 4, // The week that contains Jan 4th is the first week of the year.
10071 },
10072 });
10073
10074 //! moment.js locale configuration
10075
10076 var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split(
10077 '_'
10078 ),
10079 monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split(
10080 '_'
10081 );
10082
10083 hooks.defineLocale('fy', {
10084 months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(
10085 '_'
10086 ),
10087 monthsShort: function (m, format) {
10088 if (!m) {
10089 return monthsShortWithDots;
10090 } else if (/-MMM-/.test(format)) {
10091 return monthsShortWithoutDots[m.month()];
10092 } else {
10093 return monthsShortWithDots[m.month()];
10094 }
10095 },
10096 monthsParseExact: true,
10097 weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(
10098 '_'
10099 ),
10100 weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),
10101 weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
10102 weekdaysParseExact: true,
10103 longDateFormat: {
10104 LT: 'HH:mm',
10105 LTS: 'HH:mm:ss',
10106 L: 'DD-MM-YYYY',
10107 LL: 'D MMMM YYYY',
10108 LLL: 'D MMMM YYYY HH:mm',
10109 LLLL: 'dddd D MMMM YYYY HH:mm',
10110 },
10111 calendar: {
10112 sameDay: '[hjoed om] LT',
10113 nextDay: '[moarn om] LT',
10114 nextWeek: 'dddd [om] LT',
10115 lastDay: '[juster om] LT',
10116 lastWeek: '[ôfrûne] dddd [om] LT',
10117 sameElse: 'L',
10118 },
10119 relativeTime: {
10120 future: 'oer %s',
10121 past: '%s lyn',
10122 s: 'in pear sekonden',
10123 ss: '%d sekonden',
10124 m: 'ien minút',
10125 mm: '%d minuten',
10126 h: 'ien oere',
10127 hh: '%d oeren',
10128 d: 'ien dei',
10129 dd: '%d dagen',
10130 M: 'ien moanne',
10131 MM: '%d moannen',
10132 y: 'ien jier',
10133 yy: '%d jierren',
10134 },
10135 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
10136 ordinal: function (number) {
10137 return (
10138 number +
10139 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
10140 );
10141 },
10142 week: {
10143 dow: 1, // Monday is the first day of the week.
10144 doy: 4, // The week that contains Jan 4th is the first week of the year.
10145 },
10146 });
10147
10148 //! moment.js locale configuration
10149
10150 var months$6 = [
10151 'Eanáir',
10152 'Feabhra',
10153 'Márta',
10154 'Aibreán',
10155 'Bealtaine',
10156 'Meitheamh',
10157 'Iúil',
10158 'Lúnasa',
10159 'Meán Fómhair',
10160 'Deireadh Fómhair',
10161 'Samhain',
10162 'Nollaig',
10163 ],
10164 monthsShort$5 = [
10165 'Ean',
10166 'Feabh',
10167 'Márt',
10168 'Aib',
10169 'Beal',
10170 'Meith',
10171 'Iúil',
10172 'Lún',
10173 'M.F.',
10174 'D.F.',
10175 'Samh',
10176 'Noll',
10177 ],
10178 weekdays$1 = [
10179 'Dé Domhnaigh',
10180 'Dé Luain',
10181 'Dé Máirt',
10182 'Dé Céadaoin',
10183 'Déardaoin',
10184 'Dé hAoine',
10185 'Dé Sathairn',
10186 ],
10187 weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],
10188 weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];
10189
10190 hooks.defineLocale('ga', {
10191 months: months$6,
10192 monthsShort: monthsShort$5,
10193 monthsParseExact: true,
10194 weekdays: weekdays$1,
10195 weekdaysShort: weekdaysShort,
10196 weekdaysMin: weekdaysMin,
10197 longDateFormat: {
10198 LT: 'HH:mm',
10199 LTS: 'HH:mm:ss',
10200 L: 'DD/MM/YYYY',
10201 LL: 'D MMMM YYYY',
10202 LLL: 'D MMMM YYYY HH:mm',
10203 LLLL: 'dddd, D MMMM YYYY HH:mm',
10204 },
10205 calendar: {
10206 sameDay: '[Inniu ag] LT',
10207 nextDay: '[Amárach ag] LT',
10208 nextWeek: 'dddd [ag] LT',
10209 lastDay: '[Inné ag] LT',
10210 lastWeek: 'dddd [seo caite] [ag] LT',
10211 sameElse: 'L',
10212 },
10213 relativeTime: {
10214 future: 'i %s',
10215 past: '%s ó shin',
10216 s: 'cúpla soicind',
10217 ss: '%d soicind',
10218 m: 'nóiméad',
10219 mm: '%d nóiméad',
10220 h: 'uair an chloig',
10221 hh: '%d uair an chloig',
10222 d: 'lá',
10223 dd: '%d lá',
10224 M: 'mí',
10225 MM: '%d míonna',
10226 y: 'bliain',
10227 yy: '%d bliain',
10228 },
10229 dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
10230 ordinal: function (number) {
10231 var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
10232 return number + output;
10233 },
10234 week: {
10235 dow: 1, // Monday is the first day of the week.
10236 doy: 4, // The week that contains Jan 4th is the first week of the year.
10237 },
10238 });
10239
10240 //! moment.js locale configuration
10241
10242 var months$7 = [
10243 'Am Faoilleach',
10244 'An Gearran',
10245 'Am Màrt',
10246 'An Giblean',
10247 'An Cèitean',
10248 'An t-Ògmhios',
10249 'An t-Iuchar',
10250 'An Lùnastal',
10251 'An t-Sultain',
10252 'An Dàmhair',
10253 'An t-Samhain',
10254 'An Dùbhlachd',
10255 ],
10256 monthsShort$6 = [
10257 'Faoi',
10258 'Gear',
10259 'Màrt',
10260 'Gibl',
10261 'Cèit',
10262 'Ògmh',
10263 'Iuch',
10264 'Lùn',
10265 'Sult',
10266 'Dàmh',
10267 'Samh',
10268 'Dùbh',
10269 ],
10270 weekdays$2 = [
10271 'Didòmhnaich',
10272 'Diluain',
10273 'Dimàirt',
10274 'Diciadain',
10275 'Diardaoin',
10276 'Dihaoine',
10277 'Disathairne',
10278 ],
10279 weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],
10280 weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
10281
10282 hooks.defineLocale('gd', {
10283 months: months$7,
10284 monthsShort: monthsShort$6,
10285 monthsParseExact: true,
10286 weekdays: weekdays$2,
10287 weekdaysShort: weekdaysShort$1,
10288 weekdaysMin: weekdaysMin$1,
10289 longDateFormat: {
10290 LT: 'HH:mm',
10291 LTS: 'HH:mm:ss',
10292 L: 'DD/MM/YYYY',
10293 LL: 'D MMMM YYYY',
10294 LLL: 'D MMMM YYYY HH:mm',
10295 LLLL: 'dddd, D MMMM YYYY HH:mm',
10296 },
10297 calendar: {
10298 sameDay: '[An-diugh aig] LT',
10299 nextDay: '[A-màireach aig] LT',
10300 nextWeek: 'dddd [aig] LT',
10301 lastDay: '[An-dè aig] LT',
10302 lastWeek: 'dddd [seo chaidh] [aig] LT',
10303 sameElse: 'L',
10304 },
10305 relativeTime: {
10306 future: 'ann an %s',
10307 past: 'bho chionn %s',
10308 s: 'beagan diogan',
10309 ss: '%d diogan',
10310 m: 'mionaid',
10311 mm: '%d mionaidean',
10312 h: 'uair',
10313 hh: '%d uairean',
10314 d: 'latha',
10315 dd: '%d latha',
10316 M: 'mìos',
10317 MM: '%d mìosan',
10318 y: 'bliadhna',
10319 yy: '%d bliadhna',
10320 },
10321 dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
10322 ordinal: function (number) {
10323 var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
10324 return number + output;
10325 },
10326 week: {
10327 dow: 1, // Monday is the first day of the week.
10328 doy: 4, // The week that contains Jan 4th is the first week of the year.
10329 },
10330 });
10331
10332 //! moment.js locale configuration
10333
10334 hooks.defineLocale('gl', {
10335 months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(
10336 '_'
10337 ),
10338 monthsShort: 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(
10339 '_'
10340 ),
10341 monthsParseExact: true,
10342 weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
10343 weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
10344 weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),
10345 weekdaysParseExact: true,
10346 longDateFormat: {
10347 LT: 'H:mm',
10348 LTS: 'H:mm:ss',
10349 L: 'DD/MM/YYYY',
10350 LL: 'D [de] MMMM [de] YYYY',
10351 LLL: 'D [de] MMMM [de] YYYY H:mm',
10352 LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',
10353 },
10354 calendar: {
10355 sameDay: function () {
10356 return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
10357 },
10358 nextDay: function () {
10359 return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';
10360 },
10361 nextWeek: function () {
10362 return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';
10363 },
10364 lastDay: function () {
10365 return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';
10366 },
10367 lastWeek: function () {
10368 return (
10369 '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'
10370 );
10371 },
10372 sameElse: 'L',
10373 },
10374 relativeTime: {
10375 future: function (str) {
10376 if (str.indexOf('un') === 0) {
10377 return 'n' + str;
10378 }
10379 return 'en ' + str;
10380 },
10381 past: 'hai %s',
10382 s: 'uns segundos',
10383 ss: '%d segundos',
10384 m: 'un minuto',
10385 mm: '%d minutos',
10386 h: 'unha hora',
10387 hh: '%d horas',
10388 d: 'un día',
10389 dd: '%d días',
10390 M: 'un mes',
10391 MM: '%d meses',
10392 y: 'un ano',
10393 yy: '%d anos',
10394 },
10395 dayOfMonthOrdinalParse: /\d{1,2}º/,
10396 ordinal: '%dº',
10397 week: {
10398 dow: 1, // Monday is the first day of the week.
10399 doy: 4, // The week that contains Jan 4th is the first week of the year.
10400 },
10401 });
10402
10403 //! moment.js locale configuration
10404
10405 function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
10406 var format = {
10407 s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],
10408 ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],
10409 m: ['एका मिणटान', 'एक मिनूट'],
10410 mm: [number + ' मिणटांनी', number + ' मिणटां'],
10411 h: ['एका वरान', 'एक वर'],
10412 hh: [number + ' वरांनी', number + ' वरां'],
10413 d: ['एका दिसान', 'एक दीस'],
10414 dd: [number + ' दिसांनी', number + ' दीस'],
10415 M: ['एका म्हयन्यान', 'एक म्हयनो'],
10416 MM: [number + ' म्हयन्यानी', number + ' म्हयने'],
10417 y: ['एका वर्सान', 'एक वर्स'],
10418 yy: [number + ' वर्सांनी', number + ' वर्सां'],
10419 };
10420 return isFuture ? format[key][0] : format[key][1];
10421 }
10422
10423 hooks.defineLocale('gom-deva', {
10424 months: {
10425 standalone: 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
10426 '_'
10427 ),
10428 format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(
10429 '_'
10430 ),
10431 isFormat: /MMMM(\s)+D[oD]?/,
10432 },
10433 monthsShort: 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
10434 '_'
10435 ),
10436 monthsParseExact: true,
10437 weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),
10438 weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),
10439 weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),
10440 weekdaysParseExact: true,
10441 longDateFormat: {
10442 LT: 'A h:mm [वाजतां]',
10443 LTS: 'A h:mm:ss [वाजतां]',
10444 L: 'DD-MM-YYYY',
10445 LL: 'D MMMM YYYY',
10446 LLL: 'D MMMM YYYY A h:mm [वाजतां]',
10447 LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',
10448 llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',
10449 },
10450 calendar: {
10451 sameDay: '[आयज] LT',
10452 nextDay: '[फाल्यां] LT',
10453 nextWeek: '[फुडलो] dddd[,] LT',
10454 lastDay: '[काल] LT',
10455 lastWeek: '[फाटलो] dddd[,] LT',
10456 sameElse: 'L',
10457 },
10458 relativeTime: {
10459 future: '%s',
10460 past: '%s आदीं',
10461 s: processRelativeTime$4,
10462 ss: processRelativeTime$4,
10463 m: processRelativeTime$4,
10464 mm: processRelativeTime$4,
10465 h: processRelativeTime$4,
10466 hh: processRelativeTime$4,
10467 d: processRelativeTime$4,
10468 dd: processRelativeTime$4,
10469 M: processRelativeTime$4,
10470 MM: processRelativeTime$4,
10471 y: processRelativeTime$4,
10472 yy: processRelativeTime$4,
10473 },
10474 dayOfMonthOrdinalParse: /\d{1,2}(वेर)/,
10475 ordinal: function (number, period) {
10476 switch (period) {
10477 // the ordinal 'वेर' only applies to day of the month
10478 case 'D':
10479 return number + 'वेर';
10480 default:
10481 case 'M':
10482 case 'Q':
10483 case 'DDD':
10484 case 'd':
10485 case 'w':
10486 case 'W':
10487 return number;
10488 }
10489 },
10490 week: {
10491 dow: 0, // Sunday is the first day of the week
10492 doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
10493 },
10494 meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,
10495 meridiemHour: function (hour, meridiem) {
10496 if (hour === 12) {
10497 hour = 0;
10498 }
10499 if (meridiem === 'राती') {
10500 return hour < 4 ? hour : hour + 12;
10501 } else if (meridiem === 'सकाळीं') {
10502 return hour;
10503 } else if (meridiem === 'दनपारां') {
10504 return hour > 12 ? hour : hour + 12;
10505 } else if (meridiem === 'सांजे') {
10506 return hour + 12;
10507 }
10508 },
10509 meridiem: function (hour, minute, isLower) {
10510 if (hour < 4) {
10511 return 'राती';
10512 } else if (hour < 12) {
10513 return 'सकाळीं';
10514 } else if (hour < 16) {
10515 return 'दनपारां';
10516 } else if (hour < 20) {
10517 return 'सांजे';
10518 } else {
10519 return 'राती';
10520 }
10521 },
10522 });
10523
10524 //! moment.js locale configuration
10525
10526 function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
10527 var format = {
10528 s: ['thoddea sekondamni', 'thodde sekond'],
10529 ss: [number + ' sekondamni', number + ' sekond'],
10530 m: ['eka mintan', 'ek minut'],
10531 mm: [number + ' mintamni', number + ' mintam'],
10532 h: ['eka voran', 'ek vor'],
10533 hh: [number + ' voramni', number + ' voram'],
10534 d: ['eka disan', 'ek dis'],
10535 dd: [number + ' disamni', number + ' dis'],
10536 M: ['eka mhoinean', 'ek mhoino'],
10537 MM: [number + ' mhoineamni', number + ' mhoine'],
10538 y: ['eka vorsan', 'ek voros'],
10539 yy: [number + ' vorsamni', number + ' vorsam'],
10540 };
10541 return isFuture ? format[key][0] : format[key][1];
10542 }
10543
10544 hooks.defineLocale('gom-latn', {
10545 months: {
10546 standalone: 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(
10547 '_'
10548 ),
10549 format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(
10550 '_'
10551 ),
10552 isFormat: /MMMM(\s)+D[oD]?/,
10553 },
10554 monthsShort: 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split(
10555 '_'
10556 ),
10557 monthsParseExact: true,
10558 weekdays: "Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var".split('_'),
10559 weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
10560 weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
10561 weekdaysParseExact: true,
10562 longDateFormat: {
10563 LT: 'A h:mm [vazta]',
10564 LTS: 'A h:mm:ss [vazta]',
10565 L: 'DD-MM-YYYY',
10566 LL: 'D MMMM YYYY',
10567 LLL: 'D MMMM YYYY A h:mm [vazta]',
10568 LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',
10569 llll: 'ddd, D MMM YYYY, A h:mm [vazta]',
10570 },
10571 calendar: {
10572 sameDay: '[Aiz] LT',
10573 nextDay: '[Faleam] LT',
10574 nextWeek: '[Fuddlo] dddd[,] LT',
10575 lastDay: '[Kal] LT',
10576 lastWeek: '[Fattlo] dddd[,] LT',
10577 sameElse: 'L',
10578 },
10579 relativeTime: {
10580 future: '%s',
10581 past: '%s adim',
10582 s: processRelativeTime$5,
10583 ss: processRelativeTime$5,
10584 m: processRelativeTime$5,
10585 mm: processRelativeTime$5,
10586 h: processRelativeTime$5,
10587 hh: processRelativeTime$5,
10588 d: processRelativeTime$5,
10589 dd: processRelativeTime$5,
10590 M: processRelativeTime$5,
10591 MM: processRelativeTime$5,
10592 y: processRelativeTime$5,
10593 yy: processRelativeTime$5,
10594 },
10595 dayOfMonthOrdinalParse: /\d{1,2}(er)/,
10596 ordinal: function (number, period) {
10597 switch (period) {
10598 // the ordinal 'er' only applies to day of the month
10599 case 'D':
10600 return number + 'er';
10601 default:
10602 case 'M':
10603 case 'Q':
10604 case 'DDD':
10605 case 'd':
10606 case 'w':
10607 case 'W':
10608 return number;
10609 }
10610 },
10611 week: {
10612 dow: 0, // Sunday is the first day of the week
10613 doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)
10614 },
10615 meridiemParse: /rati|sokallim|donparam|sanje/,
10616 meridiemHour: function (hour, meridiem) {
10617 if (hour === 12) {
10618 hour = 0;
10619 }
10620 if (meridiem === 'rati') {
10621 return hour < 4 ? hour : hour + 12;
10622 } else if (meridiem === 'sokallim') {
10623 return hour;
10624 } else if (meridiem === 'donparam') {
10625 return hour > 12 ? hour : hour + 12;
10626 } else if (meridiem === 'sanje') {
10627 return hour + 12;
10628 }
10629 },
10630 meridiem: function (hour, minute, isLower) {
10631 if (hour < 4) {
10632 return 'rati';
10633 } else if (hour < 12) {
10634 return 'sokallim';
10635 } else if (hour < 16) {
10636 return 'donparam';
10637 } else if (hour < 20) {
10638 return 'sanje';
10639 } else {
10640 return 'rati';
10641 }
10642 },
10643 });
10644
10645 //! moment.js locale configuration
10646
10647 var symbolMap$7 = {
10648 1: '૧',
10649 2: '૨',
10650 3: '૩',
10651 4: '૪',
10652 5: '૫',
10653 6: '૬',
10654 7: '૭',
10655 8: '૮',
10656 9: '૯',
10657 0: '૦',
10658 },
10659 numberMap$6 = {
10660 '૧': '1',
10661 '૨': '2',
10662 '૩': '3',
10663 '૪': '4',
10664 '૫': '5',
10665 '૬': '6',
10666 '૭': '7',
10667 '૮': '8',
10668 '૯': '9',
10669 '૦': '0',
10670 };
10671
10672 hooks.defineLocale('gu', {
10673 months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(
10674 '_'
10675 ),
10676 monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(
10677 '_'
10678 ),
10679 monthsParseExact: true,
10680 weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(
10681 '_'
10682 ),
10683 weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
10684 weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
10685 longDateFormat: {
10686 LT: 'A h:mm વાગ્યે',
10687 LTS: 'A h:mm:ss વાગ્યે',
10688 L: 'DD/MM/YYYY',
10689 LL: 'D MMMM YYYY',
10690 LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
10691 LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',
10692 },
10693 calendar: {
10694 sameDay: '[આજ] LT',
10695 nextDay: '[કાલે] LT',
10696 nextWeek: 'dddd, LT',
10697 lastDay: '[ગઇકાલે] LT',
10698 lastWeek: '[પાછલા] dddd, LT',
10699 sameElse: 'L',
10700 },
10701 relativeTime: {
10702 future: '%s મા',
10703 past: '%s પહેલા',
10704 s: 'અમુક પળો',
10705 ss: '%d સેકંડ',
10706 m: 'એક મિનિટ',
10707 mm: '%d મિનિટ',
10708 h: 'એક કલાક',
10709 hh: '%d કલાક',
10710 d: 'એક દિવસ',
10711 dd: '%d દિવસ',
10712 M: 'એક મહિનો',
10713 MM: '%d મહિનો',
10714 y: 'એક વર્ષ',
10715 yy: '%d વર્ષ',
10716 },
10717 preparse: function (string) {
10718 return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
10719 return numberMap$6[match];
10720 });
10721 },
10722 postformat: function (string) {
10723 return string.replace(/\d/g, function (match) {
10724 return symbolMap$7[match];
10725 });
10726 },
10727 // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
10728 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
10729 meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
10730 meridiemHour: function (hour, meridiem) {
10731 if (hour === 12) {
10732 hour = 0;
10733 }
10734 if (meridiem === 'રાત') {
10735 return hour < 4 ? hour : hour + 12;
10736 } else if (meridiem === 'સવાર') {
10737 return hour;
10738 } else if (meridiem === 'બપોર') {
10739 return hour >= 10 ? hour : hour + 12;
10740 } else if (meridiem === 'સાંજ') {
10741 return hour + 12;
10742 }
10743 },
10744 meridiem: function (hour, minute, isLower) {
10745 if (hour < 4) {
10746 return 'રાત';
10747 } else if (hour < 10) {
10748 return 'સવાર';
10749 } else if (hour < 17) {
10750 return 'બપોર';
10751 } else if (hour < 20) {
10752 return 'સાંજ';
10753 } else {
10754 return 'રાત';
10755 }
10756 },
10757 week: {
10758 dow: 0, // Sunday is the first day of the week.
10759 doy: 6, // The week that contains Jan 6th is the first week of the year.
10760 },
10761 });
10762
10763 //! moment.js locale configuration
10764
10765 hooks.defineLocale('he', {
10766 months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(
10767 '_'
10768 ),
10769 monthsShort: 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split(
10770 '_'
10771 ),
10772 weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
10773 weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
10774 weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),
10775 longDateFormat: {
10776 LT: 'HH:mm',
10777 LTS: 'HH:mm:ss',
10778 L: 'DD/MM/YYYY',
10779 LL: 'D [ב]MMMM YYYY',
10780 LLL: 'D [ב]MMMM YYYY HH:mm',
10781 LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',
10782 l: 'D/M/YYYY',
10783 ll: 'D MMM YYYY',
10784 lll: 'D MMM YYYY HH:mm',
10785 llll: 'ddd, D MMM YYYY HH:mm',
10786 },
10787 calendar: {
10788 sameDay: '[היום ב־]LT',
10789 nextDay: '[מחר ב־]LT',
10790 nextWeek: 'dddd [בשעה] LT',
10791 lastDay: '[אתמול ב־]LT',
10792 lastWeek: '[ביום] dddd [האחרון בשעה] LT',
10793 sameElse: 'L',
10794 },
10795 relativeTime: {
10796 future: 'בעוד %s',
10797 past: 'לפני %s',
10798 s: 'מספר שניות',
10799 ss: '%d שניות',
10800 m: 'דקה',
10801 mm: '%d דקות',
10802 h: 'שעה',
10803 hh: function (number) {
10804 if (number === 2) {
10805 return 'שעתיים';
10806 }
10807 return number + ' שעות';
10808 },
10809 d: 'יום',
10810 dd: function (number) {
10811 if (number === 2) {
10812 return 'יומיים';
10813 }
10814 return number + ' ימים';
10815 },
10816 M: 'חודש',
10817 MM: function (number) {
10818 if (number === 2) {
10819 return 'חודשיים';
10820 }
10821 return number + ' חודשים';
10822 },
10823 y: 'שנה',
10824 yy: function (number) {
10825 if (number === 2) {
10826 return 'שנתיים';
10827 } else if (number % 10 === 0 && number !== 10) {
10828 return number + ' שנה';
10829 }
10830 return number + ' שנים';
10831 },
10832 },
10833 meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
10834 isPM: function (input) {
10835 return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
10836 },
10837 meridiem: function (hour, minute, isLower) {
10838 if (hour < 5) {
10839 return 'לפנות בוקר';
10840 } else if (hour < 10) {
10841 return 'בבוקר';
10842 } else if (hour < 12) {
10843 return isLower ? 'לפנה"צ' : 'לפני הצהריים';
10844 } else if (hour < 18) {
10845 return isLower ? 'אחה"צ' : 'אחרי הצהריים';
10846 } else {
10847 return 'בערב';
10848 }
10849 },
10850 });
10851
10852 //! moment.js locale configuration
10853
10854 var symbolMap$8 = {
10855 1: '१',
10856 2: '२',
10857 3: '३',
10858 4: '४',
10859 5: '५',
10860 6: '६',
10861 7: '७',
10862 8: '८',
10863 9: '९',
10864 0: '०',
10865 },
10866 numberMap$7 = {
10867 '१': '1',
10868 '२': '2',
10869 '३': '3',
10870 '४': '4',
10871 '५': '5',
10872 '६': '6',
10873 '७': '7',
10874 '८': '8',
10875 '९': '9',
10876 '०': '0',
10877 },
10878 monthsParse$7 = [
10879 /^जन/i,
10880 /^फ़र|फर/i,
10881 /^मार्च/i,
10882 /^अप्रै/i,
10883 /^मई/i,
10884 /^जून/i,
10885 /^जुल/i,
10886 /^अग/i,
10887 /^सितं|सित/i,
10888 /^अक्टू/i,
10889 /^नव|नवं/i,
10890 /^दिसं|दिस/i,
10891 ],
10892 shortMonthsParse = [
10893 /^जन/i,
10894 /^फ़र/i,
10895 /^मार्च/i,
10896 /^अप्रै/i,
10897 /^मई/i,
10898 /^जून/i,
10899 /^जुल/i,
10900 /^अग/i,
10901 /^सित/i,
10902 /^अक्टू/i,
10903 /^नव/i,
10904 /^दिस/i,
10905 ];
10906
10907 hooks.defineLocale('hi', {
10908 months: {
10909 format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(
10910 '_'
10911 ),
10912 standalone: 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(
10913 '_'
10914 ),
10915 },
10916 monthsShort: 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split(
10917 '_'
10918 ),
10919 weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
10920 weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
10921 weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
10922 longDateFormat: {
10923 LT: 'A h:mm बजे',
10924 LTS: 'A h:mm:ss बजे',
10925 L: 'DD/MM/YYYY',
10926 LL: 'D MMMM YYYY',
10927 LLL: 'D MMMM YYYY, A h:mm बजे',
10928 LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',
10929 },
10930
10931 monthsParse: monthsParse$7,
10932 longMonthsParse: monthsParse$7,
10933 shortMonthsParse: shortMonthsParse,
10934
10935 monthsRegex: /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
10936
10937 monthsShortRegex: /^(जनवरी|जन\.?|फ़रवरी|फरवरी|फ़र\.?|मार्च?|अप्रैल|अप्रै\.?|मई?|जून?|जुलाई|जुल\.?|अगस्त|अग\.?|सितम्बर|सितंबर|सित\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर|नव\.?|दिसम्बर|दिसंबर|दिस\.?)/i,
10938
10939 monthsStrictRegex: /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\.?|अक्टूबर|अक्टू\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,
10940
10941 monthsShortStrictRegex: /^(जन\.?|फ़र\.?|मार्च?|अप्रै\.?|मई?|जून?|जुल\.?|अग\.?|सित\.?|अक्टू\.?|नव\.?|दिस\.?)/i,
10942
10943 calendar: {
10944 sameDay: '[आज] LT',
10945 nextDay: '[कल] LT',
10946 nextWeek: 'dddd, LT',
10947 lastDay: '[कल] LT',
10948 lastWeek: '[पिछले] dddd, LT',
10949 sameElse: 'L',
10950 },
10951 relativeTime: {
10952 future: '%s में',
10953 past: '%s पहले',
10954 s: 'कुछ ही क्षण',
10955 ss: '%d सेकंड',
10956 m: 'एक मिनट',
10957 mm: '%d मिनट',
10958 h: 'एक घंटा',
10959 hh: '%d घंटे',
10960 d: 'एक दिन',
10961 dd: '%d दिन',
10962 M: 'एक महीने',
10963 MM: '%d महीने',
10964 y: 'एक वर्ष',
10965 yy: '%d वर्ष',
10966 },
10967 preparse: function (string) {
10968 return string.replace(/[१२३४५६७८९०]/g, function (match) {
10969 return numberMap$7[match];
10970 });
10971 },
10972 postformat: function (string) {
10973 return string.replace(/\d/g, function (match) {
10974 return symbolMap$8[match];
10975 });
10976 },
10977 // Hindi notation for meridiems are quite fuzzy in practice. While there exists
10978 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
10979 meridiemParse: /रात|सुबह|दोपहर|शाम/,
10980 meridiemHour: function (hour, meridiem) {
10981 if (hour === 12) {
10982 hour = 0;
10983 }
10984 if (meridiem === 'रात') {
10985 return hour < 4 ? hour : hour + 12;
10986 } else if (meridiem === 'सुबह') {
10987 return hour;
10988 } else if (meridiem === 'दोपहर') {
10989 return hour >= 10 ? hour : hour + 12;
10990 } else if (meridiem === 'शाम') {
10991 return hour + 12;
10992 }
10993 },
10994 meridiem: function (hour, minute, isLower) {
10995 if (hour < 4) {
10996 return 'रात';
10997 } else if (hour < 10) {
10998 return 'सुबह';
10999 } else if (hour < 17) {
11000 return 'दोपहर';
11001 } else if (hour < 20) {
11002 return 'शाम';
11003 } else {
11004 return 'रात';
11005 }
11006 },
11007 week: {
11008 dow: 0, // Sunday is the first day of the week.
11009 doy: 6, // The week that contains Jan 6th is the first week of the year.
11010 },
11011 });
11012
11013 //! moment.js locale configuration
11014
11015 function translate$3(number, withoutSuffix, key) {
11016 var result = number + ' ';
11017 switch (key) {
11018 case 'ss':
11019 if (number === 1) {
11020 result += 'sekunda';
11021 } else if (number === 2 || number === 3 || number === 4) {
11022 result += 'sekunde';
11023 } else {
11024 result += 'sekundi';
11025 }
11026 return result;
11027 case 'm':
11028 return withoutSuffix ? 'jedna minuta' : 'jedne minute';
11029 case 'mm':
11030 if (number === 1) {
11031 result += 'minuta';
11032 } else if (number === 2 || number === 3 || number === 4) {
11033 result += 'minute';
11034 } else {
11035 result += 'minuta';
11036 }
11037 return result;
11038 case 'h':
11039 return withoutSuffix ? 'jedan sat' : 'jednog sata';
11040 case 'hh':
11041 if (number === 1) {
11042 result += 'sat';
11043 } else if (number === 2 || number === 3 || number === 4) {
11044 result += 'sata';
11045 } else {
11046 result += 'sati';
11047 }
11048 return result;
11049 case 'dd':
11050 if (number === 1) {
11051 result += 'dan';
11052 } else {
11053 result += 'dana';
11054 }
11055 return result;
11056 case 'MM':
11057 if (number === 1) {
11058 result += 'mjesec';
11059 } else if (number === 2 || number === 3 || number === 4) {
11060 result += 'mjeseca';
11061 } else {
11062 result += 'mjeseci';
11063 }
11064 return result;
11065 case 'yy':
11066 if (number === 1) {
11067 result += 'godina';
11068 } else if (number === 2 || number === 3 || number === 4) {
11069 result += 'godine';
11070 } else {
11071 result += 'godina';
11072 }
11073 return result;
11074 }
11075 }
11076
11077 hooks.defineLocale('hr', {
11078 months: {
11079 format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(
11080 '_'
11081 ),
11082 standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(
11083 '_'
11084 ),
11085 },
11086 monthsShort: 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(
11087 '_'
11088 ),
11089 monthsParseExact: true,
11090 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
11091 '_'
11092 ),
11093 weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
11094 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
11095 weekdaysParseExact: true,
11096 longDateFormat: {
11097 LT: 'H:mm',
11098 LTS: 'H:mm:ss',
11099 L: 'DD.MM.YYYY',
11100 LL: 'Do MMMM YYYY',
11101 LLL: 'Do MMMM YYYY H:mm',
11102 LLLL: 'dddd, Do MMMM YYYY H:mm',
11103 },
11104 calendar: {
11105 sameDay: '[danas u] LT',
11106 nextDay: '[sutra u] LT',
11107 nextWeek: function () {
11108 switch (this.day()) {
11109 case 0:
11110 return '[u] [nedjelju] [u] LT';
11111 case 3:
11112 return '[u] [srijedu] [u] LT';
11113 case 6:
11114 return '[u] [subotu] [u] LT';
11115 case 1:
11116 case 2:
11117 case 4:
11118 case 5:
11119 return '[u] dddd [u] LT';
11120 }
11121 },
11122 lastDay: '[jučer u] LT',
11123 lastWeek: function () {
11124 switch (this.day()) {
11125 case 0:
11126 return '[prošlu] [nedjelju] [u] LT';
11127 case 3:
11128 return '[prošlu] [srijedu] [u] LT';
11129 case 6:
11130 return '[prošle] [subote] [u] LT';
11131 case 1:
11132 case 2:
11133 case 4:
11134 case 5:
11135 return '[prošli] dddd [u] LT';
11136 }
11137 },
11138 sameElse: 'L',
11139 },
11140 relativeTime: {
11141 future: 'za %s',
11142 past: 'prije %s',
11143 s: 'par sekundi',
11144 ss: translate$3,
11145 m: translate$3,
11146 mm: translate$3,
11147 h: translate$3,
11148 hh: translate$3,
11149 d: 'dan',
11150 dd: translate$3,
11151 M: 'mjesec',
11152 MM: translate$3,
11153 y: 'godinu',
11154 yy: translate$3,
11155 },
11156 dayOfMonthOrdinalParse: /\d{1,2}\./,
11157 ordinal: '%d.',
11158 week: {
11159 dow: 1, // Monday is the first day of the week.
11160 doy: 7, // The week that contains Jan 7th is the first week of the year.
11161 },
11162 });
11163
11164 //! moment.js locale configuration
11165
11166 var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(
11167 ' '
11168 );
11169 function translate$4(number, withoutSuffix, key, isFuture) {
11170 var num = number;
11171 switch (key) {
11172 case 's':
11173 return isFuture || withoutSuffix
11174 ? 'néhány másodperc'
11175 : 'néhány másodperce';
11176 case 'ss':
11177 return num + (isFuture || withoutSuffix)
11178 ? ' másodperc'
11179 : ' másodperce';
11180 case 'm':
11181 return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
11182 case 'mm':
11183 return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
11184 case 'h':
11185 return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
11186 case 'hh':
11187 return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
11188 case 'd':
11189 return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
11190 case 'dd':
11191 return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
11192 case 'M':
11193 return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
11194 case 'MM':
11195 return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
11196 case 'y':
11197 return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
11198 case 'yy':
11199 return num + (isFuture || withoutSuffix ? ' év' : ' éve');
11200 }
11201 return '';
11202 }
11203 function week(isFuture) {
11204 return (
11205 (isFuture ? '' : '[múlt] ') +
11206 '[' +
11207 weekEndings[this.day()] +
11208 '] LT[-kor]'
11209 );
11210 }
11211
11212 hooks.defineLocale('hu', {
11213 months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(
11214 '_'
11215 ),
11216 monthsShort: 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(
11217 '_'
11218 ),
11219 monthsParseExact: true,
11220 weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
11221 weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
11222 weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),
11223 longDateFormat: {
11224 LT: 'H:mm',
11225 LTS: 'H:mm:ss',
11226 L: 'YYYY.MM.DD.',
11227 LL: 'YYYY. MMMM D.',
11228 LLL: 'YYYY. MMMM D. H:mm',
11229 LLLL: 'YYYY. MMMM D., dddd H:mm',
11230 },
11231 meridiemParse: /de|du/i,
11232 isPM: function (input) {
11233 return input.charAt(1).toLowerCase() === 'u';
11234 },
11235 meridiem: function (hours, minutes, isLower) {
11236 if (hours < 12) {
11237 return isLower === true ? 'de' : 'DE';
11238 } else {
11239 return isLower === true ? 'du' : 'DU';
11240 }
11241 },
11242 calendar: {
11243 sameDay: '[ma] LT[-kor]',
11244 nextDay: '[holnap] LT[-kor]',
11245 nextWeek: function () {
11246 return week.call(this, true);
11247 },
11248 lastDay: '[tegnap] LT[-kor]',
11249 lastWeek: function () {
11250 return week.call(this, false);
11251 },
11252 sameElse: 'L',
11253 },
11254 relativeTime: {
11255 future: '%s múlva',
11256 past: '%s',
11257 s: translate$4,
11258 ss: translate$4,
11259 m: translate$4,
11260 mm: translate$4,
11261 h: translate$4,
11262 hh: translate$4,
11263 d: translate$4,
11264 dd: translate$4,
11265 M: translate$4,
11266 MM: translate$4,
11267 y: translate$4,
11268 yy: translate$4,
11269 },
11270 dayOfMonthOrdinalParse: /\d{1,2}\./,
11271 ordinal: '%d.',
11272 week: {
11273 dow: 1, // Monday is the first day of the week.
11274 doy: 4, // The week that contains Jan 4th is the first week of the year.
11275 },
11276 });
11277
11278 //! moment.js locale configuration
11279
11280 hooks.defineLocale('hy-am', {
11281 months: {
11282 format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(
11283 '_'
11284 ),
11285 standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(
11286 '_'
11287 ),
11288 },
11289 monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
11290 weekdays: 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(
11291 '_'
11292 ),
11293 weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
11294 weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
11295 longDateFormat: {
11296 LT: 'HH:mm',
11297 LTS: 'HH:mm:ss',
11298 L: 'DD.MM.YYYY',
11299 LL: 'D MMMM YYYY թ.',
11300 LLL: 'D MMMM YYYY թ., HH:mm',
11301 LLLL: 'dddd, D MMMM YYYY թ., HH:mm',
11302 },
11303 calendar: {
11304 sameDay: '[այսօր] LT',
11305 nextDay: '[վաղը] LT',
11306 lastDay: '[երեկ] LT',
11307 nextWeek: function () {
11308 return 'dddd [օրը ժամը] LT';
11309 },
11310 lastWeek: function () {
11311 return '[անցած] dddd [օրը ժամը] LT';
11312 },
11313 sameElse: 'L',
11314 },
11315 relativeTime: {
11316 future: '%s հետո',
11317 past: '%s առաջ',
11318 s: 'մի քանի վայրկյան',
11319 ss: '%d վայրկյան',
11320 m: 'րոպե',
11321 mm: '%d րոպե',
11322 h: 'ժամ',
11323 hh: '%d ժամ',
11324 d: 'օր',
11325 dd: '%d օր',
11326 M: 'ամիս',
11327 MM: '%d ամիս',
11328 y: 'տարի',
11329 yy: '%d տարի',
11330 },
11331 meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
11332 isPM: function (input) {
11333 return /^(ցերեկվա|երեկոյան)$/.test(input);
11334 },
11335 meridiem: function (hour) {
11336 if (hour < 4) {
11337 return 'գիշերվա';
11338 } else if (hour < 12) {
11339 return 'առավոտվա';
11340 } else if (hour < 17) {
11341 return 'ցերեկվա';
11342 } else {
11343 return 'երեկոյան';
11344 }
11345 },
11346 dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
11347 ordinal: function (number, period) {
11348 switch (period) {
11349 case 'DDD':
11350 case 'w':
11351 case 'W':
11352 case 'DDDo':
11353 if (number === 1) {
11354 return number + '-ին';
11355 }
11356 return number + '-րդ';
11357 default:
11358 return number;
11359 }
11360 },
11361 week: {
11362 dow: 1, // Monday is the first day of the week.
11363 doy: 7, // The week that contains Jan 7th is the first week of the year.
11364 },
11365 });
11366
11367 //! moment.js locale configuration
11368
11369 hooks.defineLocale('id', {
11370 months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(
11371 '_'
11372 ),
11373 monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
11374 weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
11375 weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
11376 weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
11377 longDateFormat: {
11378 LT: 'HH.mm',
11379 LTS: 'HH.mm.ss',
11380 L: 'DD/MM/YYYY',
11381 LL: 'D MMMM YYYY',
11382 LLL: 'D MMMM YYYY [pukul] HH.mm',
11383 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
11384 },
11385 meridiemParse: /pagi|siang|sore|malam/,
11386 meridiemHour: function (hour, meridiem) {
11387 if (hour === 12) {
11388 hour = 0;
11389 }
11390 if (meridiem === 'pagi') {
11391 return hour;
11392 } else if (meridiem === 'siang') {
11393 return hour >= 11 ? hour : hour + 12;
11394 } else if (meridiem === 'sore' || meridiem === 'malam') {
11395 return hour + 12;
11396 }
11397 },
11398 meridiem: function (hours, minutes, isLower) {
11399 if (hours < 11) {
11400 return 'pagi';
11401 } else if (hours < 15) {
11402 return 'siang';
11403 } else if (hours < 19) {
11404 return 'sore';
11405 } else {
11406 return 'malam';
11407 }
11408 },
11409 calendar: {
11410 sameDay: '[Hari ini pukul] LT',
11411 nextDay: '[Besok pukul] LT',
11412 nextWeek: 'dddd [pukul] LT',
11413 lastDay: '[Kemarin pukul] LT',
11414 lastWeek: 'dddd [lalu pukul] LT',
11415 sameElse: 'L',
11416 },
11417 relativeTime: {
11418 future: 'dalam %s',
11419 past: '%s yang lalu',
11420 s: 'beberapa detik',
11421 ss: '%d detik',
11422 m: 'semenit',
11423 mm: '%d menit',
11424 h: 'sejam',
11425 hh: '%d jam',
11426 d: 'sehari',
11427 dd: '%d hari',
11428 M: 'sebulan',
11429 MM: '%d bulan',
11430 y: 'setahun',
11431 yy: '%d tahun',
11432 },
11433 week: {
11434 dow: 0, // Sunday is the first day of the week.
11435 doy: 6, // The week that contains Jan 6th is the first week of the year.
11436 },
11437 });
11438
11439 //! moment.js locale configuration
11440
11441 function plural$2(n) {
11442 if (n % 100 === 11) {
11443 return true;
11444 } else if (n % 10 === 1) {
11445 return false;
11446 }
11447 return true;
11448 }
11449 function translate$5(number, withoutSuffix, key, isFuture) {
11450 var result = number + ' ';
11451 switch (key) {
11452 case 's':
11453 return withoutSuffix || isFuture
11454 ? 'nokkrar sekúndur'
11455 : 'nokkrum sekúndum';
11456 case 'ss':
11457 if (plural$2(number)) {
11458 return (
11459 result +
11460 (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')
11461 );
11462 }
11463 return result + 'sekúnda';
11464 case 'm':
11465 return withoutSuffix ? 'mínúta' : 'mínútu';
11466 case 'mm':
11467 if (plural$2(number)) {
11468 return (
11469 result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')
11470 );
11471 } else if (withoutSuffix) {
11472 return result + 'mínúta';
11473 }
11474 return result + 'mínútu';
11475 case 'hh':
11476 if (plural$2(number)) {
11477 return (
11478 result +
11479 (withoutSuffix || isFuture
11480 ? 'klukkustundir'
11481 : 'klukkustundum')
11482 );
11483 }
11484 return result + 'klukkustund';
11485 case 'd':
11486 if (withoutSuffix) {
11487 return 'dagur';
11488 }
11489 return isFuture ? 'dag' : 'degi';
11490 case 'dd':
11491 if (plural$2(number)) {
11492 if (withoutSuffix) {
11493 return result + 'dagar';
11494 }
11495 return result + (isFuture ? 'daga' : 'dögum');
11496 } else if (withoutSuffix) {
11497 return result + 'dagur';
11498 }
11499 return result + (isFuture ? 'dag' : 'degi');
11500 case 'M':
11501 if (withoutSuffix) {
11502 return 'mánuður';
11503 }
11504 return isFuture ? 'mánuð' : 'mánuði';
11505 case 'MM':
11506 if (plural$2(number)) {
11507 if (withoutSuffix) {
11508 return result + 'mánuðir';
11509 }
11510 return result + (isFuture ? 'mánuði' : 'mánuðum');
11511 } else if (withoutSuffix) {
11512 return result + 'mánuður';
11513 }
11514 return result + (isFuture ? 'mánuð' : 'mánuði');
11515 case 'y':
11516 return withoutSuffix || isFuture ? 'ár' : 'ári';
11517 case 'yy':
11518 if (plural$2(number)) {
11519 return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
11520 }
11521 return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
11522 }
11523 }
11524
11525 hooks.defineLocale('is', {
11526 months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(
11527 '_'
11528 ),
11529 monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
11530 weekdays: 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(
11531 '_'
11532 ),
11533 weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
11534 weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
11535 longDateFormat: {
11536 LT: 'H:mm',
11537 LTS: 'H:mm:ss',
11538 L: 'DD.MM.YYYY',
11539 LL: 'D. MMMM YYYY',
11540 LLL: 'D. MMMM YYYY [kl.] H:mm',
11541 LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',
11542 },
11543 calendar: {
11544 sameDay: '[í dag kl.] LT',
11545 nextDay: '[á morgun kl.] LT',
11546 nextWeek: 'dddd [kl.] LT',
11547 lastDay: '[í gær kl.] LT',
11548 lastWeek: '[síðasta] dddd [kl.] LT',
11549 sameElse: 'L',
11550 },
11551 relativeTime: {
11552 future: 'eftir %s',
11553 past: 'fyrir %s síðan',
11554 s: translate$5,
11555 ss: translate$5,
11556 m: translate$5,
11557 mm: translate$5,
11558 h: 'klukkustund',
11559 hh: translate$5,
11560 d: translate$5,
11561 dd: translate$5,
11562 M: translate$5,
11563 MM: translate$5,
11564 y: translate$5,
11565 yy: translate$5,
11566 },
11567 dayOfMonthOrdinalParse: /\d{1,2}\./,
11568 ordinal: '%d.',
11569 week: {
11570 dow: 1, // Monday is the first day of the week.
11571 doy: 4, // The week that contains Jan 4th is the first week of the year.
11572 },
11573 });
11574
11575 //! moment.js locale configuration
11576
11577 hooks.defineLocale('it-ch', {
11578 months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
11579 '_'
11580 ),
11581 monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
11582 weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
11583 '_'
11584 ),
11585 weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
11586 weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
11587 longDateFormat: {
11588 LT: 'HH:mm',
11589 LTS: 'HH:mm:ss',
11590 L: 'DD.MM.YYYY',
11591 LL: 'D MMMM YYYY',
11592 LLL: 'D MMMM YYYY HH:mm',
11593 LLLL: 'dddd D MMMM YYYY HH:mm',
11594 },
11595 calendar: {
11596 sameDay: '[Oggi alle] LT',
11597 nextDay: '[Domani alle] LT',
11598 nextWeek: 'dddd [alle] LT',
11599 lastDay: '[Ieri alle] LT',
11600 lastWeek: function () {
11601 switch (this.day()) {
11602 case 0:
11603 return '[la scorsa] dddd [alle] LT';
11604 default:
11605 return '[lo scorso] dddd [alle] LT';
11606 }
11607 },
11608 sameElse: 'L',
11609 },
11610 relativeTime: {
11611 future: function (s) {
11612 return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;
11613 },
11614 past: '%s fa',
11615 s: 'alcuni secondi',
11616 ss: '%d secondi',
11617 m: 'un minuto',
11618 mm: '%d minuti',
11619 h: "un'ora",
11620 hh: '%d ore',
11621 d: 'un giorno',
11622 dd: '%d giorni',
11623 M: 'un mese',
11624 MM: '%d mesi',
11625 y: 'un anno',
11626 yy: '%d anni',
11627 },
11628 dayOfMonthOrdinalParse: /\d{1,2}º/,
11629 ordinal: '%dº',
11630 week: {
11631 dow: 1, // Monday is the first day of the week.
11632 doy: 4, // The week that contains Jan 4th is the first week of the year.
11633 },
11634 });
11635
11636 //! moment.js locale configuration
11637
11638 hooks.defineLocale('it', {
11639 months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(
11640 '_'
11641 ),
11642 monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
11643 weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(
11644 '_'
11645 ),
11646 weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
11647 weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),
11648 longDateFormat: {
11649 LT: 'HH:mm',
11650 LTS: 'HH:mm:ss',
11651 L: 'DD/MM/YYYY',
11652 LL: 'D MMMM YYYY',
11653 LLL: 'D MMMM YYYY HH:mm',
11654 LLLL: 'dddd D MMMM YYYY HH:mm',
11655 },
11656 calendar: {
11657 sameDay: function () {
11658 return (
11659 '[Oggi a' +
11660 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
11661 ']LT'
11662 );
11663 },
11664 nextDay: function () {
11665 return (
11666 '[Domani a' +
11667 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
11668 ']LT'
11669 );
11670 },
11671 nextWeek: function () {
11672 return (
11673 'dddd [a' +
11674 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
11675 ']LT'
11676 );
11677 },
11678 lastDay: function () {
11679 return (
11680 '[Ieri a' +
11681 (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : "ll'") +
11682 ']LT'
11683 );
11684 },
11685 lastWeek: function () {
11686 switch (this.day()) {
11687 case 0:
11688 return (
11689 '[La scorsa] dddd [a' +
11690 (this.hours() > 1
11691 ? 'lle '
11692 : this.hours() === 0
11693 ? ' '
11694 : "ll'") +
11695 ']LT'
11696 );
11697 default:
11698 return (
11699 '[Lo scorso] dddd [a' +
11700 (this.hours() > 1
11701 ? 'lle '
11702 : this.hours() === 0
11703 ? ' '
11704 : "ll'") +
11705 ']LT'
11706 );
11707 }
11708 },
11709 sameElse: 'L',
11710 },
11711 relativeTime: {
11712 future: 'tra %s',
11713 past: '%s fa',
11714 s: 'alcuni secondi',
11715 ss: '%d secondi',
11716 m: 'un minuto',
11717 mm: '%d minuti',
11718 h: "un'ora",
11719 hh: '%d ore',
11720 d: 'un giorno',
11721 dd: '%d giorni',
11722 w: 'una settimana',
11723 ww: '%d settimane',
11724 M: 'un mese',
11725 MM: '%d mesi',
11726 y: 'un anno',
11727 yy: '%d anni',
11728 },
11729 dayOfMonthOrdinalParse: /\d{1,2}º/,
11730 ordinal: '%dº',
11731 week: {
11732 dow: 1, // Monday is the first day of the week.
11733 doy: 4, // The week that contains Jan 4th is the first week of the year.
11734 },
11735 });
11736
11737 //! moment.js locale configuration
11738
11739 hooks.defineLocale('ja', {
11740 eras: [
11741 {
11742 since: '2019-05-01',
11743 offset: 1,
11744 name: '令和',
11745 narrow: '㋿',
11746 abbr: 'R',
11747 },
11748 {
11749 since: '1989-01-08',
11750 until: '2019-04-30',
11751 offset: 1,
11752 name: '平成',
11753 narrow: '㍻',
11754 abbr: 'H',
11755 },
11756 {
11757 since: '1926-12-25',
11758 until: '1989-01-07',
11759 offset: 1,
11760 name: '昭和',
11761 narrow: '㍼',
11762 abbr: 'S',
11763 },
11764 {
11765 since: '1912-07-30',
11766 until: '1926-12-24',
11767 offset: 1,
11768 name: '大正',
11769 narrow: '㍽',
11770 abbr: 'T',
11771 },
11772 {
11773 since: '1873-01-01',
11774 until: '1912-07-29',
11775 offset: 6,
11776 name: '明治',
11777 narrow: '㍾',
11778 abbr: 'M',
11779 },
11780 {
11781 since: '0001-01-01',
11782 until: '1873-12-31',
11783 offset: 1,
11784 name: '西暦',
11785 narrow: 'AD',
11786 abbr: 'AD',
11787 },
11788 {
11789 since: '0000-12-31',
11790 until: -Infinity,
11791 offset: 1,
11792 name: '紀元前',
11793 narrow: 'BC',
11794 abbr: 'BC',
11795 },
11796 ],
11797 eraYearOrdinalRegex: /(元|\d+)年/,
11798 eraYearOrdinalParse: function (input, match) {
11799 return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);
11800 },
11801 months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
11802 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
11803 '_'
11804 ),
11805 weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
11806 weekdaysShort: '日_月_火_水_木_金_土'.split('_'),
11807 weekdaysMin: '日_月_火_水_木_金_土'.split('_'),
11808 longDateFormat: {
11809 LT: 'HH:mm',
11810 LTS: 'HH:mm:ss',
11811 L: 'YYYY/MM/DD',
11812 LL: 'YYYY年M月D日',
11813 LLL: 'YYYY年M月D日 HH:mm',
11814 LLLL: 'YYYY年M月D日 dddd HH:mm',
11815 l: 'YYYY/MM/DD',
11816 ll: 'YYYY年M月D日',
11817 lll: 'YYYY年M月D日 HH:mm',
11818 llll: 'YYYY年M月D日(ddd) HH:mm',
11819 },
11820 meridiemParse: /午前|午後/i,
11821 isPM: function (input) {
11822 return input === '午後';
11823 },
11824 meridiem: function (hour, minute, isLower) {
11825 if (hour < 12) {
11826 return '午前';
11827 } else {
11828 return '午後';
11829 }
11830 },
11831 calendar: {
11832 sameDay: '[今日] LT',
11833 nextDay: '[明日] LT',
11834 nextWeek: function (now) {
11835 if (now.week() !== this.week()) {
11836 return '[来週]dddd LT';
11837 } else {
11838 return 'dddd LT';
11839 }
11840 },
11841 lastDay: '[昨日] LT',
11842 lastWeek: function (now) {
11843 if (this.week() !== now.week()) {
11844 return '[先週]dddd LT';
11845 } else {
11846 return 'dddd LT';
11847 }
11848 },
11849 sameElse: 'L',
11850 },
11851 dayOfMonthOrdinalParse: /\d{1,2}日/,
11852 ordinal: function (number, period) {
11853 switch (period) {
11854 case 'y':
11855 return number === 1 ? '元年' : number + '年';
11856 case 'd':
11857 case 'D':
11858 case 'DDD':
11859 return number + '日';
11860 default:
11861 return number;
11862 }
11863 },
11864 relativeTime: {
11865 future: '%s後',
11866 past: '%s前',
11867 s: '数秒',
11868 ss: '%d秒',
11869 m: '1分',
11870 mm: '%d分',
11871 h: '1時間',
11872 hh: '%d時間',
11873 d: '1日',
11874 dd: '%d日',
11875 M: '1ヶ月',
11876 MM: '%dヶ月',
11877 y: '1年',
11878 yy: '%d年',
11879 },
11880 });
11881
11882 //! moment.js locale configuration
11883
11884 hooks.defineLocale('jv', {
11885 months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(
11886 '_'
11887 ),
11888 monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
11889 weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
11890 weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
11891 weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
11892 longDateFormat: {
11893 LT: 'HH.mm',
11894 LTS: 'HH.mm.ss',
11895 L: 'DD/MM/YYYY',
11896 LL: 'D MMMM YYYY',
11897 LLL: 'D MMMM YYYY [pukul] HH.mm',
11898 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
11899 },
11900 meridiemParse: /enjing|siyang|sonten|ndalu/,
11901 meridiemHour: function (hour, meridiem) {
11902 if (hour === 12) {
11903 hour = 0;
11904 }
11905 if (meridiem === 'enjing') {
11906 return hour;
11907 } else if (meridiem === 'siyang') {
11908 return hour >= 11 ? hour : hour + 12;
11909 } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
11910 return hour + 12;
11911 }
11912 },
11913 meridiem: function (hours, minutes, isLower) {
11914 if (hours < 11) {
11915 return 'enjing';
11916 } else if (hours < 15) {
11917 return 'siyang';
11918 } else if (hours < 19) {
11919 return 'sonten';
11920 } else {
11921 return 'ndalu';
11922 }
11923 },
11924 calendar: {
11925 sameDay: '[Dinten puniko pukul] LT',
11926 nextDay: '[Mbenjang pukul] LT',
11927 nextWeek: 'dddd [pukul] LT',
11928 lastDay: '[Kala wingi pukul] LT',
11929 lastWeek: 'dddd [kepengker pukul] LT',
11930 sameElse: 'L',
11931 },
11932 relativeTime: {
11933 future: 'wonten ing %s',
11934 past: '%s ingkang kepengker',
11935 s: 'sawetawis detik',
11936 ss: '%d detik',
11937 m: 'setunggal menit',
11938 mm: '%d menit',
11939 h: 'setunggal jam',
11940 hh: '%d jam',
11941 d: 'sedinten',
11942 dd: '%d dinten',
11943 M: 'sewulan',
11944 MM: '%d wulan',
11945 y: 'setaun',
11946 yy: '%d taun',
11947 },
11948 week: {
11949 dow: 1, // Monday is the first day of the week.
11950 doy: 7, // The week that contains Jan 7th is the first week of the year.
11951 },
11952 });
11953
11954 //! moment.js locale configuration
11955
11956 hooks.defineLocale('ka', {
11957 months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(
11958 '_'
11959 ),
11960 monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
11961 weekdays: {
11962 standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(
11963 '_'
11964 ),
11965 format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(
11966 '_'
11967 ),
11968 isFormat: /(წინა|შემდეგ)/,
11969 },
11970 weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
11971 weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
11972 longDateFormat: {
11973 LT: 'HH:mm',
11974 LTS: 'HH:mm:ss',
11975 L: 'DD/MM/YYYY',
11976 LL: 'D MMMM YYYY',
11977 LLL: 'D MMMM YYYY HH:mm',
11978 LLLL: 'dddd, D MMMM YYYY HH:mm',
11979 },
11980 calendar: {
11981 sameDay: '[დღეს] LT[-ზე]',
11982 nextDay: '[ხვალ] LT[-ზე]',
11983 lastDay: '[გუშინ] LT[-ზე]',
11984 nextWeek: '[შემდეგ] dddd LT[-ზე]',
11985 lastWeek: '[წინა] dddd LT-ზე',
11986 sameElse: 'L',
11987 },
11988 relativeTime: {
11989 future: function (s) {
11990 return s.replace(/(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/, function (
11991 $0,
11992 $1,
11993 $2
11994 ) {
11995 return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';
11996 });
11997 },
11998 past: function (s) {
11999 if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {
12000 return s.replace(/(ი|ე)$/, 'ის წინ');
12001 }
12002 if (/წელი/.test(s)) {
12003 return s.replace(/წელი$/, 'წლის წინ');
12004 }
12005 return s;
12006 },
12007 s: 'რამდენიმე წამი',
12008 ss: '%d წამი',
12009 m: 'წუთი',
12010 mm: '%d წუთი',
12011 h: 'საათი',
12012 hh: '%d საათი',
12013 d: 'დღე',
12014 dd: '%d დღე',
12015 M: 'თვე',
12016 MM: '%d თვე',
12017 y: 'წელი',
12018 yy: '%d წელი',
12019 },
12020 dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
12021 ordinal: function (number) {
12022 if (number === 0) {
12023 return number;
12024 }
12025 if (number === 1) {
12026 return number + '-ლი';
12027 }
12028 if (
12029 number < 20 ||
12030 (number <= 100 && number % 20 === 0) ||
12031 number % 100 === 0
12032 ) {
12033 return 'მე-' + number;
12034 }
12035 return number + '-ე';
12036 },
12037 week: {
12038 dow: 1,
12039 doy: 7,
12040 },
12041 });
12042
12043 //! moment.js locale configuration
12044
12045 var suffixes$1 = {
12046 0: '-ші',
12047 1: '-ші',
12048 2: '-ші',
12049 3: '-ші',
12050 4: '-ші',
12051 5: '-ші',
12052 6: '-шы',
12053 7: '-ші',
12054 8: '-ші',
12055 9: '-шы',
12056 10: '-шы',
12057 20: '-шы',
12058 30: '-шы',
12059 40: '-шы',
12060 50: '-ші',
12061 60: '-шы',
12062 70: '-ші',
12063 80: '-ші',
12064 90: '-шы',
12065 100: '-ші',
12066 };
12067
12068 hooks.defineLocale('kk', {
12069 months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(
12070 '_'
12071 ),
12072 monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
12073 weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(
12074 '_'
12075 ),
12076 weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
12077 weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
12078 longDateFormat: {
12079 LT: 'HH:mm',
12080 LTS: 'HH:mm:ss',
12081 L: 'DD.MM.YYYY',
12082 LL: 'D MMMM YYYY',
12083 LLL: 'D MMMM YYYY HH:mm',
12084 LLLL: 'dddd, D MMMM YYYY HH:mm',
12085 },
12086 calendar: {
12087 sameDay: '[Бүгін сағат] LT',
12088 nextDay: '[Ертең сағат] LT',
12089 nextWeek: 'dddd [сағат] LT',
12090 lastDay: '[Кеше сағат] LT',
12091 lastWeek: '[Өткен аптаның] dddd [сағат] LT',
12092 sameElse: 'L',
12093 },
12094 relativeTime: {
12095 future: '%s ішінде',
12096 past: '%s бұрын',
12097 s: 'бірнеше секунд',
12098 ss: '%d секунд',
12099 m: 'бір минут',
12100 mm: '%d минут',
12101 h: 'бір сағат',
12102 hh: '%d сағат',
12103 d: 'бір күн',
12104 dd: '%d күн',
12105 M: 'бір ай',
12106 MM: '%d ай',
12107 y: 'бір жыл',
12108 yy: '%d жыл',
12109 },
12110 dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
12111 ordinal: function (number) {
12112 var a = number % 10,
12113 b = number >= 100 ? 100 : null;
12114 return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
12115 },
12116 week: {
12117 dow: 1, // Monday is the first day of the week.
12118 doy: 7, // The week that contains Jan 7th is the first week of the year.
12119 },
12120 });
12121
12122 //! moment.js locale configuration
12123
12124 var symbolMap$9 = {
12125 1: '១',
12126 2: '២',
12127 3: '៣',
12128 4: '៤',
12129 5: '៥',
12130 6: '៦',
12131 7: '៧',
12132 8: '៨',
12133 9: '៩',
12134 0: '០',
12135 },
12136 numberMap$8 = {
12137 '១': '1',
12138 '២': '2',
12139 '៣': '3',
12140 '៤': '4',
12141 '៥': '5',
12142 '៦': '6',
12143 '៧': '7',
12144 '៨': '8',
12145 '៩': '9',
12146 '០': '0',
12147 };
12148
12149 hooks.defineLocale('km', {
12150 months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
12151 '_'
12152 ),
12153 monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
12154 '_'
12155 ),
12156 weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
12157 weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
12158 weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
12159 weekdaysParseExact: true,
12160 longDateFormat: {
12161 LT: 'HH:mm',
12162 LTS: 'HH:mm:ss',
12163 L: 'DD/MM/YYYY',
12164 LL: 'D MMMM YYYY',
12165 LLL: 'D MMMM YYYY HH:mm',
12166 LLLL: 'dddd, D MMMM YYYY HH:mm',
12167 },
12168 meridiemParse: /ព្រឹក|ល្ងាច/,
12169 isPM: function (input) {
12170 return input === 'ល្ងាច';
12171 },
12172 meridiem: function (hour, minute, isLower) {
12173 if (hour < 12) {
12174 return 'ព្រឹក';
12175 } else {
12176 return 'ល្ងាច';
12177 }
12178 },
12179 calendar: {
12180 sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
12181 nextDay: '[ស្អែក ម៉ោង] LT',
12182 nextWeek: 'dddd [ម៉ោង] LT',
12183 lastDay: '[ម្សិលមិញ ម៉ោង] LT',
12184 lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
12185 sameElse: 'L',
12186 },
12187 relativeTime: {
12188 future: '%sទៀត',
12189 past: '%sមុន',
12190 s: 'ប៉ុន្មានវិនាទី',
12191 ss: '%d វិនាទី',
12192 m: 'មួយនាទី',
12193 mm: '%d នាទី',
12194 h: 'មួយម៉ោង',
12195 hh: '%d ម៉ោង',
12196 d: 'មួយថ្ងៃ',
12197 dd: '%d ថ្ងៃ',
12198 M: 'មួយខែ',
12199 MM: '%d ខែ',
12200 y: 'មួយឆ្នាំ',
12201 yy: '%d ឆ្នាំ',
12202 },
12203 dayOfMonthOrdinalParse: /ទី\d{1,2}/,
12204 ordinal: 'ទី%d',
12205 preparse: function (string) {
12206 return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
12207 return numberMap$8[match];
12208 });
12209 },
12210 postformat: function (string) {
12211 return string.replace(/\d/g, function (match) {
12212 return symbolMap$9[match];
12213 });
12214 },
12215 week: {
12216 dow: 1, // Monday is the first day of the week.
12217 doy: 4, // The week that contains Jan 4th is the first week of the year.
12218 },
12219 });
12220
12221 //! moment.js locale configuration
12222
12223 var symbolMap$a = {
12224 1: '೧',
12225 2: '೨',
12226 3: '೩',
12227 4: '೪',
12228 5: '೫',
12229 6: '೬',
12230 7: '೭',
12231 8: '೮',
12232 9: '೯',
12233 0: '೦',
12234 },
12235 numberMap$9 = {
12236 '೧': '1',
12237 '೨': '2',
12238 '೩': '3',
12239 '೪': '4',
12240 '೫': '5',
12241 '೬': '6',
12242 '೭': '7',
12243 '೮': '8',
12244 '೯': '9',
12245 '೦': '0',
12246 };
12247
12248 hooks.defineLocale('kn', {
12249 months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(
12250 '_'
12251 ),
12252 monthsShort: 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(
12253 '_'
12254 ),
12255 monthsParseExact: true,
12256 weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(
12257 '_'
12258 ),
12259 weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
12260 weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
12261 longDateFormat: {
12262 LT: 'A h:mm',
12263 LTS: 'A h:mm:ss',
12264 L: 'DD/MM/YYYY',
12265 LL: 'D MMMM YYYY',
12266 LLL: 'D MMMM YYYY, A h:mm',
12267 LLLL: 'dddd, D MMMM YYYY, A h:mm',
12268 },
12269 calendar: {
12270 sameDay: '[ಇಂದು] LT',
12271 nextDay: '[ನಾಳೆ] LT',
12272 nextWeek: 'dddd, LT',
12273 lastDay: '[ನಿನ್ನೆ] LT',
12274 lastWeek: '[ಕೊನೆಯ] dddd, LT',
12275 sameElse: 'L',
12276 },
12277 relativeTime: {
12278 future: '%s ನಂತರ',
12279 past: '%s ಹಿಂದೆ',
12280 s: 'ಕೆಲವು ಕ್ಷಣಗಳು',
12281 ss: '%d ಸೆಕೆಂಡುಗಳು',
12282 m: 'ಒಂದು ನಿಮಿಷ',
12283 mm: '%d ನಿಮಿಷ',
12284 h: 'ಒಂದು ಗಂಟೆ',
12285 hh: '%d ಗಂಟೆ',
12286 d: 'ಒಂದು ದಿನ',
12287 dd: '%d ದಿನ',
12288 M: 'ಒಂದು ತಿಂಗಳು',
12289 MM: '%d ತಿಂಗಳು',
12290 y: 'ಒಂದು ವರ್ಷ',
12291 yy: '%d ವರ್ಷ',
12292 },
12293 preparse: function (string) {
12294 return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
12295 return numberMap$9[match];
12296 });
12297 },
12298 postformat: function (string) {
12299 return string.replace(/\d/g, function (match) {
12300 return symbolMap$a[match];
12301 });
12302 },
12303 meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
12304 meridiemHour: function (hour, meridiem) {
12305 if (hour === 12) {
12306 hour = 0;
12307 }
12308 if (meridiem === 'ರಾತ್ರಿ') {
12309 return hour < 4 ? hour : hour + 12;
12310 } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
12311 return hour;
12312 } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
12313 return hour >= 10 ? hour : hour + 12;
12314 } else if (meridiem === 'ಸಂಜೆ') {
12315 return hour + 12;
12316 }
12317 },
12318 meridiem: function (hour, minute, isLower) {
12319 if (hour < 4) {
12320 return 'ರಾತ್ರಿ';
12321 } else if (hour < 10) {
12322 return 'ಬೆಳಿಗ್ಗೆ';
12323 } else if (hour < 17) {
12324 return 'ಮಧ್ಯಾಹ್ನ';
12325 } else if (hour < 20) {
12326 return 'ಸಂಜೆ';
12327 } else {
12328 return 'ರಾತ್ರಿ';
12329 }
12330 },
12331 dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
12332 ordinal: function (number) {
12333 return number + 'ನೇ';
12334 },
12335 week: {
12336 dow: 0, // Sunday is the first day of the week.
12337 doy: 6, // The week that contains Jan 6th is the first week of the year.
12338 },
12339 });
12340
12341 //! moment.js locale configuration
12342
12343 hooks.defineLocale('ko', {
12344 months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
12345 monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(
12346 '_'
12347 ),
12348 weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
12349 weekdaysShort: '일_월_화_수_목_금_토'.split('_'),
12350 weekdaysMin: '일_월_화_수_목_금_토'.split('_'),
12351 longDateFormat: {
12352 LT: 'A h:mm',
12353 LTS: 'A h:mm:ss',
12354 L: 'YYYY.MM.DD.',
12355 LL: 'YYYY년 MMMM D일',
12356 LLL: 'YYYY년 MMMM D일 A h:mm',
12357 LLLL: 'YYYY년 MMMM D일 dddd A h:mm',
12358 l: 'YYYY.MM.DD.',
12359 ll: 'YYYY년 MMMM D일',
12360 lll: 'YYYY년 MMMM D일 A h:mm',
12361 llll: 'YYYY년 MMMM D일 dddd A h:mm',
12362 },
12363 calendar: {
12364 sameDay: '오늘 LT',
12365 nextDay: '내일 LT',
12366 nextWeek: 'dddd LT',
12367 lastDay: '어제 LT',
12368 lastWeek: '지난주 dddd LT',
12369 sameElse: 'L',
12370 },
12371 relativeTime: {
12372 future: '%s 후',
12373 past: '%s 전',
12374 s: '몇 초',
12375 ss: '%d초',
12376 m: '1분',
12377 mm: '%d분',
12378 h: '한 시간',
12379 hh: '%d시간',
12380 d: '하루',
12381 dd: '%d일',
12382 M: '한 달',
12383 MM: '%d달',
12384 y: '일 년',
12385 yy: '%d년',
12386 },
12387 dayOfMonthOrdinalParse: /\d{1,2}(일|월|주)/,
12388 ordinal: function (number, period) {
12389 switch (period) {
12390 case 'd':
12391 case 'D':
12392 case 'DDD':
12393 return number + '일';
12394 case 'M':
12395 return number + '월';
12396 case 'w':
12397 case 'W':
12398 return number + '주';
12399 default:
12400 return number;
12401 }
12402 },
12403 meridiemParse: /오전|오후/,
12404 isPM: function (token) {
12405 return token === '오후';
12406 },
12407 meridiem: function (hour, minute, isUpper) {
12408 return hour < 12 ? '오전' : '오후';
12409 },
12410 });
12411
12412 //! moment.js locale configuration
12413
12414 var symbolMap$b = {
12415 1: '١',
12416 2: '٢',
12417 3: '٣',
12418 4: '٤',
12419 5: '٥',
12420 6: '٦',
12421 7: '٧',
12422 8: '٨',
12423 9: '٩',
12424 0: '٠',
12425 },
12426 numberMap$a = {
12427 '١': '1',
12428 '٢': '2',
12429 '٣': '3',
12430 '٤': '4',
12431 '٥': '5',
12432 '٦': '6',
12433 '٧': '7',
12434 '٨': '8',
12435 '٩': '9',
12436 '٠': '0',
12437 },
12438 months$8 = [
12439 'کانونی دووەم',
12440 'شوبات',
12441 'ئازار',
12442 'نیسان',
12443 'ئایار',
12444 'حوزەیران',
12445 'تەمموز',
12446 'ئاب',
12447 'ئەیلوول',
12448 'تشرینی یەكەم',
12449 'تشرینی دووەم',
12450 'كانونی یەکەم',
12451 ];
12452
12453 hooks.defineLocale('ku', {
12454 months: months$8,
12455 monthsShort: months$8,
12456 weekdays: 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(
12457 '_'
12458 ),
12459 weekdaysShort: 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split(
12460 '_'
12461 ),
12462 weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),
12463 weekdaysParseExact: true,
12464 longDateFormat: {
12465 LT: 'HH:mm',
12466 LTS: 'HH:mm:ss',
12467 L: 'DD/MM/YYYY',
12468 LL: 'D MMMM YYYY',
12469 LLL: 'D MMMM YYYY HH:mm',
12470 LLLL: 'dddd, D MMMM YYYY HH:mm',
12471 },
12472 meridiemParse: /ئێواره‌|به‌یانی/,
12473 isPM: function (input) {
12474 return /ئێواره‌/.test(input);
12475 },
12476 meridiem: function (hour, minute, isLower) {
12477 if (hour < 12) {
12478 return 'به‌یانی';
12479 } else {
12480 return 'ئێواره‌';
12481 }
12482 },
12483 calendar: {
12484 sameDay: '[ئه‌مرۆ كاتژمێر] LT',
12485 nextDay: '[به‌یانی كاتژمێر] LT',
12486 nextWeek: 'dddd [كاتژمێر] LT',
12487 lastDay: '[دوێنێ كاتژمێر] LT',
12488 lastWeek: 'dddd [كاتژمێر] LT',
12489 sameElse: 'L',
12490 },
12491 relativeTime: {
12492 future: 'له‌ %s',
12493 past: '%s',
12494 s: 'چه‌ند چركه‌یه‌ك',
12495 ss: 'چركه‌ %d',
12496 m: 'یه‌ك خوله‌ك',
12497 mm: '%d خوله‌ك',
12498 h: 'یه‌ك كاتژمێر',
12499 hh: '%d كاتژمێر',
12500 d: 'یه‌ك ڕۆژ',
12501 dd: '%d ڕۆژ',
12502 M: 'یه‌ك مانگ',
12503 MM: '%d مانگ',
12504 y: 'یه‌ك ساڵ',
12505 yy: '%d ساڵ',
12506 },
12507 preparse: function (string) {
12508 return string
12509 .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
12510 return numberMap$a[match];
12511 })
12512 .replace(/،/g, ',');
12513 },
12514 postformat: function (string) {
12515 return string
12516 .replace(/\d/g, function (match) {
12517 return symbolMap$b[match];
12518 })
12519 .replace(/,/g, '،');
12520 },
12521 week: {
12522 dow: 6, // Saturday is the first day of the week.
12523 doy: 12, // The week that contains Jan 12th is the first week of the year.
12524 },
12525 });
12526
12527 //! moment.js locale configuration
12528
12529 var suffixes$2 = {
12530 0: '-чү',
12531 1: '-чи',
12532 2: '-чи',
12533 3: '-чү',
12534 4: '-чү',
12535 5: '-чи',
12536 6: '-чы',
12537 7: '-чи',
12538 8: '-чи',
12539 9: '-чу',
12540 10: '-чу',
12541 20: '-чы',
12542 30: '-чу',
12543 40: '-чы',
12544 50: '-чү',
12545 60: '-чы',
12546 70: '-чи',
12547 80: '-чи',
12548 90: '-чу',
12549 100: '-чү',
12550 };
12551
12552 hooks.defineLocale('ky', {
12553 months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
12554 '_'
12555 ),
12556 monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(
12557 '_'
12558 ),
12559 weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(
12560 '_'
12561 ),
12562 weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
12563 weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
12564 longDateFormat: {
12565 LT: 'HH:mm',
12566 LTS: 'HH:mm:ss',
12567 L: 'DD.MM.YYYY',
12568 LL: 'D MMMM YYYY',
12569 LLL: 'D MMMM YYYY HH:mm',
12570 LLLL: 'dddd, D MMMM YYYY HH:mm',
12571 },
12572 calendar: {
12573 sameDay: '[Бүгүн саат] LT',
12574 nextDay: '[Эртең саат] LT',
12575 nextWeek: 'dddd [саат] LT',
12576 lastDay: '[Кечээ саат] LT',
12577 lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',
12578 sameElse: 'L',
12579 },
12580 relativeTime: {
12581 future: '%s ичинде',
12582 past: '%s мурун',
12583 s: 'бирнече секунд',
12584 ss: '%d секунд',
12585 m: 'бир мүнөт',
12586 mm: '%d мүнөт',
12587 h: 'бир саат',
12588 hh: '%d саат',
12589 d: 'бир күн',
12590 dd: '%d күн',
12591 M: 'бир ай',
12592 MM: '%d ай',
12593 y: 'бир жыл',
12594 yy: '%d жыл',
12595 },
12596 dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
12597 ordinal: function (number) {
12598 var a = number % 10,
12599 b = number >= 100 ? 100 : null;
12600 return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
12601 },
12602 week: {
12603 dow: 1, // Monday is the first day of the week.
12604 doy: 7, // The week that contains Jan 7th is the first week of the year.
12605 },
12606 });
12607
12608 //! moment.js locale configuration
12609
12610 function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
12611 var format = {
12612 m: ['eng Minutt', 'enger Minutt'],
12613 h: ['eng Stonn', 'enger Stonn'],
12614 d: ['een Dag', 'engem Dag'],
12615 M: ['ee Mount', 'engem Mount'],
12616 y: ['ee Joer', 'engem Joer'],
12617 };
12618 return withoutSuffix ? format[key][0] : format[key][1];
12619 }
12620 function processFutureTime(string) {
12621 var number = string.substr(0, string.indexOf(' '));
12622 if (eifelerRegelAppliesToNumber(number)) {
12623 return 'a ' + string;
12624 }
12625 return 'an ' + string;
12626 }
12627 function processPastTime(string) {
12628 var number = string.substr(0, string.indexOf(' '));
12629 if (eifelerRegelAppliesToNumber(number)) {
12630 return 'viru ' + string;
12631 }
12632 return 'virun ' + string;
12633 }
12634 /**
12635 * Returns true if the word before the given number loses the '-n' ending.
12636 * e.g. 'an 10 Deeg' but 'a 5 Deeg'
12637 *
12638 * @param number {integer}
12639 * @returns {boolean}
12640 */
12641 function eifelerRegelAppliesToNumber(number) {
12642 number = parseInt(number, 10);
12643 if (isNaN(number)) {
12644 return false;
12645 }
12646 if (number < 0) {
12647 // Negative Number --> always true
12648 return true;
12649 } else if (number < 10) {
12650 // Only 1 digit
12651 if (4 <= number && number <= 7) {
12652 return true;
12653 }
12654 return false;
12655 } else if (number < 100) {
12656 // 2 digits
12657 var lastDigit = number % 10,
12658 firstDigit = number / 10;
12659 if (lastDigit === 0) {
12660 return eifelerRegelAppliesToNumber(firstDigit);
12661 }
12662 return eifelerRegelAppliesToNumber(lastDigit);
12663 } else if (number < 10000) {
12664 // 3 or 4 digits --> recursively check first digit
12665 while (number >= 10) {
12666 number = number / 10;
12667 }
12668 return eifelerRegelAppliesToNumber(number);
12669 } else {
12670 // Anything larger than 4 digits: recursively check first n-3 digits
12671 number = number / 1000;
12672 return eifelerRegelAppliesToNumber(number);
12673 }
12674 }
12675
12676 hooks.defineLocale('lb', {
12677 months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(
12678 '_'
12679 ),
12680 monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(
12681 '_'
12682 ),
12683 monthsParseExact: true,
12684 weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(
12685 '_'
12686 ),
12687 weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
12688 weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
12689 weekdaysParseExact: true,
12690 longDateFormat: {
12691 LT: 'H:mm [Auer]',
12692 LTS: 'H:mm:ss [Auer]',
12693 L: 'DD.MM.YYYY',
12694 LL: 'D. MMMM YYYY',
12695 LLL: 'D. MMMM YYYY H:mm [Auer]',
12696 LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',
12697 },
12698 calendar: {
12699 sameDay: '[Haut um] LT',
12700 sameElse: 'L',
12701 nextDay: '[Muer um] LT',
12702 nextWeek: 'dddd [um] LT',
12703 lastDay: '[Gëschter um] LT',
12704 lastWeek: function () {
12705 // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
12706 switch (this.day()) {
12707 case 2:
12708 case 4:
12709 return '[Leschten] dddd [um] LT';
12710 default:
12711 return '[Leschte] dddd [um] LT';
12712 }
12713 },
12714 },
12715 relativeTime: {
12716 future: processFutureTime,
12717 past: processPastTime,
12718 s: 'e puer Sekonnen',
12719 ss: '%d Sekonnen',
12720 m: processRelativeTime$6,
12721 mm: '%d Minutten',
12722 h: processRelativeTime$6,
12723 hh: '%d Stonnen',
12724 d: processRelativeTime$6,
12725 dd: '%d Deeg',
12726 M: processRelativeTime$6,
12727 MM: '%d Méint',
12728 y: processRelativeTime$6,
12729 yy: '%d Joer',
12730 },
12731 dayOfMonthOrdinalParse: /\d{1,2}\./,
12732 ordinal: '%d.',
12733 week: {
12734 dow: 1, // Monday is the first day of the week.
12735 doy: 4, // The week that contains Jan 4th is the first week of the year.
12736 },
12737 });
12738
12739 //! moment.js locale configuration
12740
12741 hooks.defineLocale('lo', {
12742 months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
12743 '_'
12744 ),
12745 monthsShort: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(
12746 '_'
12747 ),
12748 weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
12749 weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
12750 weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
12751 weekdaysParseExact: true,
12752 longDateFormat: {
12753 LT: 'HH:mm',
12754 LTS: 'HH:mm:ss',
12755 L: 'DD/MM/YYYY',
12756 LL: 'D MMMM YYYY',
12757 LLL: 'D MMMM YYYY HH:mm',
12758 LLLL: 'ວັນdddd D MMMM YYYY HH:mm',
12759 },
12760 meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
12761 isPM: function (input) {
12762 return input === 'ຕອນແລງ';
12763 },
12764 meridiem: function (hour, minute, isLower) {
12765 if (hour < 12) {
12766 return 'ຕອນເຊົ້າ';
12767 } else {
12768 return 'ຕອນແລງ';
12769 }
12770 },
12771 calendar: {
12772 sameDay: '[ມື້ນີ້ເວລາ] LT',
12773 nextDay: '[ມື້ອື່ນເວລາ] LT',
12774 nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',
12775 lastDay: '[ມື້ວານນີ້ເວລາ] LT',
12776 lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
12777 sameElse: 'L',
12778 },
12779 relativeTime: {
12780 future: 'ອີກ %s',
12781 past: '%sຜ່ານມາ',
12782 s: 'ບໍ່ເທົ່າໃດວິນາທີ',
12783 ss: '%d ວິນາທີ',
12784 m: '1 ນາທີ',
12785 mm: '%d ນາທີ',
12786 h: '1 ຊົ່ວໂມງ',
12787 hh: '%d ຊົ່ວໂມງ',
12788 d: '1 ມື້',
12789 dd: '%d ມື້',
12790 M: '1 ເດືອນ',
12791 MM: '%d ເດືອນ',
12792 y: '1 ປີ',
12793 yy: '%d ປີ',
12794 },
12795 dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
12796 ordinal: function (number) {
12797 return 'ທີ່' + number;
12798 },
12799 });
12800
12801 //! moment.js locale configuration
12802
12803 var units = {
12804 ss: 'sekundė_sekundžių_sekundes',
12805 m: 'minutė_minutės_minutę',
12806 mm: 'minutės_minučių_minutes',
12807 h: 'valanda_valandos_valandą',
12808 hh: 'valandos_valandų_valandas',
12809 d: 'diena_dienos_dieną',
12810 dd: 'dienos_dienų_dienas',
12811 M: 'mėnuo_mėnesio_mėnesį',
12812 MM: 'mėnesiai_mėnesių_mėnesius',
12813 y: 'metai_metų_metus',
12814 yy: 'metai_metų_metus',
12815 };
12816 function translateSeconds(number, withoutSuffix, key, isFuture) {
12817 if (withoutSuffix) {
12818 return 'kelios sekundės';
12819 } else {
12820 return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
12821 }
12822 }
12823 function translateSingular(number, withoutSuffix, key, isFuture) {
12824 return withoutSuffix
12825 ? forms(key)[0]
12826 : isFuture
12827 ? forms(key)[1]
12828 : forms(key)[2];
12829 }
12830 function special(number) {
12831 return number % 10 === 0 || (number > 10 && number < 20);
12832 }
12833 function forms(key) {
12834 return units[key].split('_');
12835 }
12836 function translate$6(number, withoutSuffix, key, isFuture) {
12837 var result = number + ' ';
12838 if (number === 1) {
12839 return (
12840 result + translateSingular(number, withoutSuffix, key[0], isFuture)
12841 );
12842 } else if (withoutSuffix) {
12843 return result + (special(number) ? forms(key)[1] : forms(key)[0]);
12844 } else {
12845 if (isFuture) {
12846 return result + forms(key)[1];
12847 } else {
12848 return result + (special(number) ? forms(key)[1] : forms(key)[2]);
12849 }
12850 }
12851 }
12852 hooks.defineLocale('lt', {
12853 months: {
12854 format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(
12855 '_'
12856 ),
12857 standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(
12858 '_'
12859 ),
12860 isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/,
12861 },
12862 monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
12863 weekdays: {
12864 format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(
12865 '_'
12866 ),
12867 standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(
12868 '_'
12869 ),
12870 isFormat: /dddd HH:mm/,
12871 },
12872 weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
12873 weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),
12874 weekdaysParseExact: true,
12875 longDateFormat: {
12876 LT: 'HH:mm',
12877 LTS: 'HH:mm:ss',
12878 L: 'YYYY-MM-DD',
12879 LL: 'YYYY [m.] MMMM D [d.]',
12880 LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
12881 LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
12882 l: 'YYYY-MM-DD',
12883 ll: 'YYYY [m.] MMMM D [d.]',
12884 lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
12885 llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',
12886 },
12887 calendar: {
12888 sameDay: '[Šiandien] LT',
12889 nextDay: '[Rytoj] LT',
12890 nextWeek: 'dddd LT',
12891 lastDay: '[Vakar] LT',
12892 lastWeek: '[Praėjusį] dddd LT',
12893 sameElse: 'L',
12894 },
12895 relativeTime: {
12896 future: 'po %s',
12897 past: 'prieš %s',
12898 s: translateSeconds,
12899 ss: translate$6,
12900 m: translateSingular,
12901 mm: translate$6,
12902 h: translateSingular,
12903 hh: translate$6,
12904 d: translateSingular,
12905 dd: translate$6,
12906 M: translateSingular,
12907 MM: translate$6,
12908 y: translateSingular,
12909 yy: translate$6,
12910 },
12911 dayOfMonthOrdinalParse: /\d{1,2}-oji/,
12912 ordinal: function (number) {
12913 return number + '-oji';
12914 },
12915 week: {
12916 dow: 1, // Monday is the first day of the week.
12917 doy: 4, // The week that contains Jan 4th is the first week of the year.
12918 },
12919 });
12920
12921 //! moment.js locale configuration
12922
12923 var units$1 = {
12924 ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
12925 m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
12926 mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),
12927 h: 'stundas_stundām_stunda_stundas'.split('_'),
12928 hh: 'stundas_stundām_stunda_stundas'.split('_'),
12929 d: 'dienas_dienām_diena_dienas'.split('_'),
12930 dd: 'dienas_dienām_diena_dienas'.split('_'),
12931 M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
12932 MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
12933 y: 'gada_gadiem_gads_gadi'.split('_'),
12934 yy: 'gada_gadiem_gads_gadi'.split('_'),
12935 };
12936 /**
12937 * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
12938 */
12939 function format$1(forms, number, withoutSuffix) {
12940 if (withoutSuffix) {
12941 // E.g. "21 minūte", "3 minūtes".
12942 return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
12943 } else {
12944 // E.g. "21 minūtes" as in "pēc 21 minūtes".
12945 // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
12946 return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
12947 }
12948 }
12949 function relativeTimeWithPlural$1(number, withoutSuffix, key) {
12950 return number + ' ' + format$1(units$1[key], number, withoutSuffix);
12951 }
12952 function relativeTimeWithSingular(number, withoutSuffix, key) {
12953 return format$1(units$1[key], number, withoutSuffix);
12954 }
12955 function relativeSeconds(number, withoutSuffix) {
12956 return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
12957 }
12958
12959 hooks.defineLocale('lv', {
12960 months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(
12961 '_'
12962 ),
12963 monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
12964 weekdays: 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(
12965 '_'
12966 ),
12967 weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),
12968 weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),
12969 weekdaysParseExact: true,
12970 longDateFormat: {
12971 LT: 'HH:mm',
12972 LTS: 'HH:mm:ss',
12973 L: 'DD.MM.YYYY.',
12974 LL: 'YYYY. [gada] D. MMMM',
12975 LLL: 'YYYY. [gada] D. MMMM, HH:mm',
12976 LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',
12977 },
12978 calendar: {
12979 sameDay: '[Šodien pulksten] LT',
12980 nextDay: '[Rīt pulksten] LT',
12981 nextWeek: 'dddd [pulksten] LT',
12982 lastDay: '[Vakar pulksten] LT',
12983 lastWeek: '[Pagājušā] dddd [pulksten] LT',
12984 sameElse: 'L',
12985 },
12986 relativeTime: {
12987 future: 'pēc %s',
12988 past: 'pirms %s',
12989 s: relativeSeconds,
12990 ss: relativeTimeWithPlural$1,
12991 m: relativeTimeWithSingular,
12992 mm: relativeTimeWithPlural$1,
12993 h: relativeTimeWithSingular,
12994 hh: relativeTimeWithPlural$1,
12995 d: relativeTimeWithSingular,
12996 dd: relativeTimeWithPlural$1,
12997 M: relativeTimeWithSingular,
12998 MM: relativeTimeWithPlural$1,
12999 y: relativeTimeWithSingular,
13000 yy: relativeTimeWithPlural$1,
13001 },
13002 dayOfMonthOrdinalParse: /\d{1,2}\./,
13003 ordinal: '%d.',
13004 week: {
13005 dow: 1, // Monday is the first day of the week.
13006 doy: 4, // The week that contains Jan 4th is the first week of the year.
13007 },
13008 });
13009
13010 //! moment.js locale configuration
13011
13012 var translator = {
13013 words: {
13014 //Different grammatical cases
13015 ss: ['sekund', 'sekunda', 'sekundi'],
13016 m: ['jedan minut', 'jednog minuta'],
13017 mm: ['minut', 'minuta', 'minuta'],
13018 h: ['jedan sat', 'jednog sata'],
13019 hh: ['sat', 'sata', 'sati'],
13020 dd: ['dan', 'dana', 'dana'],
13021 MM: ['mjesec', 'mjeseca', 'mjeseci'],
13022 yy: ['godina', 'godine', 'godina'],
13023 },
13024 correctGrammaticalCase: function (number, wordKey) {
13025 return number === 1
13026 ? wordKey[0]
13027 : number >= 2 && number <= 4
13028 ? wordKey[1]
13029 : wordKey[2];
13030 },
13031 translate: function (number, withoutSuffix, key) {
13032 var wordKey = translator.words[key];
13033 if (key.length === 1) {
13034 return withoutSuffix ? wordKey[0] : wordKey[1];
13035 } else {
13036 return (
13037 number +
13038 ' ' +
13039 translator.correctGrammaticalCase(number, wordKey)
13040 );
13041 }
13042 },
13043 };
13044
13045 hooks.defineLocale('me', {
13046 months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
13047 '_'
13048 ),
13049 monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
13050 '_'
13051 ),
13052 monthsParseExact: true,
13053 weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(
13054 '_'
13055 ),
13056 weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
13057 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
13058 weekdaysParseExact: true,
13059 longDateFormat: {
13060 LT: 'H:mm',
13061 LTS: 'H:mm:ss',
13062 L: 'DD.MM.YYYY',
13063 LL: 'D. MMMM YYYY',
13064 LLL: 'D. MMMM YYYY H:mm',
13065 LLLL: 'dddd, D. MMMM YYYY H:mm',
13066 },
13067 calendar: {
13068 sameDay: '[danas u] LT',
13069 nextDay: '[sjutra u] LT',
13070
13071 nextWeek: function () {
13072 switch (this.day()) {
13073 case 0:
13074 return '[u] [nedjelju] [u] LT';
13075 case 3:
13076 return '[u] [srijedu] [u] LT';
13077 case 6:
13078 return '[u] [subotu] [u] LT';
13079 case 1:
13080 case 2:
13081 case 4:
13082 case 5:
13083 return '[u] dddd [u] LT';
13084 }
13085 },
13086 lastDay: '[juče u] LT',
13087 lastWeek: function () {
13088 var lastWeekDays = [
13089 '[prošle] [nedjelje] [u] LT',
13090 '[prošlog] [ponedjeljka] [u] LT',
13091 '[prošlog] [utorka] [u] LT',
13092 '[prošle] [srijede] [u] LT',
13093 '[prošlog] [četvrtka] [u] LT',
13094 '[prošlog] [petka] [u] LT',
13095 '[prošle] [subote] [u] LT',
13096 ];
13097 return lastWeekDays[this.day()];
13098 },
13099 sameElse: 'L',
13100 },
13101 relativeTime: {
13102 future: 'za %s',
13103 past: 'prije %s',
13104 s: 'nekoliko sekundi',
13105 ss: translator.translate,
13106 m: translator.translate,
13107 mm: translator.translate,
13108 h: translator.translate,
13109 hh: translator.translate,
13110 d: 'dan',
13111 dd: translator.translate,
13112 M: 'mjesec',
13113 MM: translator.translate,
13114 y: 'godinu',
13115 yy: translator.translate,
13116 },
13117 dayOfMonthOrdinalParse: /\d{1,2}\./,
13118 ordinal: '%d.',
13119 week: {
13120 dow: 1, // Monday is the first day of the week.
13121 doy: 7, // The week that contains Jan 7th is the first week of the year.
13122 },
13123 });
13124
13125 //! moment.js locale configuration
13126
13127 hooks.defineLocale('mi', {
13128 months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(
13129 '_'
13130 ),
13131 monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(
13132 '_'
13133 ),
13134 monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
13135 monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
13136 monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
13137 monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
13138 weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
13139 weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
13140 weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
13141 longDateFormat: {
13142 LT: 'HH:mm',
13143 LTS: 'HH:mm:ss',
13144 L: 'DD/MM/YYYY',
13145 LL: 'D MMMM YYYY',
13146 LLL: 'D MMMM YYYY [i] HH:mm',
13147 LLLL: 'dddd, D MMMM YYYY [i] HH:mm',
13148 },
13149 calendar: {
13150 sameDay: '[i teie mahana, i] LT',
13151 nextDay: '[apopo i] LT',
13152 nextWeek: 'dddd [i] LT',
13153 lastDay: '[inanahi i] LT',
13154 lastWeek: 'dddd [whakamutunga i] LT',
13155 sameElse: 'L',
13156 },
13157 relativeTime: {
13158 future: 'i roto i %s',
13159 past: '%s i mua',
13160 s: 'te hēkona ruarua',
13161 ss: '%d hēkona',
13162 m: 'he meneti',
13163 mm: '%d meneti',
13164 h: 'te haora',
13165 hh: '%d haora',
13166 d: 'he ra',
13167 dd: '%d ra',
13168 M: 'he marama',
13169 MM: '%d marama',
13170 y: 'he tau',
13171 yy: '%d tau',
13172 },
13173 dayOfMonthOrdinalParse: /\d{1,2}º/,
13174 ordinal: '%dº',
13175 week: {
13176 dow: 1, // Monday is the first day of the week.
13177 doy: 4, // The week that contains Jan 4th is the first week of the year.
13178 },
13179 });
13180
13181 //! moment.js locale configuration
13182
13183 hooks.defineLocale('mk', {
13184 months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(
13185 '_'
13186 ),
13187 monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
13188 weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(
13189 '_'
13190 ),
13191 weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
13192 weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),
13193 longDateFormat: {
13194 LT: 'H:mm',
13195 LTS: 'H:mm:ss',
13196 L: 'D.MM.YYYY',
13197 LL: 'D MMMM YYYY',
13198 LLL: 'D MMMM YYYY H:mm',
13199 LLLL: 'dddd, D MMMM YYYY H:mm',
13200 },
13201 calendar: {
13202 sameDay: '[Денес во] LT',
13203 nextDay: '[Утре во] LT',
13204 nextWeek: '[Во] dddd [во] LT',
13205 lastDay: '[Вчера во] LT',
13206 lastWeek: function () {
13207 switch (this.day()) {
13208 case 0:
13209 case 3:
13210 case 6:
13211 return '[Изминатата] dddd [во] LT';
13212 case 1:
13213 case 2:
13214 case 4:
13215 case 5:
13216 return '[Изминатиот] dddd [во] LT';
13217 }
13218 },
13219 sameElse: 'L',
13220 },
13221 relativeTime: {
13222 future: 'за %s',
13223 past: 'пред %s',
13224 s: 'неколку секунди',
13225 ss: '%d секунди',
13226 m: 'една минута',
13227 mm: '%d минути',
13228 h: 'еден час',
13229 hh: '%d часа',
13230 d: 'еден ден',
13231 dd: '%d дена',
13232 M: 'еден месец',
13233 MM: '%d месеци',
13234 y: 'една година',
13235 yy: '%d години',
13236 },
13237 dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
13238 ordinal: function (number) {
13239 var lastDigit = number % 10,
13240 last2Digits = number % 100;
13241 if (number === 0) {
13242 return number + '-ев';
13243 } else if (last2Digits === 0) {
13244 return number + '-ен';
13245 } else if (last2Digits > 10 && last2Digits < 20) {
13246 return number + '-ти';
13247 } else if (lastDigit === 1) {
13248 return number + '-ви';
13249 } else if (lastDigit === 2) {
13250 return number + '-ри';
13251 } else if (lastDigit === 7 || lastDigit === 8) {
13252 return number + '-ми';
13253 } else {
13254 return number + '-ти';
13255 }
13256 },
13257 week: {
13258 dow: 1, // Monday is the first day of the week.
13259 doy: 7, // The week that contains Jan 7th is the first week of the year.
13260 },
13261 });
13262
13263 //! moment.js locale configuration
13264
13265 hooks.defineLocale('ml', {
13266 months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(
13267 '_'
13268 ),
13269 monthsShort: 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(
13270 '_'
13271 ),
13272 monthsParseExact: true,
13273 weekdays: 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(
13274 '_'
13275 ),
13276 weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
13277 weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
13278 longDateFormat: {
13279 LT: 'A h:mm -നു',
13280 LTS: 'A h:mm:ss -നു',
13281 L: 'DD/MM/YYYY',
13282 LL: 'D MMMM YYYY',
13283 LLL: 'D MMMM YYYY, A h:mm -നു',
13284 LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',
13285 },
13286 calendar: {
13287 sameDay: '[ഇന്ന്] LT',
13288 nextDay: '[നാളെ] LT',
13289 nextWeek: 'dddd, LT',
13290 lastDay: '[ഇന്നലെ] LT',
13291 lastWeek: '[കഴിഞ്ഞ] dddd, LT',
13292 sameElse: 'L',
13293 },
13294 relativeTime: {
13295 future: '%s കഴിഞ്ഞ്',
13296 past: '%s മുൻപ്',
13297 s: 'അൽപ നിമിഷങ്ങൾ',
13298 ss: '%d സെക്കൻഡ്',
13299 m: 'ഒരു മിനിറ്റ്',
13300 mm: '%d മിനിറ്റ്',
13301 h: 'ഒരു മണിക്കൂർ',
13302 hh: '%d മണിക്കൂർ',
13303 d: 'ഒരു ദിവസം',
13304 dd: '%d ദിവസം',
13305 M: 'ഒരു മാസം',
13306 MM: '%d മാസം',
13307 y: 'ഒരു വർഷം',
13308 yy: '%d വർഷം',
13309 },
13310 meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
13311 meridiemHour: function (hour, meridiem) {
13312 if (hour === 12) {
13313 hour = 0;
13314 }
13315 if (
13316 (meridiem === 'രാത്രി' && hour >= 4) ||
13317 meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
13318 meridiem === 'വൈകുന്നേരം'
13319 ) {
13320 return hour + 12;
13321 } else {
13322 return hour;
13323 }
13324 },
13325 meridiem: function (hour, minute, isLower) {
13326 if (hour < 4) {
13327 return 'രാത്രി';
13328 } else if (hour < 12) {
13329 return 'രാവിലെ';
13330 } else if (hour < 17) {
13331 return 'ഉച്ച കഴിഞ്ഞ്';
13332 } else if (hour < 20) {
13333 return 'വൈകുന്നേരം';
13334 } else {
13335 return 'രാത്രി';
13336 }
13337 },
13338 });
13339
13340 //! moment.js locale configuration
13341
13342 function translate$7(number, withoutSuffix, key, isFuture) {
13343 switch (key) {
13344 case 's':
13345 return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
13346 case 'ss':
13347 return number + (withoutSuffix ? ' секунд' : ' секундын');
13348 case 'm':
13349 case 'mm':
13350 return number + (withoutSuffix ? ' минут' : ' минутын');
13351 case 'h':
13352 case 'hh':
13353 return number + (withoutSuffix ? ' цаг' : ' цагийн');
13354 case 'd':
13355 case 'dd':
13356 return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
13357 case 'M':
13358 case 'MM':
13359 return number + (withoutSuffix ? ' сар' : ' сарын');
13360 case 'y':
13361 case 'yy':
13362 return number + (withoutSuffix ? ' жил' : ' жилийн');
13363 default:
13364 return number;
13365 }
13366 }
13367
13368 hooks.defineLocale('mn', {
13369 months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(
13370 '_'
13371 ),
13372 monthsShort: '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(
13373 '_'
13374 ),
13375 monthsParseExact: true,
13376 weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
13377 weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
13378 weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
13379 weekdaysParseExact: true,
13380 longDateFormat: {
13381 LT: 'HH:mm',
13382 LTS: 'HH:mm:ss',
13383 L: 'YYYY-MM-DD',
13384 LL: 'YYYY оны MMMMын D',
13385 LLL: 'YYYY оны MMMMын D HH:mm',
13386 LLLL: 'dddd, YYYY оны MMMMын D HH:mm',
13387 },
13388 meridiemParse: /ҮӨ|ҮХ/i,
13389 isPM: function (input) {
13390 return input === 'ҮХ';
13391 },
13392 meridiem: function (hour, minute, isLower) {
13393 if (hour < 12) {
13394 return 'ҮӨ';
13395 } else {
13396 return 'ҮХ';
13397 }
13398 },
13399 calendar: {
13400 sameDay: '[Өнөөдөр] LT',
13401 nextDay: '[Маргааш] LT',
13402 nextWeek: '[Ирэх] dddd LT',
13403 lastDay: '[Өчигдөр] LT',
13404 lastWeek: '[Өнгөрсөн] dddd LT',
13405 sameElse: 'L',
13406 },
13407 relativeTime: {
13408 future: '%s дараа',
13409 past: '%s өмнө',
13410 s: translate$7,
13411 ss: translate$7,
13412 m: translate$7,
13413 mm: translate$7,
13414 h: translate$7,
13415 hh: translate$7,
13416 d: translate$7,
13417 dd: translate$7,
13418 M: translate$7,
13419 MM: translate$7,
13420 y: translate$7,
13421 yy: translate$7,
13422 },
13423 dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
13424 ordinal: function (number, period) {
13425 switch (period) {
13426 case 'd':
13427 case 'D':
13428 case 'DDD':
13429 return number + ' өдөр';
13430 default:
13431 return number;
13432 }
13433 },
13434 });
13435
13436 //! moment.js locale configuration
13437
13438 var symbolMap$c = {
13439 1: '१',
13440 2: '२',
13441 3: '३',
13442 4: '४',
13443 5: '५',
13444 6: '६',
13445 7: '७',
13446 8: '८',
13447 9: '९',
13448 0: '०',
13449 },
13450 numberMap$b = {
13451 '१': '1',
13452 '२': '2',
13453 '३': '3',
13454 '४': '4',
13455 '५': '5',
13456 '६': '6',
13457 '७': '7',
13458 '८': '8',
13459 '९': '9',
13460 '०': '0',
13461 };
13462
13463 function relativeTimeMr(number, withoutSuffix, string, isFuture) {
13464 var output = '';
13465 if (withoutSuffix) {
13466 switch (string) {
13467 case 's':
13468 output = 'काही सेकंद';
13469 break;
13470 case 'ss':
13471 output = '%d सेकंद';
13472 break;
13473 case 'm':
13474 output = 'एक मिनिट';
13475 break;
13476 case 'mm':
13477 output = '%d मिनिटे';
13478 break;
13479 case 'h':
13480 output = 'एक तास';
13481 break;
13482 case 'hh':
13483 output = '%d तास';
13484 break;
13485 case 'd':
13486 output = 'एक दिवस';
13487 break;
13488 case 'dd':
13489 output = '%d दिवस';
13490 break;
13491 case 'M':
13492 output = 'एक महिना';
13493 break;
13494 case 'MM':
13495 output = '%d महिने';
13496 break;
13497 case 'y':
13498 output = 'एक वर्ष';
13499 break;
13500 case 'yy':
13501 output = '%d वर्षे';
13502 break;
13503 }
13504 } else {
13505 switch (string) {
13506 case 's':
13507 output = 'काही सेकंदां';
13508 break;
13509 case 'ss':
13510 output = '%d सेकंदां';
13511 break;
13512 case 'm':
13513 output = 'एका मिनिटा';
13514 break;
13515 case 'mm':
13516 output = '%d मिनिटां';
13517 break;
13518 case 'h':
13519 output = 'एका तासा';
13520 break;
13521 case 'hh':
13522 output = '%d तासां';
13523 break;
13524 case 'd':
13525 output = 'एका दिवसा';
13526 break;
13527 case 'dd':
13528 output = '%d दिवसां';
13529 break;
13530 case 'M':
13531 output = 'एका महिन्या';
13532 break;
13533 case 'MM':
13534 output = '%d महिन्यां';
13535 break;
13536 case 'y':
13537 output = 'एका वर्षा';
13538 break;
13539 case 'yy':
13540 output = '%d वर्षां';
13541 break;
13542 }
13543 }
13544 return output.replace(/%d/i, number);
13545 }
13546
13547 hooks.defineLocale('mr', {
13548 months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(
13549 '_'
13550 ),
13551 monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(
13552 '_'
13553 ),
13554 monthsParseExact: true,
13555 weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
13556 weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
13557 weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),
13558 longDateFormat: {
13559 LT: 'A h:mm वाजता',
13560 LTS: 'A h:mm:ss वाजता',
13561 L: 'DD/MM/YYYY',
13562 LL: 'D MMMM YYYY',
13563 LLL: 'D MMMM YYYY, A h:mm वाजता',
13564 LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',
13565 },
13566 calendar: {
13567 sameDay: '[आज] LT',
13568 nextDay: '[उद्या] LT',
13569 nextWeek: 'dddd, LT',
13570 lastDay: '[काल] LT',
13571 lastWeek: '[मागील] dddd, LT',
13572 sameElse: 'L',
13573 },
13574 relativeTime: {
13575 future: '%sमध्ये',
13576 past: '%sपूर्वी',
13577 s: relativeTimeMr,
13578 ss: relativeTimeMr,
13579 m: relativeTimeMr,
13580 mm: relativeTimeMr,
13581 h: relativeTimeMr,
13582 hh: relativeTimeMr,
13583 d: relativeTimeMr,
13584 dd: relativeTimeMr,
13585 M: relativeTimeMr,
13586 MM: relativeTimeMr,
13587 y: relativeTimeMr,
13588 yy: relativeTimeMr,
13589 },
13590 preparse: function (string) {
13591 return string.replace(/[१२३४५६७८९०]/g, function (match) {
13592 return numberMap$b[match];
13593 });
13594 },
13595 postformat: function (string) {
13596 return string.replace(/\d/g, function (match) {
13597 return symbolMap$c[match];
13598 });
13599 },
13600 meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,
13601 meridiemHour: function (hour, meridiem) {
13602 if (hour === 12) {
13603 hour = 0;
13604 }
13605 if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {
13606 return hour;
13607 } else if (
13608 meridiem === 'दुपारी' ||
13609 meridiem === 'सायंकाळी' ||
13610 meridiem === 'रात्री'
13611 ) {
13612 return hour >= 12 ? hour : hour + 12;
13613 }
13614 },
13615 meridiem: function (hour, minute, isLower) {
13616 if (hour >= 0 && hour < 6) {
13617 return 'पहाटे';
13618 } else if (hour < 12) {
13619 return 'सकाळी';
13620 } else if (hour < 17) {
13621 return 'दुपारी';
13622 } else if (hour < 20) {
13623 return 'सायंकाळी';
13624 } else {
13625 return 'रात्री';
13626 }
13627 },
13628 week: {
13629 dow: 0, // Sunday is the first day of the week.
13630 doy: 6, // The week that contains Jan 6th is the first week of the year.
13631 },
13632 });
13633
13634 //! moment.js locale configuration
13635
13636 hooks.defineLocale('ms-my', {
13637 months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
13638 '_'
13639 ),
13640 monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
13641 weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
13642 weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
13643 weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
13644 longDateFormat: {
13645 LT: 'HH.mm',
13646 LTS: 'HH.mm.ss',
13647 L: 'DD/MM/YYYY',
13648 LL: 'D MMMM YYYY',
13649 LLL: 'D MMMM YYYY [pukul] HH.mm',
13650 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
13651 },
13652 meridiemParse: /pagi|tengahari|petang|malam/,
13653 meridiemHour: function (hour, meridiem) {
13654 if (hour === 12) {
13655 hour = 0;
13656 }
13657 if (meridiem === 'pagi') {
13658 return hour;
13659 } else if (meridiem === 'tengahari') {
13660 return hour >= 11 ? hour : hour + 12;
13661 } else if (meridiem === 'petang' || meridiem === 'malam') {
13662 return hour + 12;
13663 }
13664 },
13665 meridiem: function (hours, minutes, isLower) {
13666 if (hours < 11) {
13667 return 'pagi';
13668 } else if (hours < 15) {
13669 return 'tengahari';
13670 } else if (hours < 19) {
13671 return 'petang';
13672 } else {
13673 return 'malam';
13674 }
13675 },
13676 calendar: {
13677 sameDay: '[Hari ini pukul] LT',
13678 nextDay: '[Esok pukul] LT',
13679 nextWeek: 'dddd [pukul] LT',
13680 lastDay: '[Kelmarin pukul] LT',
13681 lastWeek: 'dddd [lepas pukul] LT',
13682 sameElse: 'L',
13683 },
13684 relativeTime: {
13685 future: 'dalam %s',
13686 past: '%s yang lepas',
13687 s: 'beberapa saat',
13688 ss: '%d saat',
13689 m: 'seminit',
13690 mm: '%d minit',
13691 h: 'sejam',
13692 hh: '%d jam',
13693 d: 'sehari',
13694 dd: '%d hari',
13695 M: 'sebulan',
13696 MM: '%d bulan',
13697 y: 'setahun',
13698 yy: '%d tahun',
13699 },
13700 week: {
13701 dow: 1, // Monday is the first day of the week.
13702 doy: 7, // The week that contains Jan 7th is the first week of the year.
13703 },
13704 });
13705
13706 //! moment.js locale configuration
13707
13708 hooks.defineLocale('ms', {
13709 months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(
13710 '_'
13711 ),
13712 monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
13713 weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
13714 weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
13715 weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
13716 longDateFormat: {
13717 LT: 'HH.mm',
13718 LTS: 'HH.mm.ss',
13719 L: 'DD/MM/YYYY',
13720 LL: 'D MMMM YYYY',
13721 LLL: 'D MMMM YYYY [pukul] HH.mm',
13722 LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',
13723 },
13724 meridiemParse: /pagi|tengahari|petang|malam/,
13725 meridiemHour: function (hour, meridiem) {
13726 if (hour === 12) {
13727 hour = 0;
13728 }
13729 if (meridiem === 'pagi') {
13730 return hour;
13731 } else if (meridiem === 'tengahari') {
13732 return hour >= 11 ? hour : hour + 12;
13733 } else if (meridiem === 'petang' || meridiem === 'malam') {
13734 return hour + 12;
13735 }
13736 },
13737 meridiem: function (hours, minutes, isLower) {
13738 if (hours < 11) {
13739 return 'pagi';
13740 } else if (hours < 15) {
13741 return 'tengahari';
13742 } else if (hours < 19) {
13743 return 'petang';
13744 } else {
13745 return 'malam';
13746 }
13747 },
13748 calendar: {
13749 sameDay: '[Hari ini pukul] LT',
13750 nextDay: '[Esok pukul] LT',
13751 nextWeek: 'dddd [pukul] LT',
13752 lastDay: '[Kelmarin pukul] LT',
13753 lastWeek: 'dddd [lepas pukul] LT',
13754 sameElse: 'L',
13755 },
13756 relativeTime: {
13757 future: 'dalam %s',
13758 past: '%s yang lepas',
13759 s: 'beberapa saat',
13760 ss: '%d saat',
13761 m: 'seminit',
13762 mm: '%d minit',
13763 h: 'sejam',
13764 hh: '%d jam',
13765 d: 'sehari',
13766 dd: '%d hari',
13767 M: 'sebulan',
13768 MM: '%d bulan',
13769 y: 'setahun',
13770 yy: '%d tahun',
13771 },
13772 week: {
13773 dow: 1, // Monday is the first day of the week.
13774 doy: 7, // The week that contains Jan 7th is the first week of the year.
13775 },
13776 });
13777
13778 //! moment.js locale configuration
13779
13780 hooks.defineLocale('mt', {
13781 months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(
13782 '_'
13783 ),
13784 monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
13785 weekdays: 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(
13786 '_'
13787 ),
13788 weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
13789 weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
13790 longDateFormat: {
13791 LT: 'HH:mm',
13792 LTS: 'HH:mm:ss',
13793 L: 'DD/MM/YYYY',
13794 LL: 'D MMMM YYYY',
13795 LLL: 'D MMMM YYYY HH:mm',
13796 LLLL: 'dddd, D MMMM YYYY HH:mm',
13797 },
13798 calendar: {
13799 sameDay: '[Illum fil-]LT',
13800 nextDay: '[Għada fil-]LT',
13801 nextWeek: 'dddd [fil-]LT',
13802 lastDay: '[Il-bieraħ fil-]LT',
13803 lastWeek: 'dddd [li għadda] [fil-]LT',
13804 sameElse: 'L',
13805 },
13806 relativeTime: {
13807 future: 'f’ %s',
13808 past: '%s ilu',
13809 s: 'ftit sekondi',
13810 ss: '%d sekondi',
13811 m: 'minuta',
13812 mm: '%d minuti',
13813 h: 'siegħa',
13814 hh: '%d siegħat',
13815 d: 'ġurnata',
13816 dd: '%d ġranet',
13817 M: 'xahar',
13818 MM: '%d xhur',
13819 y: 'sena',
13820 yy: '%d sni',
13821 },
13822 dayOfMonthOrdinalParse: /\d{1,2}º/,
13823 ordinal: '%dº',
13824 week: {
13825 dow: 1, // Monday is the first day of the week.
13826 doy: 4, // The week that contains Jan 4th is the first week of the year.
13827 },
13828 });
13829
13830 //! moment.js locale configuration
13831
13832 var symbolMap$d = {
13833 1: '၁',
13834 2: '၂',
13835 3: '၃',
13836 4: '၄',
13837 5: '၅',
13838 6: '၆',
13839 7: '၇',
13840 8: '၈',
13841 9: '၉',
13842 0: '၀',
13843 },
13844 numberMap$c = {
13845 '၁': '1',
13846 '၂': '2',
13847 '၃': '3',
13848 '၄': '4',
13849 '၅': '5',
13850 '၆': '6',
13851 '၇': '7',
13852 '၈': '8',
13853 '၉': '9',
13854 '၀': '0',
13855 };
13856
13857 hooks.defineLocale('my', {
13858 months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(
13859 '_'
13860 ),
13861 monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
13862 weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(
13863 '_'
13864 ),
13865 weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
13866 weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
13867
13868 longDateFormat: {
13869 LT: 'HH:mm',
13870 LTS: 'HH:mm:ss',
13871 L: 'DD/MM/YYYY',
13872 LL: 'D MMMM YYYY',
13873 LLL: 'D MMMM YYYY HH:mm',
13874 LLLL: 'dddd D MMMM YYYY HH:mm',
13875 },
13876 calendar: {
13877 sameDay: '[ယနေ.] LT [မှာ]',
13878 nextDay: '[မနက်ဖြန်] LT [မှာ]',
13879 nextWeek: 'dddd LT [မှာ]',
13880 lastDay: '[မနေ.က] LT [မှာ]',
13881 lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
13882 sameElse: 'L',
13883 },
13884 relativeTime: {
13885 future: 'လာမည့် %s မှာ',
13886 past: 'လွန်ခဲ့သော %s က',
13887 s: 'စက္ကန်.အနည်းငယ်',
13888 ss: '%d စက္ကန့်',
13889 m: 'တစ်မိနစ်',
13890 mm: '%d မိနစ်',
13891 h: 'တစ်နာရီ',
13892 hh: '%d နာရီ',
13893 d: 'တစ်ရက်',
13894 dd: '%d ရက်',
13895 M: 'တစ်လ',
13896 MM: '%d လ',
13897 y: 'တစ်နှစ်',
13898 yy: '%d နှစ်',
13899 },
13900 preparse: function (string) {
13901 return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
13902 return numberMap$c[match];
13903 });
13904 },
13905 postformat: function (string) {
13906 return string.replace(/\d/g, function (match) {
13907 return symbolMap$d[match];
13908 });
13909 },
13910 week: {
13911 dow: 1, // Monday is the first day of the week.
13912 doy: 4, // The week that contains Jan 4th is the first week of the year.
13913 },
13914 });
13915
13916 //! moment.js locale configuration
13917
13918 hooks.defineLocale('nb', {
13919 months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
13920 '_'
13921 ),
13922 monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
13923 '_'
13924 ),
13925 monthsParseExact: true,
13926 weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
13927 weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),
13928 weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),
13929 weekdaysParseExact: true,
13930 longDateFormat: {
13931 LT: 'HH:mm',
13932 LTS: 'HH:mm:ss',
13933 L: 'DD.MM.YYYY',
13934 LL: 'D. MMMM YYYY',
13935 LLL: 'D. MMMM YYYY [kl.] HH:mm',
13936 LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
13937 },
13938 calendar: {
13939 sameDay: '[i dag kl.] LT',
13940 nextDay: '[i morgen kl.] LT',
13941 nextWeek: 'dddd [kl.] LT',
13942 lastDay: '[i går kl.] LT',
13943 lastWeek: '[forrige] dddd [kl.] LT',
13944 sameElse: 'L',
13945 },
13946 relativeTime: {
13947 future: 'om %s',
13948 past: '%s siden',
13949 s: 'noen sekunder',
13950 ss: '%d sekunder',
13951 m: 'ett minutt',
13952 mm: '%d minutter',
13953 h: 'en time',
13954 hh: '%d timer',
13955 d: 'en dag',
13956 dd: '%d dager',
13957 w: 'en uke',
13958 ww: '%d uker',
13959 M: 'en måned',
13960 MM: '%d måneder',
13961 y: 'ett år',
13962 yy: '%d år',
13963 },
13964 dayOfMonthOrdinalParse: /\d{1,2}\./,
13965 ordinal: '%d.',
13966 week: {
13967 dow: 1, // Monday is the first day of the week.
13968 doy: 4, // The week that contains Jan 4th is the first week of the year.
13969 },
13970 });
13971
13972 //! moment.js locale configuration
13973
13974 var symbolMap$e = {
13975 1: '१',
13976 2: '२',
13977 3: '३',
13978 4: '४',
13979 5: '५',
13980 6: '६',
13981 7: '७',
13982 8: '८',
13983 9: '९',
13984 0: '०',
13985 },
13986 numberMap$d = {
13987 '१': '1',
13988 '२': '2',
13989 '३': '3',
13990 '४': '4',
13991 '५': '5',
13992 '६': '6',
13993 '७': '7',
13994 '८': '8',
13995 '९': '9',
13996 '०': '0',
13997 };
13998
13999 hooks.defineLocale('ne', {
14000 months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(
14001 '_'
14002 ),
14003 monthsShort: 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(
14004 '_'
14005 ),
14006 monthsParseExact: true,
14007 weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(
14008 '_'
14009 ),
14010 weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
14011 weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
14012 weekdaysParseExact: true,
14013 longDateFormat: {
14014 LT: 'Aको h:mm बजे',
14015 LTS: 'Aको h:mm:ss बजे',
14016 L: 'DD/MM/YYYY',
14017 LL: 'D MMMM YYYY',
14018 LLL: 'D MMMM YYYY, Aको h:mm बजे',
14019 LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',
14020 },
14021 preparse: function (string) {
14022 return string.replace(/[१२३४५६७८९०]/g, function (match) {
14023 return numberMap$d[match];
14024 });
14025 },
14026 postformat: function (string) {
14027 return string.replace(/\d/g, function (match) {
14028 return symbolMap$e[match];
14029 });
14030 },
14031 meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
14032 meridiemHour: function (hour, meridiem) {
14033 if (hour === 12) {
14034 hour = 0;
14035 }
14036 if (meridiem === 'राति') {
14037 return hour < 4 ? hour : hour + 12;
14038 } else if (meridiem === 'बिहान') {
14039 return hour;
14040 } else if (meridiem === 'दिउँसो') {
14041 return hour >= 10 ? hour : hour + 12;
14042 } else if (meridiem === 'साँझ') {
14043 return hour + 12;
14044 }
14045 },
14046 meridiem: function (hour, minute, isLower) {
14047 if (hour < 3) {
14048 return 'राति';
14049 } else if (hour < 12) {
14050 return 'बिहान';
14051 } else if (hour < 16) {
14052 return 'दिउँसो';
14053 } else if (hour < 20) {
14054 return 'साँझ';
14055 } else {
14056 return 'राति';
14057 }
14058 },
14059 calendar: {
14060 sameDay: '[आज] LT',
14061 nextDay: '[भोलि] LT',
14062 nextWeek: '[आउँदो] dddd[,] LT',
14063 lastDay: '[हिजो] LT',
14064 lastWeek: '[गएको] dddd[,] LT',
14065 sameElse: 'L',
14066 },
14067 relativeTime: {
14068 future: '%sमा',
14069 past: '%s अगाडि',
14070 s: 'केही क्षण',
14071 ss: '%d सेकेण्ड',
14072 m: 'एक मिनेट',
14073 mm: '%d मिनेट',
14074 h: 'एक घण्टा',
14075 hh: '%d घण्टा',
14076 d: 'एक दिन',
14077 dd: '%d दिन',
14078 M: 'एक महिना',
14079 MM: '%d महिना',
14080 y: 'एक बर्ष',
14081 yy: '%d बर्ष',
14082 },
14083 week: {
14084 dow: 0, // Sunday is the first day of the week.
14085 doy: 6, // The week that contains Jan 6th is the first week of the year.
14086 },
14087 });
14088
14089 //! moment.js locale configuration
14090
14091 var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
14092 '_'
14093 ),
14094 monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
14095 '_'
14096 ),
14097 monthsParse$8 = [
14098 /^jan/i,
14099 /^feb/i,
14100 /^maart|mrt.?$/i,
14101 /^apr/i,
14102 /^mei$/i,
14103 /^jun[i.]?$/i,
14104 /^jul[i.]?$/i,
14105 /^aug/i,
14106 /^sep/i,
14107 /^okt/i,
14108 /^nov/i,
14109 /^dec/i,
14110 ],
14111 monthsRegex$8 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
14112
14113 hooks.defineLocale('nl-be', {
14114 months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
14115 '_'
14116 ),
14117 monthsShort: function (m, format) {
14118 if (!m) {
14119 return monthsShortWithDots$1;
14120 } else if (/-MMM-/.test(format)) {
14121 return monthsShortWithoutDots$1[m.month()];
14122 } else {
14123 return monthsShortWithDots$1[m.month()];
14124 }
14125 },
14126
14127 monthsRegex: monthsRegex$8,
14128 monthsShortRegex: monthsRegex$8,
14129 monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
14130 monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
14131
14132 monthsParse: monthsParse$8,
14133 longMonthsParse: monthsParse$8,
14134 shortMonthsParse: monthsParse$8,
14135
14136 weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
14137 '_'
14138 ),
14139 weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
14140 weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
14141 weekdaysParseExact: true,
14142 longDateFormat: {
14143 LT: 'HH:mm',
14144 LTS: 'HH:mm:ss',
14145 L: 'DD/MM/YYYY',
14146 LL: 'D MMMM YYYY',
14147 LLL: 'D MMMM YYYY HH:mm',
14148 LLLL: 'dddd D MMMM YYYY HH:mm',
14149 },
14150 calendar: {
14151 sameDay: '[vandaag om] LT',
14152 nextDay: '[morgen om] LT',
14153 nextWeek: 'dddd [om] LT',
14154 lastDay: '[gisteren om] LT',
14155 lastWeek: '[afgelopen] dddd [om] LT',
14156 sameElse: 'L',
14157 },
14158 relativeTime: {
14159 future: 'over %s',
14160 past: '%s geleden',
14161 s: 'een paar seconden',
14162 ss: '%d seconden',
14163 m: 'één minuut',
14164 mm: '%d minuten',
14165 h: 'één uur',
14166 hh: '%d uur',
14167 d: 'één dag',
14168 dd: '%d dagen',
14169 M: 'één maand',
14170 MM: '%d maanden',
14171 y: 'één jaar',
14172 yy: '%d jaar',
14173 },
14174 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
14175 ordinal: function (number) {
14176 return (
14177 number +
14178 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
14179 );
14180 },
14181 week: {
14182 dow: 1, // Monday is the first day of the week.
14183 doy: 4, // The week that contains Jan 4th is the first week of the year.
14184 },
14185 });
14186
14187 //! moment.js locale configuration
14188
14189 var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split(
14190 '_'
14191 ),
14192 monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split(
14193 '_'
14194 ),
14195 monthsParse$9 = [
14196 /^jan/i,
14197 /^feb/i,
14198 /^maart|mrt.?$/i,
14199 /^apr/i,
14200 /^mei$/i,
14201 /^jun[i.]?$/i,
14202 /^jul[i.]?$/i,
14203 /^aug/i,
14204 /^sep/i,
14205 /^okt/i,
14206 /^nov/i,
14207 /^dec/i,
14208 ],
14209 monthsRegex$9 = /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
14210
14211 hooks.defineLocale('nl', {
14212 months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(
14213 '_'
14214 ),
14215 monthsShort: function (m, format) {
14216 if (!m) {
14217 return monthsShortWithDots$2;
14218 } else if (/-MMM-/.test(format)) {
14219 return monthsShortWithoutDots$2[m.month()];
14220 } else {
14221 return monthsShortWithDots$2[m.month()];
14222 }
14223 },
14224
14225 monthsRegex: monthsRegex$9,
14226 monthsShortRegex: monthsRegex$9,
14227 monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
14228 monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
14229
14230 monthsParse: monthsParse$9,
14231 longMonthsParse: monthsParse$9,
14232 shortMonthsParse: monthsParse$9,
14233
14234 weekdays: 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split(
14235 '_'
14236 ),
14237 weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),
14238 weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),
14239 weekdaysParseExact: true,
14240 longDateFormat: {
14241 LT: 'HH:mm',
14242 LTS: 'HH:mm:ss',
14243 L: 'DD-MM-YYYY',
14244 LL: 'D MMMM YYYY',
14245 LLL: 'D MMMM YYYY HH:mm',
14246 LLLL: 'dddd D MMMM YYYY HH:mm',
14247 },
14248 calendar: {
14249 sameDay: '[vandaag om] LT',
14250 nextDay: '[morgen om] LT',
14251 nextWeek: 'dddd [om] LT',
14252 lastDay: '[gisteren om] LT',
14253 lastWeek: '[afgelopen] dddd [om] LT',
14254 sameElse: 'L',
14255 },
14256 relativeTime: {
14257 future: 'over %s',
14258 past: '%s geleden',
14259 s: 'een paar seconden',
14260 ss: '%d seconden',
14261 m: 'één minuut',
14262 mm: '%d minuten',
14263 h: 'één uur',
14264 hh: '%d uur',
14265 d: 'één dag',
14266 dd: '%d dagen',
14267 w: 'één week',
14268 ww: '%d weken',
14269 M: 'één maand',
14270 MM: '%d maanden',
14271 y: 'één jaar',
14272 yy: '%d jaar',
14273 },
14274 dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
14275 ordinal: function (number) {
14276 return (
14277 number +
14278 (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')
14279 );
14280 },
14281 week: {
14282 dow: 1, // Monday is the first day of the week.
14283 doy: 4, // The week that contains Jan 4th is the first week of the year.
14284 },
14285 });
14286
14287 //! moment.js locale configuration
14288
14289 hooks.defineLocale('nn', {
14290 months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(
14291 '_'
14292 ),
14293 monthsShort: 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split(
14294 '_'
14295 ),
14296 monthsParseExact: true,
14297 weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
14298 weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),
14299 weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),
14300 weekdaysParseExact: true,
14301 longDateFormat: {
14302 LT: 'HH:mm',
14303 LTS: 'HH:mm:ss',
14304 L: 'DD.MM.YYYY',
14305 LL: 'D. MMMM YYYY',
14306 LLL: 'D. MMMM YYYY [kl.] H:mm',
14307 LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',
14308 },
14309 calendar: {
14310 sameDay: '[I dag klokka] LT',
14311 nextDay: '[I morgon klokka] LT',
14312 nextWeek: 'dddd [klokka] LT',
14313 lastDay: '[I går klokka] LT',
14314 lastWeek: '[Føregåande] dddd [klokka] LT',
14315 sameElse: 'L',
14316 },
14317 relativeTime: {
14318 future: 'om %s',
14319 past: '%s sidan',
14320 s: 'nokre sekund',
14321 ss: '%d sekund',
14322 m: 'eit minutt',
14323 mm: '%d minutt',
14324 h: 'ein time',
14325 hh: '%d timar',
14326 d: 'ein dag',
14327 dd: '%d dagar',
14328 w: 'ei veke',
14329 ww: '%d veker',
14330 M: 'ein månad',
14331 MM: '%d månader',
14332 y: 'eit år',
14333 yy: '%d år',
14334 },
14335 dayOfMonthOrdinalParse: /\d{1,2}\./,
14336 ordinal: '%d.',
14337 week: {
14338 dow: 1, // Monday is the first day of the week.
14339 doy: 4, // The week that contains Jan 4th is the first week of the year.
14340 },
14341 });
14342
14343 //! moment.js locale configuration
14344
14345 hooks.defineLocale('oc-lnc', {
14346 months: {
14347 standalone: 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(
14348 '_'
14349 ),
14350 format: "de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre".split(
14351 '_'
14352 ),
14353 isFormat: /D[oD]?(\s)+MMMM/,
14354 },
14355 monthsShort: 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(
14356 '_'
14357 ),
14358 monthsParseExact: true,
14359 weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(
14360 '_'
14361 ),
14362 weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),
14363 weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),
14364 weekdaysParseExact: true,
14365 longDateFormat: {
14366 LT: 'H:mm',
14367 LTS: 'H:mm:ss',
14368 L: 'DD/MM/YYYY',
14369 LL: 'D MMMM [de] YYYY',
14370 ll: 'D MMM YYYY',
14371 LLL: 'D MMMM [de] YYYY [a] H:mm',
14372 lll: 'D MMM YYYY, H:mm',
14373 LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',
14374 llll: 'ddd D MMM YYYY, H:mm',
14375 },
14376 calendar: {
14377 sameDay: '[uèi a] LT',
14378 nextDay: '[deman a] LT',
14379 nextWeek: 'dddd [a] LT',
14380 lastDay: '[ièr a] LT',
14381 lastWeek: 'dddd [passat a] LT',
14382 sameElse: 'L',
14383 },
14384 relativeTime: {
14385 future: "d'aquí %s",
14386 past: 'fa %s',
14387 s: 'unas segondas',
14388 ss: '%d segondas',
14389 m: 'una minuta',
14390 mm: '%d minutas',
14391 h: 'una ora',
14392 hh: '%d oras',
14393 d: 'un jorn',
14394 dd: '%d jorns',
14395 M: 'un mes',
14396 MM: '%d meses',
14397 y: 'un an',
14398 yy: '%d ans',
14399 },
14400 dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
14401 ordinal: function (number, period) {
14402 var output =
14403 number === 1
14404 ? 'r'
14405 : number === 2
14406 ? 'n'
14407 : number === 3
14408 ? 'r'
14409 : number === 4
14410 ? 't'
14411 : 'è';
14412 if (period === 'w' || period === 'W') {
14413 output = 'a';
14414 }
14415 return number + output;
14416 },
14417 week: {
14418 dow: 1, // Monday is the first day of the week.
14419 doy: 4,
14420 },
14421 });
14422
14423 //! moment.js locale configuration
14424
14425 var symbolMap$f = {
14426 1: '੧',
14427 2: '੨',
14428 3: '੩',
14429 4: '੪',
14430 5: '੫',
14431 6: '੬',
14432 7: '੭',
14433 8: '੮',
14434 9: '੯',
14435 0: '੦',
14436 },
14437 numberMap$e = {
14438 '੧': '1',
14439 '੨': '2',
14440 '੩': '3',
14441 '੪': '4',
14442 '੫': '5',
14443 '੬': '6',
14444 '੭': '7',
14445 '੮': '8',
14446 '੯': '9',
14447 '੦': '0',
14448 };
14449
14450 hooks.defineLocale('pa-in', {
14451 // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
14452 months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
14453 '_'
14454 ),
14455 monthsShort: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(
14456 '_'
14457 ),
14458 weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(
14459 '_'
14460 ),
14461 weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
14462 weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
14463 longDateFormat: {
14464 LT: 'A h:mm ਵਜੇ',
14465 LTS: 'A h:mm:ss ਵਜੇ',
14466 L: 'DD/MM/YYYY',
14467 LL: 'D MMMM YYYY',
14468 LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',
14469 LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',
14470 },
14471 calendar: {
14472 sameDay: '[ਅਜ] LT',
14473 nextDay: '[ਕਲ] LT',
14474 nextWeek: '[ਅਗਲਾ] dddd, LT',
14475 lastDay: '[ਕਲ] LT',
14476 lastWeek: '[ਪਿਛਲੇ] dddd, LT',
14477 sameElse: 'L',
14478 },
14479 relativeTime: {
14480 future: '%s ਵਿੱਚ',
14481 past: '%s ਪਿਛਲੇ',
14482 s: 'ਕੁਝ ਸਕਿੰਟ',
14483 ss: '%d ਸਕਿੰਟ',
14484 m: 'ਇਕ ਮਿੰਟ',
14485 mm: '%d ਮਿੰਟ',
14486 h: 'ਇੱਕ ਘੰਟਾ',
14487 hh: '%d ਘੰਟੇ',
14488 d: 'ਇੱਕ ਦਿਨ',
14489 dd: '%d ਦਿਨ',
14490 M: 'ਇੱਕ ਮਹੀਨਾ',
14491 MM: '%d ਮਹੀਨੇ',
14492 y: 'ਇੱਕ ਸਾਲ',
14493 yy: '%d ਸਾਲ',
14494 },
14495 preparse: function (string) {
14496 return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
14497 return numberMap$e[match];
14498 });
14499 },
14500 postformat: function (string) {
14501 return string.replace(/\d/g, function (match) {
14502 return symbolMap$f[match];
14503 });
14504 },
14505 // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
14506 // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
14507 meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
14508 meridiemHour: function (hour, meridiem) {
14509 if (hour === 12) {
14510 hour = 0;
14511 }
14512 if (meridiem === 'ਰਾਤ') {
14513 return hour < 4 ? hour : hour + 12;
14514 } else if (meridiem === 'ਸਵੇਰ') {
14515 return hour;
14516 } else if (meridiem === 'ਦੁਪਹਿਰ') {
14517 return hour >= 10 ? hour : hour + 12;
14518 } else if (meridiem === 'ਸ਼ਾਮ') {
14519 return hour + 12;
14520 }
14521 },
14522 meridiem: function (hour, minute, isLower) {
14523 if (hour < 4) {
14524 return 'ਰਾਤ';
14525 } else if (hour < 10) {
14526 return 'ਸਵੇਰ';
14527 } else if (hour < 17) {
14528 return 'ਦੁਪਹਿਰ';
14529 } else if (hour < 20) {
14530 return 'ਸ਼ਾਮ';
14531 } else {
14532 return 'ਰਾਤ';
14533 }
14534 },
14535 week: {
14536 dow: 0, // Sunday is the first day of the week.
14537 doy: 6, // The week that contains Jan 6th is the first week of the year.
14538 },
14539 });
14540
14541 //! moment.js locale configuration
14542
14543 var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(
14544 '_'
14545 ),
14546 monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(
14547 '_'
14548 ),
14549 monthsParse$a = [
14550 /^sty/i,
14551 /^lut/i,
14552 /^mar/i,
14553 /^kwi/i,
14554 /^maj/i,
14555 /^cze/i,
14556 /^lip/i,
14557 /^sie/i,
14558 /^wrz/i,
14559 /^paź/i,
14560 /^lis/i,
14561 /^gru/i,
14562 ];
14563 function plural$3(n) {
14564 return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;
14565 }
14566 function translate$8(number, withoutSuffix, key) {
14567 var result = number + ' ';
14568 switch (key) {
14569 case 'ss':
14570 return result + (plural$3(number) ? 'sekundy' : 'sekund');
14571 case 'm':
14572 return withoutSuffix ? 'minuta' : 'minutę';
14573 case 'mm':
14574 return result + (plural$3(number) ? 'minuty' : 'minut');
14575 case 'h':
14576 return withoutSuffix ? 'godzina' : 'godzinę';
14577 case 'hh':
14578 return result + (plural$3(number) ? 'godziny' : 'godzin');
14579 case 'ww':
14580 return result + (plural$3(number) ? 'tygodnie' : 'tygodni');
14581 case 'MM':
14582 return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
14583 case 'yy':
14584 return result + (plural$3(number) ? 'lata' : 'lat');
14585 }
14586 }
14587
14588 hooks.defineLocale('pl', {
14589 months: function (momentToFormat, format) {
14590 if (!momentToFormat) {
14591 return monthsNominative;
14592 } else if (/D MMMM/.test(format)) {
14593 return monthsSubjective[momentToFormat.month()];
14594 } else {
14595 return monthsNominative[momentToFormat.month()];
14596 }
14597 },
14598 monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
14599 monthsParse: monthsParse$a,
14600 longMonthsParse: monthsParse$a,
14601 shortMonthsParse: monthsParse$a,
14602 weekdays: 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split(
14603 '_'
14604 ),
14605 weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
14606 weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
14607 longDateFormat: {
14608 LT: 'HH:mm',
14609 LTS: 'HH:mm:ss',
14610 L: 'DD.MM.YYYY',
14611 LL: 'D MMMM YYYY',
14612 LLL: 'D MMMM YYYY HH:mm',
14613 LLLL: 'dddd, D MMMM YYYY HH:mm',
14614 },
14615 calendar: {
14616 sameDay: '[Dziś o] LT',
14617 nextDay: '[Jutro o] LT',
14618 nextWeek: function () {
14619 switch (this.day()) {
14620 case 0:
14621 return '[W niedzielę o] LT';
14622
14623 case 2:
14624 return '[We wtorek o] LT';
14625
14626 case 3:
14627 return '[W środę o] LT';
14628
14629 case 6:
14630 return '[W sobotę o] LT';
14631
14632 default:
14633 return '[W] dddd [o] LT';
14634 }
14635 },
14636 lastDay: '[Wczoraj o] LT',
14637 lastWeek: function () {
14638 switch (this.day()) {
14639 case 0:
14640 return '[W zeszłą niedzielę o] LT';
14641 case 3:
14642 return '[W zeszłą środę o] LT';
14643 case 6:
14644 return '[W zeszłą sobotę o] LT';
14645 default:
14646 return '[W zeszły] dddd [o] LT';
14647 }
14648 },
14649 sameElse: 'L',
14650 },
14651 relativeTime: {
14652 future: 'za %s',
14653 past: '%s temu',
14654 s: 'kilka sekund',
14655 ss: translate$8,
14656 m: translate$8,
14657 mm: translate$8,
14658 h: translate$8,
14659 hh: translate$8,
14660 d: '1 dzień',
14661 dd: '%d dni',
14662 w: 'tydzień',
14663 ww: translate$8,
14664 M: 'miesiąc',
14665 MM: translate$8,
14666 y: 'rok',
14667 yy: translate$8,
14668 },
14669 dayOfMonthOrdinalParse: /\d{1,2}\./,
14670 ordinal: '%d.',
14671 week: {
14672 dow: 1, // Monday is the first day of the week.
14673 doy: 4, // The week that contains Jan 4th is the first week of the year.
14674 },
14675 });
14676
14677 //! moment.js locale configuration
14678
14679 hooks.defineLocale('pt-br', {
14680 months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
14681 '_'
14682 ),
14683 monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
14684 weekdays: 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(
14685 '_'
14686 ),
14687 weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),
14688 weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),
14689 weekdaysParseExact: true,
14690 longDateFormat: {
14691 LT: 'HH:mm',
14692 LTS: 'HH:mm:ss',
14693 L: 'DD/MM/YYYY',
14694 LL: 'D [de] MMMM [de] YYYY',
14695 LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',
14696 LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',
14697 },
14698 calendar: {
14699 sameDay: '[Hoje às] LT',
14700 nextDay: '[Amanhã às] LT',
14701 nextWeek: 'dddd [às] LT',
14702 lastDay: '[Ontem às] LT',
14703 lastWeek: function () {
14704 return this.day() === 0 || this.day() === 6
14705 ? '[Último] dddd [às] LT' // Saturday + Sunday
14706 : '[Última] dddd [às] LT'; // Monday - Friday
14707 },
14708 sameElse: 'L',
14709 },
14710 relativeTime: {
14711 future: 'em %s',
14712 past: 'há %s',
14713 s: 'poucos segundos',
14714 ss: '%d segundos',
14715 m: 'um minuto',
14716 mm: '%d minutos',
14717 h: 'uma hora',
14718 hh: '%d horas',
14719 d: 'um dia',
14720 dd: '%d dias',
14721 M: 'um mês',
14722 MM: '%d meses',
14723 y: 'um ano',
14724 yy: '%d anos',
14725 },
14726 dayOfMonthOrdinalParse: /\d{1,2}º/,
14727 ordinal: '%dº',
14728 invalidDate: 'Data inválida',
14729 });
14730
14731 //! moment.js locale configuration
14732
14733 hooks.defineLocale('pt', {
14734 months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(
14735 '_'
14736 ),
14737 monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
14738 weekdays: 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(
14739 '_'
14740 ),
14741 weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
14742 weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
14743 weekdaysParseExact: true,
14744 longDateFormat: {
14745 LT: 'HH:mm',
14746 LTS: 'HH:mm:ss',
14747 L: 'DD/MM/YYYY',
14748 LL: 'D [de] MMMM [de] YYYY',
14749 LLL: 'D [de] MMMM [de] YYYY HH:mm',
14750 LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',
14751 },
14752 calendar: {
14753 sameDay: '[Hoje às] LT',
14754 nextDay: '[Amanhã às] LT',
14755 nextWeek: 'dddd [às] LT',
14756 lastDay: '[Ontem às] LT',
14757 lastWeek: function () {
14758 return this.day() === 0 || this.day() === 6
14759 ? '[Último] dddd [às] LT' // Saturday + Sunday
14760 : '[Última] dddd [às] LT'; // Monday - Friday
14761 },
14762 sameElse: 'L',
14763 },
14764 relativeTime: {
14765 future: 'em %s',
14766 past: 'há %s',
14767 s: 'segundos',
14768 ss: '%d segundos',
14769 m: 'um minuto',
14770 mm: '%d minutos',
14771 h: 'uma hora',
14772 hh: '%d horas',
14773 d: 'um dia',
14774 dd: '%d dias',
14775 w: 'uma semana',
14776 ww: '%d semanas',
14777 M: 'um mês',
14778 MM: '%d meses',
14779 y: 'um ano',
14780 yy: '%d anos',
14781 },
14782 dayOfMonthOrdinalParse: /\d{1,2}º/,
14783 ordinal: '%dº',
14784 week: {
14785 dow: 1, // Monday is the first day of the week.
14786 doy: 4, // The week that contains Jan 4th is the first week of the year.
14787 },
14788 });
14789
14790 //! moment.js locale configuration
14791
14792 function relativeTimeWithPlural$2(number, withoutSuffix, key) {
14793 var format = {
14794 ss: 'secunde',
14795 mm: 'minute',
14796 hh: 'ore',
14797 dd: 'zile',
14798 ww: 'săptămâni',
14799 MM: 'luni',
14800 yy: 'ani',
14801 },
14802 separator = ' ';
14803 if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
14804 separator = ' de ';
14805 }
14806 return number + separator + format[key];
14807 }
14808
14809 hooks.defineLocale('ro', {
14810 months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(
14811 '_'
14812 ),
14813 monthsShort: 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(
14814 '_'
14815 ),
14816 monthsParseExact: true,
14817 weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
14818 weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
14819 weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
14820 longDateFormat: {
14821 LT: 'H:mm',
14822 LTS: 'H:mm:ss',
14823 L: 'DD.MM.YYYY',
14824 LL: 'D MMMM YYYY',
14825 LLL: 'D MMMM YYYY H:mm',
14826 LLLL: 'dddd, D MMMM YYYY H:mm',
14827 },
14828 calendar: {
14829 sameDay: '[azi la] LT',
14830 nextDay: '[mâine la] LT',
14831 nextWeek: 'dddd [la] LT',
14832 lastDay: '[ieri la] LT',
14833 lastWeek: '[fosta] dddd [la] LT',
14834 sameElse: 'L',
14835 },
14836 relativeTime: {
14837 future: 'peste %s',
14838 past: '%s în urmă',
14839 s: 'câteva secunde',
14840 ss: relativeTimeWithPlural$2,
14841 m: 'un minut',
14842 mm: relativeTimeWithPlural$2,
14843 h: 'o oră',
14844 hh: relativeTimeWithPlural$2,
14845 d: 'o zi',
14846 dd: relativeTimeWithPlural$2,
14847 w: 'o săptămână',
14848 ww: relativeTimeWithPlural$2,
14849 M: 'o lună',
14850 MM: relativeTimeWithPlural$2,
14851 y: 'un an',
14852 yy: relativeTimeWithPlural$2,
14853 },
14854 week: {
14855 dow: 1, // Monday is the first day of the week.
14856 doy: 7, // The week that contains Jan 7th is the first week of the year.
14857 },
14858 });
14859
14860 //! moment.js locale configuration
14861
14862 function plural$4(word, num) {
14863 var forms = word.split('_');
14864 return num % 10 === 1 && num % 100 !== 11
14865 ? forms[0]
14866 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
14867 ? forms[1]
14868 : forms[2];
14869 }
14870 function relativeTimeWithPlural$3(number, withoutSuffix, key) {
14871 var format = {
14872 ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
14873 mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
14874 hh: 'час_часа_часов',
14875 dd: 'день_дня_дней',
14876 ww: 'неделя_недели_недель',
14877 MM: 'месяц_месяца_месяцев',
14878 yy: 'год_года_лет',
14879 };
14880 if (key === 'm') {
14881 return withoutSuffix ? 'минута' : 'минуту';
14882 } else {
14883 return number + ' ' + plural$4(format[key], +number);
14884 }
14885 }
14886 var monthsParse$b = [
14887 /^янв/i,
14888 /^фев/i,
14889 /^мар/i,
14890 /^апр/i,
14891 /^ма[йя]/i,
14892 /^июн/i,
14893 /^июл/i,
14894 /^авг/i,
14895 /^сен/i,
14896 /^окт/i,
14897 /^ноя/i,
14898 /^дек/i,
14899 ];
14900
14901 // http://new.gramota.ru/spravka/rules/139-prop : § 103
14902 // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
14903 // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
14904 hooks.defineLocale('ru', {
14905 months: {
14906 format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(
14907 '_'
14908 ),
14909 standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(
14910 '_'
14911 ),
14912 },
14913 monthsShort: {
14914 // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку?
14915 format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(
14916 '_'
14917 ),
14918 standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(
14919 '_'
14920 ),
14921 },
14922 weekdays: {
14923 standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(
14924 '_'
14925 ),
14926 format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(
14927 '_'
14928 ),
14929 isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,
14930 },
14931 weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
14932 weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
14933 monthsParse: monthsParse$b,
14934 longMonthsParse: monthsParse$b,
14935 shortMonthsParse: monthsParse$b,
14936
14937 // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
14938 monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
14939
14940 // копия предыдущего
14941 monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
14942
14943 // полные названия с падежами
14944 monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
14945
14946 // Выражение, которое соответствует только сокращённым формам
14947 monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
14948 longDateFormat: {
14949 LT: 'H:mm',
14950 LTS: 'H:mm:ss',
14951 L: 'DD.MM.YYYY',
14952 LL: 'D MMMM YYYY г.',
14953 LLL: 'D MMMM YYYY г., H:mm',
14954 LLLL: 'dddd, D MMMM YYYY г., H:mm',
14955 },
14956 calendar: {
14957 sameDay: '[Сегодня, в] LT',
14958 nextDay: '[Завтра, в] LT',
14959 lastDay: '[Вчера, в] LT',
14960 nextWeek: function (now) {
14961 if (now.week() !== this.week()) {
14962 switch (this.day()) {
14963 case 0:
14964 return '[В следующее] dddd, [в] LT';
14965 case 1:
14966 case 2:
14967 case 4:
14968 return '[В следующий] dddd, [в] LT';
14969 case 3:
14970 case 5:
14971 case 6:
14972 return '[В следующую] dddd, [в] LT';
14973 }
14974 } else {
14975 if (this.day() === 2) {
14976 return '[Во] dddd, [в] LT';
14977 } else {
14978 return '[В] dddd, [в] LT';
14979 }
14980 }
14981 },
14982 lastWeek: function (now) {
14983 if (now.week() !== this.week()) {
14984 switch (this.day()) {
14985 case 0:
14986 return '[В прошлое] dddd, [в] LT';
14987 case 1:
14988 case 2:
14989 case 4:
14990 return '[В прошлый] dddd, [в] LT';
14991 case 3:
14992 case 5:
14993 case 6:
14994 return '[В прошлую] dddd, [в] LT';
14995 }
14996 } else {
14997 if (this.day() === 2) {
14998 return '[Во] dddd, [в] LT';
14999 } else {
15000 return '[В] dddd, [в] LT';
15001 }
15002 }
15003 },
15004 sameElse: 'L',
15005 },
15006 relativeTime: {
15007 future: 'через %s',
15008 past: '%s назад',
15009 s: 'несколько секунд',
15010 ss: relativeTimeWithPlural$3,
15011 m: relativeTimeWithPlural$3,
15012 mm: relativeTimeWithPlural$3,
15013 h: 'час',
15014 hh: relativeTimeWithPlural$3,
15015 d: 'день',
15016 dd: relativeTimeWithPlural$3,
15017 w: 'неделя',
15018 ww: relativeTimeWithPlural$3,
15019 M: 'месяц',
15020 MM: relativeTimeWithPlural$3,
15021 y: 'год',
15022 yy: relativeTimeWithPlural$3,
15023 },
15024 meridiemParse: /ночи|утра|дня|вечера/i,
15025 isPM: function (input) {
15026 return /^(дня|вечера)$/.test(input);
15027 },
15028 meridiem: function (hour, minute, isLower) {
15029 if (hour < 4) {
15030 return 'ночи';
15031 } else if (hour < 12) {
15032 return 'утра';
15033 } else if (hour < 17) {
15034 return 'дня';
15035 } else {
15036 return 'вечера';
15037 }
15038 },
15039 dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
15040 ordinal: function (number, period) {
15041 switch (period) {
15042 case 'M':
15043 case 'd':
15044 case 'DDD':
15045 return number + '-й';
15046 case 'D':
15047 return number + '-го';
15048 case 'w':
15049 case 'W':
15050 return number + '-я';
15051 default:
15052 return number;
15053 }
15054 },
15055 week: {
15056 dow: 1, // Monday is the first day of the week.
15057 doy: 4, // The week that contains Jan 4th is the first week of the year.
15058 },
15059 });
15060
15061 //! moment.js locale configuration
15062
15063 var months$9 = [
15064 'جنوري',
15065 'فيبروري',
15066 'مارچ',
15067 'اپريل',
15068 'مئي',
15069 'جون',
15070 'جولاءِ',
15071 'آگسٽ',
15072 'سيپٽمبر',
15073 'آڪٽوبر',
15074 'نومبر',
15075 'ڊسمبر',
15076 ],
15077 days$1 = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];
15078
15079 hooks.defineLocale('sd', {
15080 months: months$9,
15081 monthsShort: months$9,
15082 weekdays: days$1,
15083 weekdaysShort: days$1,
15084 weekdaysMin: days$1,
15085 longDateFormat: {
15086 LT: 'HH:mm',
15087 LTS: 'HH:mm:ss',
15088 L: 'DD/MM/YYYY',
15089 LL: 'D MMMM YYYY',
15090 LLL: 'D MMMM YYYY HH:mm',
15091 LLLL: 'dddd، D MMMM YYYY HH:mm',
15092 },
15093 meridiemParse: /صبح|شام/,
15094 isPM: function (input) {
15095 return 'شام' === input;
15096 },
15097 meridiem: function (hour, minute, isLower) {
15098 if (hour < 12) {
15099 return 'صبح';
15100 }
15101 return 'شام';
15102 },
15103 calendar: {
15104 sameDay: '[اڄ] LT',
15105 nextDay: '[سڀاڻي] LT',
15106 nextWeek: 'dddd [اڳين هفتي تي] LT',
15107 lastDay: '[ڪالهه] LT',
15108 lastWeek: '[گزريل هفتي] dddd [تي] LT',
15109 sameElse: 'L',
15110 },
15111 relativeTime: {
15112 future: '%s پوء',
15113 past: '%s اڳ',
15114 s: 'چند سيڪنڊ',
15115 ss: '%d سيڪنڊ',
15116 m: 'هڪ منٽ',
15117 mm: '%d منٽ',
15118 h: 'هڪ ڪلاڪ',
15119 hh: '%d ڪلاڪ',
15120 d: 'هڪ ڏينهن',
15121 dd: '%d ڏينهن',
15122 M: 'هڪ مهينو',
15123 MM: '%d مهينا',
15124 y: 'هڪ سال',
15125 yy: '%d سال',
15126 },
15127 preparse: function (string) {
15128 return string.replace(/،/g, ',');
15129 },
15130 postformat: function (string) {
15131 return string.replace(/,/g, '،');
15132 },
15133 week: {
15134 dow: 1, // Monday is the first day of the week.
15135 doy: 4, // The week that contains Jan 4th is the first week of the year.
15136 },
15137 });
15138
15139 //! moment.js locale configuration
15140
15141 hooks.defineLocale('se', {
15142 months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(
15143 '_'
15144 ),
15145 monthsShort: 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split(
15146 '_'
15147 ),
15148 weekdays: 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(
15149 '_'
15150 ),
15151 weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
15152 weekdaysMin: 's_v_m_g_d_b_L'.split('_'),
15153 longDateFormat: {
15154 LT: 'HH:mm',
15155 LTS: 'HH:mm:ss',
15156 L: 'DD.MM.YYYY',
15157 LL: 'MMMM D. [b.] YYYY',
15158 LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',
15159 LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',
15160 },
15161 calendar: {
15162 sameDay: '[otne ti] LT',
15163 nextDay: '[ihttin ti] LT',
15164 nextWeek: 'dddd [ti] LT',
15165 lastDay: '[ikte ti] LT',
15166 lastWeek: '[ovddit] dddd [ti] LT',
15167 sameElse: 'L',
15168 },
15169 relativeTime: {
15170 future: '%s geažes',
15171 past: 'maŋit %s',
15172 s: 'moadde sekunddat',
15173 ss: '%d sekunddat',
15174 m: 'okta minuhta',
15175 mm: '%d minuhtat',
15176 h: 'okta diimmu',
15177 hh: '%d diimmut',
15178 d: 'okta beaivi',
15179 dd: '%d beaivvit',
15180 M: 'okta mánnu',
15181 MM: '%d mánut',
15182 y: 'okta jahki',
15183 yy: '%d jagit',
15184 },
15185 dayOfMonthOrdinalParse: /\d{1,2}\./,
15186 ordinal: '%d.',
15187 week: {
15188 dow: 1, // Monday is the first day of the week.
15189 doy: 4, // The week that contains Jan 4th is the first week of the year.
15190 },
15191 });
15192
15193 //! moment.js locale configuration
15194
15195 /*jshint -W100*/
15196 hooks.defineLocale('si', {
15197 months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(
15198 '_'
15199 ),
15200 monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(
15201 '_'
15202 ),
15203 weekdays: 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(
15204 '_'
15205 ),
15206 weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
15207 weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
15208 weekdaysParseExact: true,
15209 longDateFormat: {
15210 LT: 'a h:mm',
15211 LTS: 'a h:mm:ss',
15212 L: 'YYYY/MM/DD',
15213 LL: 'YYYY MMMM D',
15214 LLL: 'YYYY MMMM D, a h:mm',
15215 LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',
15216 },
15217 calendar: {
15218 sameDay: '[අද] LT[ට]',
15219 nextDay: '[හෙට] LT[ට]',
15220 nextWeek: 'dddd LT[ට]',
15221 lastDay: '[ඊයේ] LT[ට]',
15222 lastWeek: '[පසුගිය] dddd LT[ට]',
15223 sameElse: 'L',
15224 },
15225 relativeTime: {
15226 future: '%sකින්',
15227 past: '%sකට පෙර',
15228 s: 'තත්පර කිහිපය',
15229 ss: 'තත්පර %d',
15230 m: 'මිනිත්තුව',
15231 mm: 'මිනිත්තු %d',
15232 h: 'පැය',
15233 hh: 'පැය %d',
15234 d: 'දිනය',
15235 dd: 'දින %d',
15236 M: 'මාසය',
15237 MM: 'මාස %d',
15238 y: 'වසර',
15239 yy: 'වසර %d',
15240 },
15241 dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
15242 ordinal: function (number) {
15243 return number + ' වැනි';
15244 },
15245 meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
15246 isPM: function (input) {
15247 return input === 'ප.ව.' || input === 'පස් වරු';
15248 },
15249 meridiem: function (hours, minutes, isLower) {
15250 if (hours > 11) {
15251 return isLower ? 'ප.ව.' : 'පස් වරු';
15252 } else {
15253 return isLower ? 'පෙ.ව.' : 'පෙර වරු';
15254 }
15255 },
15256 });
15257
15258 //! moment.js locale configuration
15259
15260 var months$a = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(
15261 '_'
15262 ),
15263 monthsShort$7 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
15264 function plural$5(n) {
15265 return n > 1 && n < 5;
15266 }
15267 function translate$9(number, withoutSuffix, key, isFuture) {
15268 var result = number + ' ';
15269 switch (key) {
15270 case 's': // a few seconds / in a few seconds / a few seconds ago
15271 return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';
15272 case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
15273 if (withoutSuffix || isFuture) {
15274 return result + (plural$5(number) ? 'sekundy' : 'sekúnd');
15275 } else {
15276 return result + 'sekundami';
15277 }
15278 case 'm': // a minute / in a minute / a minute ago
15279 return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';
15280 case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
15281 if (withoutSuffix || isFuture) {
15282 return result + (plural$5(number) ? 'minúty' : 'minút');
15283 } else {
15284 return result + 'minútami';
15285 }
15286 case 'h': // an hour / in an hour / an hour ago
15287 return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';
15288 case 'hh': // 9 hours / in 9 hours / 9 hours ago
15289 if (withoutSuffix || isFuture) {
15290 return result + (plural$5(number) ? 'hodiny' : 'hodín');
15291 } else {
15292 return result + 'hodinami';
15293 }
15294 case 'd': // a day / in a day / a day ago
15295 return withoutSuffix || isFuture ? 'deň' : 'dňom';
15296 case 'dd': // 9 days / in 9 days / 9 days ago
15297 if (withoutSuffix || isFuture) {
15298 return result + (plural$5(number) ? 'dni' : 'dní');
15299 } else {
15300 return result + 'dňami';
15301 }
15302 case 'M': // a month / in a month / a month ago
15303 return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';
15304 case 'MM': // 9 months / in 9 months / 9 months ago
15305 if (withoutSuffix || isFuture) {
15306 return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
15307 } else {
15308 return result + 'mesiacmi';
15309 }
15310 case 'y': // a year / in a year / a year ago
15311 return withoutSuffix || isFuture ? 'rok' : 'rokom';
15312 case 'yy': // 9 years / in 9 years / 9 years ago
15313 if (withoutSuffix || isFuture) {
15314 return result + (plural$5(number) ? 'roky' : 'rokov');
15315 } else {
15316 return result + 'rokmi';
15317 }
15318 }
15319 }
15320
15321 hooks.defineLocale('sk', {
15322 months: months$a,
15323 monthsShort: monthsShort$7,
15324 weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
15325 weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),
15326 weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),
15327 longDateFormat: {
15328 LT: 'H:mm',
15329 LTS: 'H:mm:ss',
15330 L: 'DD.MM.YYYY',
15331 LL: 'D. MMMM YYYY',
15332 LLL: 'D. MMMM YYYY H:mm',
15333 LLLL: 'dddd D. MMMM YYYY H:mm',
15334 },
15335 calendar: {
15336 sameDay: '[dnes o] LT',
15337 nextDay: '[zajtra o] LT',
15338 nextWeek: function () {
15339 switch (this.day()) {
15340 case 0:
15341 return '[v nedeľu o] LT';
15342 case 1:
15343 case 2:
15344 return '[v] dddd [o] LT';
15345 case 3:
15346 return '[v stredu o] LT';
15347 case 4:
15348 return '[vo štvrtok o] LT';
15349 case 5:
15350 return '[v piatok o] LT';
15351 case 6:
15352 return '[v sobotu o] LT';
15353 }
15354 },
15355 lastDay: '[včera o] LT',
15356 lastWeek: function () {
15357 switch (this.day()) {
15358 case 0:
15359 return '[minulú nedeľu o] LT';
15360 case 1:
15361 case 2:
15362 return '[minulý] dddd [o] LT';
15363 case 3:
15364 return '[minulú stredu o] LT';
15365 case 4:
15366 case 5:
15367 return '[minulý] dddd [o] LT';
15368 case 6:
15369 return '[minulú sobotu o] LT';
15370 }
15371 },
15372 sameElse: 'L',
15373 },
15374 relativeTime: {
15375 future: 'za %s',
15376 past: 'pred %s',
15377 s: translate$9,
15378 ss: translate$9,
15379 m: translate$9,
15380 mm: translate$9,
15381 h: translate$9,
15382 hh: translate$9,
15383 d: translate$9,
15384 dd: translate$9,
15385 M: translate$9,
15386 MM: translate$9,
15387 y: translate$9,
15388 yy: translate$9,
15389 },
15390 dayOfMonthOrdinalParse: /\d{1,2}\./,
15391 ordinal: '%d.',
15392 week: {
15393 dow: 1, // Monday is the first day of the week.
15394 doy: 4, // The week that contains Jan 4th is the first week of the year.
15395 },
15396 });
15397
15398 //! moment.js locale configuration
15399
15400 function processRelativeTime$7(number, withoutSuffix, key, isFuture) {
15401 var result = number + ' ';
15402 switch (key) {
15403 case 's':
15404 return withoutSuffix || isFuture
15405 ? 'nekaj sekund'
15406 : 'nekaj sekundami';
15407 case 'ss':
15408 if (number === 1) {
15409 result += withoutSuffix ? 'sekundo' : 'sekundi';
15410 } else if (number === 2) {
15411 result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
15412 } else if (number < 5) {
15413 result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
15414 } else {
15415 result += 'sekund';
15416 }
15417 return result;
15418 case 'm':
15419 return withoutSuffix ? 'ena minuta' : 'eno minuto';
15420 case 'mm':
15421 if (number === 1) {
15422 result += withoutSuffix ? 'minuta' : 'minuto';
15423 } else if (number === 2) {
15424 result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
15425 } else if (number < 5) {
15426 result += withoutSuffix || isFuture ? 'minute' : 'minutami';
15427 } else {
15428 result += withoutSuffix || isFuture ? 'minut' : 'minutami';
15429 }
15430 return result;
15431 case 'h':
15432 return withoutSuffix ? 'ena ura' : 'eno uro';
15433 case 'hh':
15434 if (number === 1) {
15435 result += withoutSuffix ? 'ura' : 'uro';
15436 } else if (number === 2) {
15437 result += withoutSuffix || isFuture ? 'uri' : 'urama';
15438 } else if (number < 5) {
15439 result += withoutSuffix || isFuture ? 'ure' : 'urami';
15440 } else {
15441 result += withoutSuffix || isFuture ? 'ur' : 'urami';
15442 }
15443 return result;
15444 case 'd':
15445 return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
15446 case 'dd':
15447 if (number === 1) {
15448 result += withoutSuffix || isFuture ? 'dan' : 'dnem';
15449 } else if (number === 2) {
15450 result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
15451 } else {
15452 result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
15453 }
15454 return result;
15455 case 'M':
15456 return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
15457 case 'MM':
15458 if (number === 1) {
15459 result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
15460 } else if (number === 2) {
15461 result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
15462 } else if (number < 5) {
15463 result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
15464 } else {
15465 result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
15466 }
15467 return result;
15468 case 'y':
15469 return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
15470 case 'yy':
15471 if (number === 1) {
15472 result += withoutSuffix || isFuture ? 'leto' : 'letom';
15473 } else if (number === 2) {
15474 result += withoutSuffix || isFuture ? 'leti' : 'letoma';
15475 } else if (number < 5) {
15476 result += withoutSuffix || isFuture ? 'leta' : 'leti';
15477 } else {
15478 result += withoutSuffix || isFuture ? 'let' : 'leti';
15479 }
15480 return result;
15481 }
15482 }
15483
15484 hooks.defineLocale('sl', {
15485 months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(
15486 '_'
15487 ),
15488 monthsShort: 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(
15489 '_'
15490 ),
15491 monthsParseExact: true,
15492 weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
15493 weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
15494 weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),
15495 weekdaysParseExact: true,
15496 longDateFormat: {
15497 LT: 'H:mm',
15498 LTS: 'H:mm:ss',
15499 L: 'DD. MM. YYYY',
15500 LL: 'D. MMMM YYYY',
15501 LLL: 'D. MMMM YYYY H:mm',
15502 LLLL: 'dddd, D. MMMM YYYY H:mm',
15503 },
15504 calendar: {
15505 sameDay: '[danes ob] LT',
15506 nextDay: '[jutri ob] LT',
15507
15508 nextWeek: function () {
15509 switch (this.day()) {
15510 case 0:
15511 return '[v] [nedeljo] [ob] LT';
15512 case 3:
15513 return '[v] [sredo] [ob] LT';
15514 case 6:
15515 return '[v] [soboto] [ob] LT';
15516 case 1:
15517 case 2:
15518 case 4:
15519 case 5:
15520 return '[v] dddd [ob] LT';
15521 }
15522 },
15523 lastDay: '[včeraj ob] LT',
15524 lastWeek: function () {
15525 switch (this.day()) {
15526 case 0:
15527 return '[prejšnjo] [nedeljo] [ob] LT';
15528 case 3:
15529 return '[prejšnjo] [sredo] [ob] LT';
15530 case 6:
15531 return '[prejšnjo] [soboto] [ob] LT';
15532 case 1:
15533 case 2:
15534 case 4:
15535 case 5:
15536 return '[prejšnji] dddd [ob] LT';
15537 }
15538 },
15539 sameElse: 'L',
15540 },
15541 relativeTime: {
15542 future: 'čez %s',
15543 past: 'pred %s',
15544 s: processRelativeTime$7,
15545 ss: processRelativeTime$7,
15546 m: processRelativeTime$7,
15547 mm: processRelativeTime$7,
15548 h: processRelativeTime$7,
15549 hh: processRelativeTime$7,
15550 d: processRelativeTime$7,
15551 dd: processRelativeTime$7,
15552 M: processRelativeTime$7,
15553 MM: processRelativeTime$7,
15554 y: processRelativeTime$7,
15555 yy: processRelativeTime$7,
15556 },
15557 dayOfMonthOrdinalParse: /\d{1,2}\./,
15558 ordinal: '%d.',
15559 week: {
15560 dow: 1, // Monday is the first day of the week.
15561 doy: 7, // The week that contains Jan 7th is the first week of the year.
15562 },
15563 });
15564
15565 //! moment.js locale configuration
15566
15567 hooks.defineLocale('sq', {
15568 months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(
15569 '_'
15570 ),
15571 monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
15572 weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(
15573 '_'
15574 ),
15575 weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
15576 weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),
15577 weekdaysParseExact: true,
15578 meridiemParse: /PD|MD/,
15579 isPM: function (input) {
15580 return input.charAt(0) === 'M';
15581 },
15582 meridiem: function (hours, minutes, isLower) {
15583 return hours < 12 ? 'PD' : 'MD';
15584 },
15585 longDateFormat: {
15586 LT: 'HH:mm',
15587 LTS: 'HH:mm:ss',
15588 L: 'DD/MM/YYYY',
15589 LL: 'D MMMM YYYY',
15590 LLL: 'D MMMM YYYY HH:mm',
15591 LLLL: 'dddd, D MMMM YYYY HH:mm',
15592 },
15593 calendar: {
15594 sameDay: '[Sot në] LT',
15595 nextDay: '[Nesër në] LT',
15596 nextWeek: 'dddd [në] LT',
15597 lastDay: '[Dje në] LT',
15598 lastWeek: 'dddd [e kaluar në] LT',
15599 sameElse: 'L',
15600 },
15601 relativeTime: {
15602 future: 'në %s',
15603 past: '%s më parë',
15604 s: 'disa sekonda',
15605 ss: '%d sekonda',
15606 m: 'një minutë',
15607 mm: '%d minuta',
15608 h: 'një orë',
15609 hh: '%d orë',
15610 d: 'një ditë',
15611 dd: '%d ditë',
15612 M: 'një muaj',
15613 MM: '%d muaj',
15614 y: 'një vit',
15615 yy: '%d vite',
15616 },
15617 dayOfMonthOrdinalParse: /\d{1,2}\./,
15618 ordinal: '%d.',
15619 week: {
15620 dow: 1, // Monday is the first day of the week.
15621 doy: 4, // The week that contains Jan 4th is the first week of the year.
15622 },
15623 });
15624
15625 //! moment.js locale configuration
15626
15627 var translator$1 = {
15628 words: {
15629 //Different grammatical cases
15630 ss: ['секунда', 'секунде', 'секунди'],
15631 m: ['један минут', 'једне минуте'],
15632 mm: ['минут', 'минуте', 'минута'],
15633 h: ['један сат', 'једног сата'],
15634 hh: ['сат', 'сата', 'сати'],
15635 dd: ['дан', 'дана', 'дана'],
15636 MM: ['месец', 'месеца', 'месеци'],
15637 yy: ['година', 'године', 'година'],
15638 },
15639 correctGrammaticalCase: function (number, wordKey) {
15640 return number === 1
15641 ? wordKey[0]
15642 : number >= 2 && number <= 4
15643 ? wordKey[1]
15644 : wordKey[2];
15645 },
15646 translate: function (number, withoutSuffix, key) {
15647 var wordKey = translator$1.words[key];
15648 if (key.length === 1) {
15649 return withoutSuffix ? wordKey[0] : wordKey[1];
15650 } else {
15651 return (
15652 number +
15653 ' ' +
15654 translator$1.correctGrammaticalCase(number, wordKey)
15655 );
15656 }
15657 },
15658 };
15659
15660 hooks.defineLocale('sr-cyrl', {
15661 months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(
15662 '_'
15663 ),
15664 monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split(
15665 '_'
15666 ),
15667 monthsParseExact: true,
15668 weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
15669 weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
15670 weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
15671 weekdaysParseExact: true,
15672 longDateFormat: {
15673 LT: 'H:mm',
15674 LTS: 'H:mm:ss',
15675 L: 'D. M. YYYY.',
15676 LL: 'D. MMMM YYYY.',
15677 LLL: 'D. MMMM YYYY. H:mm',
15678 LLLL: 'dddd, D. MMMM YYYY. H:mm',
15679 },
15680 calendar: {
15681 sameDay: '[данас у] LT',
15682 nextDay: '[сутра у] LT',
15683 nextWeek: function () {
15684 switch (this.day()) {
15685 case 0:
15686 return '[у] [недељу] [у] LT';
15687 case 3:
15688 return '[у] [среду] [у] LT';
15689 case 6:
15690 return '[у] [суботу] [у] LT';
15691 case 1:
15692 case 2:
15693 case 4:
15694 case 5:
15695 return '[у] dddd [у] LT';
15696 }
15697 },
15698 lastDay: '[јуче у] LT',
15699 lastWeek: function () {
15700 var lastWeekDays = [
15701 '[прошле] [недеље] [у] LT',
15702 '[прошлог] [понедељка] [у] LT',
15703 '[прошлог] [уторка] [у] LT',
15704 '[прошле] [среде] [у] LT',
15705 '[прошлог] [четвртка] [у] LT',
15706 '[прошлог] [петка] [у] LT',
15707 '[прошле] [суботе] [у] LT',
15708 ];
15709 return lastWeekDays[this.day()];
15710 },
15711 sameElse: 'L',
15712 },
15713 relativeTime: {
15714 future: 'за %s',
15715 past: 'пре %s',
15716 s: 'неколико секунди',
15717 ss: translator$1.translate,
15718 m: translator$1.translate,
15719 mm: translator$1.translate,
15720 h: translator$1.translate,
15721 hh: translator$1.translate,
15722 d: 'дан',
15723 dd: translator$1.translate,
15724 M: 'месец',
15725 MM: translator$1.translate,
15726 y: 'годину',
15727 yy: translator$1.translate,
15728 },
15729 dayOfMonthOrdinalParse: /\d{1,2}\./,
15730 ordinal: '%d.',
15731 week: {
15732 dow: 1, // Monday is the first day of the week.
15733 doy: 7, // The week that contains Jan 1st is the first week of the year.
15734 },
15735 });
15736
15737 //! moment.js locale configuration
15738
15739 var translator$2 = {
15740 words: {
15741 //Different grammatical cases
15742 ss: ['sekunda', 'sekunde', 'sekundi'],
15743 m: ['jedan minut', 'jedne minute'],
15744 mm: ['minut', 'minute', 'minuta'],
15745 h: ['jedan sat', 'jednog sata'],
15746 hh: ['sat', 'sata', 'sati'],
15747 dd: ['dan', 'dana', 'dana'],
15748 MM: ['mesec', 'meseca', 'meseci'],
15749 yy: ['godina', 'godine', 'godina'],
15750 },
15751 correctGrammaticalCase: function (number, wordKey) {
15752 return number === 1
15753 ? wordKey[0]
15754 : number >= 2 && number <= 4
15755 ? wordKey[1]
15756 : wordKey[2];
15757 },
15758 translate: function (number, withoutSuffix, key) {
15759 var wordKey = translator$2.words[key];
15760 if (key.length === 1) {
15761 return withoutSuffix ? wordKey[0] : wordKey[1];
15762 } else {
15763 return (
15764 number +
15765 ' ' +
15766 translator$2.correctGrammaticalCase(number, wordKey)
15767 );
15768 }
15769 },
15770 };
15771
15772 hooks.defineLocale('sr', {
15773 months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(
15774 '_'
15775 ),
15776 monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split(
15777 '_'
15778 ),
15779 monthsParseExact: true,
15780 weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(
15781 '_'
15782 ),
15783 weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
15784 weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
15785 weekdaysParseExact: true,
15786 longDateFormat: {
15787 LT: 'H:mm',
15788 LTS: 'H:mm:ss',
15789 L: 'D. M. YYYY.',
15790 LL: 'D. MMMM YYYY.',
15791 LLL: 'D. MMMM YYYY. H:mm',
15792 LLLL: 'dddd, D. MMMM YYYY. H:mm',
15793 },
15794 calendar: {
15795 sameDay: '[danas u] LT',
15796 nextDay: '[sutra u] LT',
15797 nextWeek: function () {
15798 switch (this.day()) {
15799 case 0:
15800 return '[u] [nedelju] [u] LT';
15801 case 3:
15802 return '[u] [sredu] [u] LT';
15803 case 6:
15804 return '[u] [subotu] [u] LT';
15805 case 1:
15806 case 2:
15807 case 4:
15808 case 5:
15809 return '[u] dddd [u] LT';
15810 }
15811 },
15812 lastDay: '[juče u] LT',
15813 lastWeek: function () {
15814 var lastWeekDays = [
15815 '[prošle] [nedelje] [u] LT',
15816 '[prošlog] [ponedeljka] [u] LT',
15817 '[prošlog] [utorka] [u] LT',
15818 '[prošle] [srede] [u] LT',
15819 '[prošlog] [četvrtka] [u] LT',
15820 '[prošlog] [petka] [u] LT',
15821 '[prošle] [subote] [u] LT',
15822 ];
15823 return lastWeekDays[this.day()];
15824 },
15825 sameElse: 'L',
15826 },
15827 relativeTime: {
15828 future: 'za %s',
15829 past: 'pre %s',
15830 s: 'nekoliko sekundi',
15831 ss: translator$2.translate,
15832 m: translator$2.translate,
15833 mm: translator$2.translate,
15834 h: translator$2.translate,
15835 hh: translator$2.translate,
15836 d: 'dan',
15837 dd: translator$2.translate,
15838 M: 'mesec',
15839 MM: translator$2.translate,
15840 y: 'godinu',
15841 yy: translator$2.translate,
15842 },
15843 dayOfMonthOrdinalParse: /\d{1,2}\./,
15844 ordinal: '%d.',
15845 week: {
15846 dow: 1, // Monday is the first day of the week.
15847 doy: 7, // The week that contains Jan 7th is the first week of the year.
15848 },
15849 });
15850
15851 //! moment.js locale configuration
15852
15853 hooks.defineLocale('ss', {
15854 months: "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split(
15855 '_'
15856 ),
15857 monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
15858 weekdays: 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(
15859 '_'
15860 ),
15861 weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
15862 weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
15863 weekdaysParseExact: true,
15864 longDateFormat: {
15865 LT: 'h:mm A',
15866 LTS: 'h:mm:ss A',
15867 L: 'DD/MM/YYYY',
15868 LL: 'D MMMM YYYY',
15869 LLL: 'D MMMM YYYY h:mm A',
15870 LLLL: 'dddd, D MMMM YYYY h:mm A',
15871 },
15872 calendar: {
15873 sameDay: '[Namuhla nga] LT',
15874 nextDay: '[Kusasa nga] LT',
15875 nextWeek: 'dddd [nga] LT',
15876 lastDay: '[Itolo nga] LT',
15877 lastWeek: 'dddd [leliphelile] [nga] LT',
15878 sameElse: 'L',
15879 },
15880 relativeTime: {
15881 future: 'nga %s',
15882 past: 'wenteka nga %s',
15883 s: 'emizuzwana lomcane',
15884 ss: '%d mzuzwana',
15885 m: 'umzuzu',
15886 mm: '%d emizuzu',
15887 h: 'lihora',
15888 hh: '%d emahora',
15889 d: 'lilanga',
15890 dd: '%d emalanga',
15891 M: 'inyanga',
15892 MM: '%d tinyanga',
15893 y: 'umnyaka',
15894 yy: '%d iminyaka',
15895 },
15896 meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
15897 meridiem: function (hours, minutes, isLower) {
15898 if (hours < 11) {
15899 return 'ekuseni';
15900 } else if (hours < 15) {
15901 return 'emini';
15902 } else if (hours < 19) {
15903 return 'entsambama';
15904 } else {
15905 return 'ebusuku';
15906 }
15907 },
15908 meridiemHour: function (hour, meridiem) {
15909 if (hour === 12) {
15910 hour = 0;
15911 }
15912 if (meridiem === 'ekuseni') {
15913 return hour;
15914 } else if (meridiem === 'emini') {
15915 return hour >= 11 ? hour : hour + 12;
15916 } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
15917 if (hour === 0) {
15918 return 0;
15919 }
15920 return hour + 12;
15921 }
15922 },
15923 dayOfMonthOrdinalParse: /\d{1,2}/,
15924 ordinal: '%d',
15925 week: {
15926 dow: 1, // Monday is the first day of the week.
15927 doy: 4, // The week that contains Jan 4th is the first week of the year.
15928 },
15929 });
15930
15931 //! moment.js locale configuration
15932
15933 hooks.defineLocale('sv', {
15934 months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(
15935 '_'
15936 ),
15937 monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
15938 weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
15939 weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
15940 weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),
15941 longDateFormat: {
15942 LT: 'HH:mm',
15943 LTS: 'HH:mm:ss',
15944 L: 'YYYY-MM-DD',
15945 LL: 'D MMMM YYYY',
15946 LLL: 'D MMMM YYYY [kl.] HH:mm',
15947 LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',
15948 lll: 'D MMM YYYY HH:mm',
15949 llll: 'ddd D MMM YYYY HH:mm',
15950 },
15951 calendar: {
15952 sameDay: '[Idag] LT',
15953 nextDay: '[Imorgon] LT',
15954 lastDay: '[Igår] LT',
15955 nextWeek: '[På] dddd LT',
15956 lastWeek: '[I] dddd[s] LT',
15957 sameElse: 'L',
15958 },
15959 relativeTime: {
15960 future: 'om %s',
15961 past: 'för %s sedan',
15962 s: 'några sekunder',
15963 ss: '%d sekunder',
15964 m: 'en minut',
15965 mm: '%d minuter',
15966 h: 'en timme',
15967 hh: '%d timmar',
15968 d: 'en dag',
15969 dd: '%d dagar',
15970 M: 'en månad',
15971 MM: '%d månader',
15972 y: 'ett år',
15973 yy: '%d år',
15974 },
15975 dayOfMonthOrdinalParse: /\d{1,2}(\:e|\:a)/,
15976 ordinal: function (number) {
15977 var b = number % 10,
15978 output =
15979 ~~((number % 100) / 10) === 1
15980 ? ':e'
15981 : b === 1
15982 ? ':a'
15983 : b === 2
15984 ? ':a'
15985 : b === 3
15986 ? ':e'
15987 : ':e';
15988 return number + output;
15989 },
15990 week: {
15991 dow: 1, // Monday is the first day of the week.
15992 doy: 4, // The week that contains Jan 4th is the first week of the year.
15993 },
15994 });
15995
15996 //! moment.js locale configuration
15997
15998 hooks.defineLocale('sw', {
15999 months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(
16000 '_'
16001 ),
16002 monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
16003 weekdays: 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(
16004 '_'
16005 ),
16006 weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
16007 weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
16008 weekdaysParseExact: true,
16009 longDateFormat: {
16010 LT: 'hh:mm A',
16011 LTS: 'HH:mm:ss',
16012 L: 'DD.MM.YYYY',
16013 LL: 'D MMMM YYYY',
16014 LLL: 'D MMMM YYYY HH:mm',
16015 LLLL: 'dddd, D MMMM YYYY HH:mm',
16016 },
16017 calendar: {
16018 sameDay: '[leo saa] LT',
16019 nextDay: '[kesho saa] LT',
16020 nextWeek: '[wiki ijayo] dddd [saat] LT',
16021 lastDay: '[jana] LT',
16022 lastWeek: '[wiki iliyopita] dddd [saat] LT',
16023 sameElse: 'L',
16024 },
16025 relativeTime: {
16026 future: '%s baadaye',
16027 past: 'tokea %s',
16028 s: 'hivi punde',
16029 ss: 'sekunde %d',
16030 m: 'dakika moja',
16031 mm: 'dakika %d',
16032 h: 'saa limoja',
16033 hh: 'masaa %d',
16034 d: 'siku moja',
16035 dd: 'siku %d',
16036 M: 'mwezi mmoja',
16037 MM: 'miezi %d',
16038 y: 'mwaka mmoja',
16039 yy: 'miaka %d',
16040 },
16041 week: {
16042 dow: 1, // Monday is the first day of the week.
16043 doy: 7, // The week that contains Jan 7th is the first week of the year.
16044 },
16045 });
16046
16047 //! moment.js locale configuration
16048
16049 var symbolMap$g = {
16050 1: '௧',
16051 2: '௨',
16052 3: '௩',
16053 4: '௪',
16054 5: '௫',
16055 6: '௬',
16056 7: '௭',
16057 8: '௮',
16058 9: '௯',
16059 0: '௦',
16060 },
16061 numberMap$f = {
16062 '௧': '1',
16063 '௨': '2',
16064 '௩': '3',
16065 '௪': '4',
16066 '௫': '5',
16067 '௬': '6',
16068 '௭': '7',
16069 '௮': '8',
16070 '௯': '9',
16071 '௦': '0',
16072 };
16073
16074 hooks.defineLocale('ta', {
16075 months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
16076 '_'
16077 ),
16078 monthsShort: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(
16079 '_'
16080 ),
16081 weekdays: 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(
16082 '_'
16083 ),
16084 weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(
16085 '_'
16086 ),
16087 weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
16088 longDateFormat: {
16089 LT: 'HH:mm',
16090 LTS: 'HH:mm:ss',
16091 L: 'DD/MM/YYYY',
16092 LL: 'D MMMM YYYY',
16093 LLL: 'D MMMM YYYY, HH:mm',
16094 LLLL: 'dddd, D MMMM YYYY, HH:mm',
16095 },
16096 calendar: {
16097 sameDay: '[இன்று] LT',
16098 nextDay: '[நாளை] LT',
16099 nextWeek: 'dddd, LT',
16100 lastDay: '[நேற்று] LT',
16101 lastWeek: '[கடந்த வாரம்] dddd, LT',
16102 sameElse: 'L',
16103 },
16104 relativeTime: {
16105 future: '%s இல்',
16106 past: '%s முன்',
16107 s: 'ஒரு சில விநாடிகள்',
16108 ss: '%d விநாடிகள்',
16109 m: 'ஒரு நிமிடம்',
16110 mm: '%d நிமிடங்கள்',
16111 h: 'ஒரு மணி நேரம்',
16112 hh: '%d மணி நேரம்',
16113 d: 'ஒரு நாள்',
16114 dd: '%d நாட்கள்',
16115 M: 'ஒரு மாதம்',
16116 MM: '%d மாதங்கள்',
16117 y: 'ஒரு வருடம்',
16118 yy: '%d ஆண்டுகள்',
16119 },
16120 dayOfMonthOrdinalParse: /\d{1,2}வது/,
16121 ordinal: function (number) {
16122 return number + 'வது';
16123 },
16124 preparse: function (string) {
16125 return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
16126 return numberMap$f[match];
16127 });
16128 },
16129 postformat: function (string) {
16130 return string.replace(/\d/g, function (match) {
16131 return symbolMap$g[match];
16132 });
16133 },
16134 // refer http://ta.wikipedia.org/s/1er1
16135 meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
16136 meridiem: function (hour, minute, isLower) {
16137 if (hour < 2) {
16138 return ' யாமம்';
16139 } else if (hour < 6) {
16140 return ' வைகறை'; // வைகறை
16141 } else if (hour < 10) {
16142 return ' காலை'; // காலை
16143 } else if (hour < 14) {
16144 return ' நண்பகல்'; // நண்பகல்
16145 } else if (hour < 18) {
16146 return ' எற்பாடு'; // எற்பாடு
16147 } else if (hour < 22) {
16148 return ' மாலை'; // மாலை
16149 } else {
16150 return ' யாமம்';
16151 }
16152 },
16153 meridiemHour: function (hour, meridiem) {
16154 if (hour === 12) {
16155 hour = 0;
16156 }
16157 if (meridiem === 'யாமம்') {
16158 return hour < 2 ? hour : hour + 12;
16159 } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
16160 return hour;
16161 } else if (meridiem === 'நண்பகல்') {
16162 return hour >= 10 ? hour : hour + 12;
16163 } else {
16164 return hour + 12;
16165 }
16166 },
16167 week: {
16168 dow: 0, // Sunday is the first day of the week.
16169 doy: 6, // The week that contains Jan 6th is the first week of the year.
16170 },
16171 });
16172
16173 //! moment.js locale configuration
16174
16175 hooks.defineLocale('te', {
16176 months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(
16177 '_'
16178 ),
16179 monthsShort: 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(
16180 '_'
16181 ),
16182 monthsParseExact: true,
16183 weekdays: 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(
16184 '_'
16185 ),
16186 weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
16187 weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
16188 longDateFormat: {
16189 LT: 'A h:mm',
16190 LTS: 'A h:mm:ss',
16191 L: 'DD/MM/YYYY',
16192 LL: 'D MMMM YYYY',
16193 LLL: 'D MMMM YYYY, A h:mm',
16194 LLLL: 'dddd, D MMMM YYYY, A h:mm',
16195 },
16196 calendar: {
16197 sameDay: '[నేడు] LT',
16198 nextDay: '[రేపు] LT',
16199 nextWeek: 'dddd, LT',
16200 lastDay: '[నిన్న] LT',
16201 lastWeek: '[గత] dddd, LT',
16202 sameElse: 'L',
16203 },
16204 relativeTime: {
16205 future: '%s లో',
16206 past: '%s క్రితం',
16207 s: 'కొన్ని క్షణాలు',
16208 ss: '%d సెకన్లు',
16209 m: 'ఒక నిమిషం',
16210 mm: '%d నిమిషాలు',
16211 h: 'ఒక గంట',
16212 hh: '%d గంటలు',
16213 d: 'ఒక రోజు',
16214 dd: '%d రోజులు',
16215 M: 'ఒక నెల',
16216 MM: '%d నెలలు',
16217 y: 'ఒక సంవత్సరం',
16218 yy: '%d సంవత్సరాలు',
16219 },
16220 dayOfMonthOrdinalParse: /\d{1,2}వ/,
16221 ordinal: '%dవ',
16222 meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
16223 meridiemHour: function (hour, meridiem) {
16224 if (hour === 12) {
16225 hour = 0;
16226 }
16227 if (meridiem === 'రాత్రి') {
16228 return hour < 4 ? hour : hour + 12;
16229 } else if (meridiem === 'ఉదయం') {
16230 return hour;
16231 } else if (meridiem === 'మధ్యాహ్నం') {
16232 return hour >= 10 ? hour : hour + 12;
16233 } else if (meridiem === 'సాయంత్రం') {
16234 return hour + 12;
16235 }
16236 },
16237 meridiem: function (hour, minute, isLower) {
16238 if (hour < 4) {
16239 return 'రాత్రి';
16240 } else if (hour < 10) {
16241 return 'ఉదయం';
16242 } else if (hour < 17) {
16243 return 'మధ్యాహ్నం';
16244 } else if (hour < 20) {
16245 return 'సాయంత్రం';
16246 } else {
16247 return 'రాత్రి';
16248 }
16249 },
16250 week: {
16251 dow: 0, // Sunday is the first day of the week.
16252 doy: 6, // The week that contains Jan 6th is the first week of the year.
16253 },
16254 });
16255
16256 //! moment.js locale configuration
16257
16258 hooks.defineLocale('tet', {
16259 months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(
16260 '_'
16261 ),
16262 monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
16263 weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
16264 weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
16265 weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
16266 longDateFormat: {
16267 LT: 'HH:mm',
16268 LTS: 'HH:mm:ss',
16269 L: 'DD/MM/YYYY',
16270 LL: 'D MMMM YYYY',
16271 LLL: 'D MMMM YYYY HH:mm',
16272 LLLL: 'dddd, D MMMM YYYY HH:mm',
16273 },
16274 calendar: {
16275 sameDay: '[Ohin iha] LT',
16276 nextDay: '[Aban iha] LT',
16277 nextWeek: 'dddd [iha] LT',
16278 lastDay: '[Horiseik iha] LT',
16279 lastWeek: 'dddd [semana kotuk] [iha] LT',
16280 sameElse: 'L',
16281 },
16282 relativeTime: {
16283 future: 'iha %s',
16284 past: '%s liuba',
16285 s: 'segundu balun',
16286 ss: 'segundu %d',
16287 m: 'minutu ida',
16288 mm: 'minutu %d',
16289 h: 'oras ida',
16290 hh: 'oras %d',
16291 d: 'loron ida',
16292 dd: 'loron %d',
16293 M: 'fulan ida',
16294 MM: 'fulan %d',
16295 y: 'tinan ida',
16296 yy: 'tinan %d',
16297 },
16298 dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
16299 ordinal: function (number) {
16300 var b = number % 10,
16301 output =
16302 ~~((number % 100) / 10) === 1
16303 ? 'th'
16304 : b === 1
16305 ? 'st'
16306 : b === 2
16307 ? 'nd'
16308 : b === 3
16309 ? 'rd'
16310 : 'th';
16311 return number + output;
16312 },
16313 week: {
16314 dow: 1, // Monday is the first day of the week.
16315 doy: 4, // The week that contains Jan 4th is the first week of the year.
16316 },
16317 });
16318
16319 //! moment.js locale configuration
16320
16321 var suffixes$3 = {
16322 0: '-ум',
16323 1: '-ум',
16324 2: '-юм',
16325 3: '-юм',
16326 4: '-ум',
16327 5: '-ум',
16328 6: '-ум',
16329 7: '-ум',
16330 8: '-ум',
16331 9: '-ум',
16332 10: '-ум',
16333 12: '-ум',
16334 13: '-ум',
16335 20: '-ум',
16336 30: '-юм',
16337 40: '-ум',
16338 50: '-ум',
16339 60: '-ум',
16340 70: '-ум',
16341 80: '-ум',
16342 90: '-ум',
16343 100: '-ум',
16344 };
16345
16346 hooks.defineLocale('tg', {
16347 months: {
16348 format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(
16349 '_'
16350 ),
16351 standalone: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
16352 '_'
16353 ),
16354 },
16355 monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
16356 weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(
16357 '_'
16358 ),
16359 weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
16360 weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
16361 longDateFormat: {
16362 LT: 'HH:mm',
16363 LTS: 'HH:mm:ss',
16364 L: 'DD.MM.YYYY',
16365 LL: 'D MMMM YYYY',
16366 LLL: 'D MMMM YYYY HH:mm',
16367 LLLL: 'dddd, D MMMM YYYY HH:mm',
16368 },
16369 calendar: {
16370 sameDay: '[Имрӯз соати] LT',
16371 nextDay: '[Фардо соати] LT',
16372 lastDay: '[Дирӯз соати] LT',
16373 nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',
16374 lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',
16375 sameElse: 'L',
16376 },
16377 relativeTime: {
16378 future: 'баъди %s',
16379 past: '%s пеш',
16380 s: 'якчанд сония',
16381 m: 'як дақиқа',
16382 mm: '%d дақиқа',
16383 h: 'як соат',
16384 hh: '%d соат',
16385 d: 'як рӯз',
16386 dd: '%d рӯз',
16387 M: 'як моҳ',
16388 MM: '%d моҳ',
16389 y: 'як сол',
16390 yy: '%d сол',
16391 },
16392 meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
16393 meridiemHour: function (hour, meridiem) {
16394 if (hour === 12) {
16395 hour = 0;
16396 }
16397 if (meridiem === 'шаб') {
16398 return hour < 4 ? hour : hour + 12;
16399 } else if (meridiem === 'субҳ') {
16400 return hour;
16401 } else if (meridiem === 'рӯз') {
16402 return hour >= 11 ? hour : hour + 12;
16403 } else if (meridiem === 'бегоҳ') {
16404 return hour + 12;
16405 }
16406 },
16407 meridiem: function (hour, minute, isLower) {
16408 if (hour < 4) {
16409 return 'шаб';
16410 } else if (hour < 11) {
16411 return 'субҳ';
16412 } else if (hour < 16) {
16413 return 'рӯз';
16414 } else if (hour < 19) {
16415 return 'бегоҳ';
16416 } else {
16417 return 'шаб';
16418 }
16419 },
16420 dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
16421 ordinal: function (number) {
16422 var a = number % 10,
16423 b = number >= 100 ? 100 : null;
16424 return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);
16425 },
16426 week: {
16427 dow: 1, // Monday is the first day of the week.
16428 doy: 7, // The week that contains Jan 1th is the first week of the year.
16429 },
16430 });
16431
16432 //! moment.js locale configuration
16433
16434 hooks.defineLocale('th', {
16435 months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(
16436 '_'
16437 ),
16438 monthsShort: 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(
16439 '_'
16440 ),
16441 monthsParseExact: true,
16442 weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
16443 weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
16444 weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
16445 weekdaysParseExact: true,
16446 longDateFormat: {
16447 LT: 'H:mm',
16448 LTS: 'H:mm:ss',
16449 L: 'DD/MM/YYYY',
16450 LL: 'D MMMM YYYY',
16451 LLL: 'D MMMM YYYY เวลา H:mm',
16452 LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',
16453 },
16454 meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
16455 isPM: function (input) {
16456 return input === 'หลังเที่ยง';
16457 },
16458 meridiem: function (hour, minute, isLower) {
16459 if (hour < 12) {
16460 return 'ก่อนเที่ยง';
16461 } else {
16462 return 'หลังเที่ยง';
16463 }
16464 },
16465 calendar: {
16466 sameDay: '[วันนี้ เวลา] LT',
16467 nextDay: '[พรุ่งนี้ เวลา] LT',
16468 nextWeek: 'dddd[หน้า เวลา] LT',
16469 lastDay: '[เมื่อวานนี้ เวลา] LT',
16470 lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',
16471 sameElse: 'L',
16472 },
16473 relativeTime: {
16474 future: 'อีก %s',
16475 past: '%sที่แล้ว',
16476 s: 'ไม่กี่วินาที',
16477 ss: '%d วินาที',
16478 m: '1 นาที',
16479 mm: '%d นาที',
16480 h: '1 ชั่วโมง',
16481 hh: '%d ชั่วโมง',
16482 d: '1 วัน',
16483 dd: '%d วัน',
16484 w: '1 สัปดาห์',
16485 ww: '%d สัปดาห์',
16486 M: '1 เดือน',
16487 MM: '%d เดือน',
16488 y: '1 ปี',
16489 yy: '%d ปี',
16490 },
16491 });
16492
16493 //! moment.js locale configuration
16494
16495 var suffixes$4 = {
16496 1: "'inji",
16497 5: "'inji",
16498 8: "'inji",
16499 70: "'inji",
16500 80: "'inji",
16501 2: "'nji",
16502 7: "'nji",
16503 20: "'nji",
16504 50: "'nji",
16505 3: "'ünji",
16506 4: "'ünji",
16507 100: "'ünji",
16508 6: "'njy",
16509 9: "'unjy",
16510 10: "'unjy",
16511 30: "'unjy",
16512 60: "'ynjy",
16513 90: "'ynjy",
16514 };
16515
16516 hooks.defineLocale('tk', {
16517 months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(
16518 '_'
16519 ),
16520 monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),
16521 weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(
16522 '_'
16523 ),
16524 weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),
16525 weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),
16526 longDateFormat: {
16527 LT: 'HH:mm',
16528 LTS: 'HH:mm:ss',
16529 L: 'DD.MM.YYYY',
16530 LL: 'D MMMM YYYY',
16531 LLL: 'D MMMM YYYY HH:mm',
16532 LLLL: 'dddd, D MMMM YYYY HH:mm',
16533 },
16534 calendar: {
16535 sameDay: '[bugün sagat] LT',
16536 nextDay: '[ertir sagat] LT',
16537 nextWeek: '[indiki] dddd [sagat] LT',
16538 lastDay: '[düýn] LT',
16539 lastWeek: '[geçen] dddd [sagat] LT',
16540 sameElse: 'L',
16541 },
16542 relativeTime: {
16543 future: '%s soň',
16544 past: '%s öň',
16545 s: 'birnäçe sekunt',
16546 m: 'bir minut',
16547 mm: '%d minut',
16548 h: 'bir sagat',
16549 hh: '%d sagat',
16550 d: 'bir gün',
16551 dd: '%d gün',
16552 M: 'bir aý',
16553 MM: '%d aý',
16554 y: 'bir ýyl',
16555 yy: '%d ýyl',
16556 },
16557 ordinal: function (number, period) {
16558 switch (period) {
16559 case 'd':
16560 case 'D':
16561 case 'Do':
16562 case 'DD':
16563 return number;
16564 default:
16565 if (number === 0) {
16566 // special case for zero
16567 return number + "'unjy";
16568 }
16569 var a = number % 10,
16570 b = (number % 100) - a,
16571 c = number >= 100 ? 100 : null;
16572 return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);
16573 }
16574 },
16575 week: {
16576 dow: 1, // Monday is the first day of the week.
16577 doy: 7, // The week that contains Jan 7th is the first week of the year.
16578 },
16579 });
16580
16581 //! moment.js locale configuration
16582
16583 hooks.defineLocale('tl-ph', {
16584 months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(
16585 '_'
16586 ),
16587 monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
16588 weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(
16589 '_'
16590 ),
16591 weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
16592 weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
16593 longDateFormat: {
16594 LT: 'HH:mm',
16595 LTS: 'HH:mm:ss',
16596 L: 'MM/D/YYYY',
16597 LL: 'MMMM D, YYYY',
16598 LLL: 'MMMM D, YYYY HH:mm',
16599 LLLL: 'dddd, MMMM DD, YYYY HH:mm',
16600 },
16601 calendar: {
16602 sameDay: 'LT [ngayong araw]',
16603 nextDay: '[Bukas ng] LT',
16604 nextWeek: 'LT [sa susunod na] dddd',
16605 lastDay: 'LT [kahapon]',
16606 lastWeek: 'LT [noong nakaraang] dddd',
16607 sameElse: 'L',
16608 },
16609 relativeTime: {
16610 future: 'sa loob ng %s',
16611 past: '%s ang nakalipas',
16612 s: 'ilang segundo',
16613 ss: '%d segundo',
16614 m: 'isang minuto',
16615 mm: '%d minuto',
16616 h: 'isang oras',
16617 hh: '%d oras',
16618 d: 'isang araw',
16619 dd: '%d araw',
16620 M: 'isang buwan',
16621 MM: '%d buwan',
16622 y: 'isang taon',
16623 yy: '%d taon',
16624 },
16625 dayOfMonthOrdinalParse: /\d{1,2}/,
16626 ordinal: function (number) {
16627 return number;
16628 },
16629 week: {
16630 dow: 1, // Monday is the first day of the week.
16631 doy: 4, // The week that contains Jan 4th is the first week of the year.
16632 },
16633 });
16634
16635 //! moment.js locale configuration
16636
16637 var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
16638
16639 function translateFuture(output) {
16640 var time = output;
16641 time =
16642 output.indexOf('jaj') !== -1
16643 ? time.slice(0, -3) + 'leS'
16644 : output.indexOf('jar') !== -1
16645 ? time.slice(0, -3) + 'waQ'
16646 : output.indexOf('DIS') !== -1
16647 ? time.slice(0, -3) + 'nem'
16648 : time + ' pIq';
16649 return time;
16650 }
16651
16652 function translatePast(output) {
16653 var time = output;
16654 time =
16655 output.indexOf('jaj') !== -1
16656 ? time.slice(0, -3) + 'Hu’'
16657 : output.indexOf('jar') !== -1
16658 ? time.slice(0, -3) + 'wen'
16659 : output.indexOf('DIS') !== -1
16660 ? time.slice(0, -3) + 'ben'
16661 : time + ' ret';
16662 return time;
16663 }
16664
16665 function translate$a(number, withoutSuffix, string, isFuture) {
16666 var numberNoun = numberAsNoun(number);
16667 switch (string) {
16668 case 'ss':
16669 return numberNoun + ' lup';
16670 case 'mm':
16671 return numberNoun + ' tup';
16672 case 'hh':
16673 return numberNoun + ' rep';
16674 case 'dd':
16675 return numberNoun + ' jaj';
16676 case 'MM':
16677 return numberNoun + ' jar';
16678 case 'yy':
16679 return numberNoun + ' DIS';
16680 }
16681 }
16682
16683 function numberAsNoun(number) {
16684 var hundred = Math.floor((number % 1000) / 100),
16685 ten = Math.floor((number % 100) / 10),
16686 one = number % 10,
16687 word = '';
16688 if (hundred > 0) {
16689 word += numbersNouns[hundred] + 'vatlh';
16690 }
16691 if (ten > 0) {
16692 word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';
16693 }
16694 if (one > 0) {
16695 word += (word !== '' ? ' ' : '') + numbersNouns[one];
16696 }
16697 return word === '' ? 'pagh' : word;
16698 }
16699
16700 hooks.defineLocale('tlh', {
16701 months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(
16702 '_'
16703 ),
16704 monthsShort: 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(
16705 '_'
16706 ),
16707 monthsParseExact: true,
16708 weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
16709 '_'
16710 ),
16711 weekdaysShort: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
16712 '_'
16713 ),
16714 weekdaysMin: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(
16715 '_'
16716 ),
16717 longDateFormat: {
16718 LT: 'HH:mm',
16719 LTS: 'HH:mm:ss',
16720 L: 'DD.MM.YYYY',
16721 LL: 'D MMMM YYYY',
16722 LLL: 'D MMMM YYYY HH:mm',
16723 LLLL: 'dddd, D MMMM YYYY HH:mm',
16724 },
16725 calendar: {
16726 sameDay: '[DaHjaj] LT',
16727 nextDay: '[wa’leS] LT',
16728 nextWeek: 'LLL',
16729 lastDay: '[wa’Hu’] LT',
16730 lastWeek: 'LLL',
16731 sameElse: 'L',
16732 },
16733 relativeTime: {
16734 future: translateFuture,
16735 past: translatePast,
16736 s: 'puS lup',
16737 ss: translate$a,
16738 m: 'wa’ tup',
16739 mm: translate$a,
16740 h: 'wa’ rep',
16741 hh: translate$a,
16742 d: 'wa’ jaj',
16743 dd: translate$a,
16744 M: 'wa’ jar',
16745 MM: translate$a,
16746 y: 'wa’ DIS',
16747 yy: translate$a,
16748 },
16749 dayOfMonthOrdinalParse: /\d{1,2}\./,
16750 ordinal: '%d.',
16751 week: {
16752 dow: 1, // Monday is the first day of the week.
16753 doy: 4, // The week that contains Jan 4th is the first week of the year.
16754 },
16755 });
16756
16757 //! moment.js locale configuration
16758
16759 var suffixes$5 = {
16760 1: "'inci",
16761 5: "'inci",
16762 8: "'inci",
16763 70: "'inci",
16764 80: "'inci",
16765 2: "'nci",
16766 7: "'nci",
16767 20: "'nci",
16768 50: "'nci",
16769 3: "'üncü",
16770 4: "'üncü",
16771 100: "'üncü",
16772 6: "'ncı",
16773 9: "'uncu",
16774 10: "'uncu",
16775 30: "'uncu",
16776 60: "'ıncı",
16777 90: "'ıncı",
16778 };
16779
16780 hooks.defineLocale('tr', {
16781 months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(
16782 '_'
16783 ),
16784 monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
16785 weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(
16786 '_'
16787 ),
16788 weekdaysShort: 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
16789 weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
16790 meridiem: function (hours, minutes, isLower) {
16791 if (hours < 12) {
16792 return isLower ? 'öö' : 'ÖÖ';
16793 } else {
16794 return isLower ? 'ös' : 'ÖS';
16795 }
16796 },
16797 meridiemParse: /öö|ÖÖ|ös|ÖS/,
16798 isPM: function (input) {
16799 return input === 'ös' || input === 'ÖS';
16800 },
16801 longDateFormat: {
16802 LT: 'HH:mm',
16803 LTS: 'HH:mm:ss',
16804 L: 'DD.MM.YYYY',
16805 LL: 'D MMMM YYYY',
16806 LLL: 'D MMMM YYYY HH:mm',
16807 LLLL: 'dddd, D MMMM YYYY HH:mm',
16808 },
16809 calendar: {
16810 sameDay: '[bugün saat] LT',
16811 nextDay: '[yarın saat] LT',
16812 nextWeek: '[gelecek] dddd [saat] LT',
16813 lastDay: '[dün] LT',
16814 lastWeek: '[geçen] dddd [saat] LT',
16815 sameElse: 'L',
16816 },
16817 relativeTime: {
16818 future: '%s sonra',
16819 past: '%s önce',
16820 s: 'birkaç saniye',
16821 ss: '%d saniye',
16822 m: 'bir dakika',
16823 mm: '%d dakika',
16824 h: 'bir saat',
16825 hh: '%d saat',
16826 d: 'bir gün',
16827 dd: '%d gün',
16828 w: 'bir hafta',
16829 ww: '%d hafta',
16830 M: 'bir ay',
16831 MM: '%d ay',
16832 y: 'bir yıl',
16833 yy: '%d yıl',
16834 },
16835 ordinal: function (number, period) {
16836 switch (period) {
16837 case 'd':
16838 case 'D':
16839 case 'Do':
16840 case 'DD':
16841 return number;
16842 default:
16843 if (number === 0) {
16844 // special case for zero
16845 return number + "'ıncı";
16846 }
16847 var a = number % 10,
16848 b = (number % 100) - a,
16849 c = number >= 100 ? 100 : null;
16850 return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]);
16851 }
16852 },
16853 week: {
16854 dow: 1, // Monday is the first day of the week.
16855 doy: 7, // The week that contains Jan 7th is the first week of the year.
16856 },
16857 });
16858
16859 //! moment.js locale configuration
16860
16861 // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
16862 // This is currently too difficult (maybe even impossible) to add.
16863 hooks.defineLocale('tzl', {
16864 months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(
16865 '_'
16866 ),
16867 monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
16868 weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
16869 weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
16870 weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
16871 longDateFormat: {
16872 LT: 'HH.mm',
16873 LTS: 'HH.mm.ss',
16874 L: 'DD.MM.YYYY',
16875 LL: 'D. MMMM [dallas] YYYY',
16876 LLL: 'D. MMMM [dallas] YYYY HH.mm',
16877 LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',
16878 },
16879 meridiemParse: /d\'o|d\'a/i,
16880 isPM: function (input) {
16881 return "d'o" === input.toLowerCase();
16882 },
16883 meridiem: function (hours, minutes, isLower) {
16884 if (hours > 11) {
16885 return isLower ? "d'o" : "D'O";
16886 } else {
16887 return isLower ? "d'a" : "D'A";
16888 }
16889 },
16890 calendar: {
16891 sameDay: '[oxhi à] LT',
16892 nextDay: '[demà à] LT',
16893 nextWeek: 'dddd [à] LT',
16894 lastDay: '[ieiri à] LT',
16895 lastWeek: '[sür el] dddd [lasteu à] LT',
16896 sameElse: 'L',
16897 },
16898 relativeTime: {
16899 future: 'osprei %s',
16900 past: 'ja%s',
16901 s: processRelativeTime$8,
16902 ss: processRelativeTime$8,
16903 m: processRelativeTime$8,
16904 mm: processRelativeTime$8,
16905 h: processRelativeTime$8,
16906 hh: processRelativeTime$8,
16907 d: processRelativeTime$8,
16908 dd: processRelativeTime$8,
16909 M: processRelativeTime$8,
16910 MM: processRelativeTime$8,
16911 y: processRelativeTime$8,
16912 yy: processRelativeTime$8,
16913 },
16914 dayOfMonthOrdinalParse: /\d{1,2}\./,
16915 ordinal: '%d.',
16916 week: {
16917 dow: 1, // Monday is the first day of the week.
16918 doy: 4, // The week that contains Jan 4th is the first week of the year.
16919 },
16920 });
16921
16922 function processRelativeTime$8(number, withoutSuffix, key, isFuture) {
16923 var format = {
16924 s: ['viensas secunds', "'iensas secunds"],
16925 ss: [number + ' secunds', '' + number + ' secunds'],
16926 m: ["'n míut", "'iens míut"],
16927 mm: [number + ' míuts', '' + number + ' míuts'],
16928 h: ["'n þora", "'iensa þora"],
16929 hh: [number + ' þoras', '' + number + ' þoras'],
16930 d: ["'n ziua", "'iensa ziua"],
16931 dd: [number + ' ziuas', '' + number + ' ziuas'],
16932 M: ["'n mes", "'iens mes"],
16933 MM: [number + ' mesen', '' + number + ' mesen'],
16934 y: ["'n ar", "'iens ar"],
16935 yy: [number + ' ars', '' + number + ' ars'],
16936 };
16937 return isFuture
16938 ? format[key][0]
16939 : withoutSuffix
16940 ? format[key][0]
16941 : format[key][1];
16942 }
16943
16944 //! moment.js locale configuration
16945
16946 hooks.defineLocale('tzm-latn', {
16947 months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
16948 '_'
16949 ),
16950 monthsShort: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(
16951 '_'
16952 ),
16953 weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
16954 weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
16955 weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
16956 longDateFormat: {
16957 LT: 'HH:mm',
16958 LTS: 'HH:mm:ss',
16959 L: 'DD/MM/YYYY',
16960 LL: 'D MMMM YYYY',
16961 LLL: 'D MMMM YYYY HH:mm',
16962 LLLL: 'dddd D MMMM YYYY HH:mm',
16963 },
16964 calendar: {
16965 sameDay: '[asdkh g] LT',
16966 nextDay: '[aska g] LT',
16967 nextWeek: 'dddd [g] LT',
16968 lastDay: '[assant g] LT',
16969 lastWeek: 'dddd [g] LT',
16970 sameElse: 'L',
16971 },
16972 relativeTime: {
16973 future: 'dadkh s yan %s',
16974 past: 'yan %s',
16975 s: 'imik',
16976 ss: '%d imik',
16977 m: 'minuḍ',
16978 mm: '%d minuḍ',
16979 h: 'saɛa',
16980 hh: '%d tassaɛin',
16981 d: 'ass',
16982 dd: '%d ossan',
16983 M: 'ayowr',
16984 MM: '%d iyyirn',
16985 y: 'asgas',
16986 yy: '%d isgasn',
16987 },
16988 week: {
16989 dow: 6, // Saturday is the first day of the week.
16990 doy: 12, // The week that contains Jan 12th is the first week of the year.
16991 },
16992 });
16993
16994 //! moment.js locale configuration
16995
16996 hooks.defineLocale('tzm', {
16997 months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
16998 '_'
16999 ),
17000 monthsShort: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(
17001 '_'
17002 ),
17003 weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
17004 weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
17005 weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
17006 longDateFormat: {
17007 LT: 'HH:mm',
17008 LTS: 'HH:mm:ss',
17009 L: 'DD/MM/YYYY',
17010 LL: 'D MMMM YYYY',
17011 LLL: 'D MMMM YYYY HH:mm',
17012 LLLL: 'dddd D MMMM YYYY HH:mm',
17013 },
17014 calendar: {
17015 sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
17016 nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
17017 nextWeek: 'dddd [ⴴ] LT',
17018 lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
17019 lastWeek: 'dddd [ⴴ] LT',
17020 sameElse: 'L',
17021 },
17022 relativeTime: {
17023 future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
17024 past: 'ⵢⴰⵏ %s',
17025 s: 'ⵉⵎⵉⴽ',
17026 ss: '%d ⵉⵎⵉⴽ',
17027 m: 'ⵎⵉⵏⵓⴺ',
17028 mm: '%d ⵎⵉⵏⵓⴺ',
17029 h: 'ⵙⴰⵄⴰ',
17030 hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
17031 d: 'ⴰⵙⵙ',
17032 dd: '%d oⵙⵙⴰⵏ',
17033 M: 'ⴰⵢoⵓⵔ',
17034 MM: '%d ⵉⵢⵢⵉⵔⵏ',
17035 y: 'ⴰⵙⴳⴰⵙ',
17036 yy: '%d ⵉⵙⴳⴰⵙⵏ',
17037 },
17038 week: {
17039 dow: 6, // Saturday is the first day of the week.
17040 doy: 12, // The week that contains Jan 12th is the first week of the year.
17041 },
17042 });
17043
17044 //! moment.js locale configuration
17045
17046 hooks.defineLocale('ug-cn', {
17047 months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
17048 '_'
17049 ),
17050 monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
17051 '_'
17052 ),
17053 weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
17054 '_'
17055 ),
17056 weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
17057 weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
17058 longDateFormat: {
17059 LT: 'HH:mm',
17060 LTS: 'HH:mm:ss',
17061 L: 'YYYY-MM-DD',
17062 LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
17063 LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
17064 LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
17065 },
17066 meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
17067 meridiemHour: function (hour, meridiem) {
17068 if (hour === 12) {
17069 hour = 0;
17070 }
17071 if (
17072 meridiem === 'يېرىم كېچە' ||
17073 meridiem === 'سەھەر' ||
17074 meridiem === 'چۈشتىن بۇرۇن'
17075 ) {
17076 return hour;
17077 } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
17078 return hour + 12;
17079 } else {
17080 return hour >= 11 ? hour : hour + 12;
17081 }
17082 },
17083 meridiem: function (hour, minute, isLower) {
17084 var hm = hour * 100 + minute;
17085 if (hm < 600) {
17086 return 'يېرىم كېچە';
17087 } else if (hm < 900) {
17088 return 'سەھەر';
17089 } else if (hm < 1130) {
17090 return 'چۈشتىن بۇرۇن';
17091 } else if (hm < 1230) {
17092 return 'چۈش';
17093 } else if (hm < 1800) {
17094 return 'چۈشتىن كېيىن';
17095 } else {
17096 return 'كەچ';
17097 }
17098 },
17099 calendar: {
17100 sameDay: '[بۈگۈن سائەت] LT',
17101 nextDay: '[ئەتە سائەت] LT',
17102 nextWeek: '[كېلەركى] dddd [سائەت] LT',
17103 lastDay: '[تۆنۈگۈن] LT',
17104 lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
17105 sameElse: 'L',
17106 },
17107 relativeTime: {
17108 future: '%s كېيىن',
17109 past: '%s بۇرۇن',
17110 s: 'نەچچە سېكونت',
17111 ss: '%d سېكونت',
17112 m: 'بىر مىنۇت',
17113 mm: '%d مىنۇت',
17114 h: 'بىر سائەت',
17115 hh: '%d سائەت',
17116 d: 'بىر كۈن',
17117 dd: '%d كۈن',
17118 M: 'بىر ئاي',
17119 MM: '%d ئاي',
17120 y: 'بىر يىل',
17121 yy: '%d يىل',
17122 },
17123
17124 dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
17125 ordinal: function (number, period) {
17126 switch (period) {
17127 case 'd':
17128 case 'D':
17129 case 'DDD':
17130 return number + '-كۈنى';
17131 case 'w':
17132 case 'W':
17133 return number + '-ھەپتە';
17134 default:
17135 return number;
17136 }
17137 },
17138 preparse: function (string) {
17139 return string.replace(/،/g, ',');
17140 },
17141 postformat: function (string) {
17142 return string.replace(/,/g, '،');
17143 },
17144 week: {
17145 // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
17146 dow: 1, // Monday is the first day of the week.
17147 doy: 7, // The week that contains Jan 1st is the first week of the year.
17148 },
17149 });
17150
17151 //! moment.js locale configuration
17152
17153 function plural$6(word, num) {
17154 var forms = word.split('_');
17155 return num % 10 === 1 && num % 100 !== 11
17156 ? forms[0]
17157 : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)
17158 ? forms[1]
17159 : forms[2];
17160 }
17161 function relativeTimeWithPlural$4(number, withoutSuffix, key) {
17162 var format = {
17163 ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
17164 mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
17165 hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
17166 dd: 'день_дні_днів',
17167 MM: 'місяць_місяці_місяців',
17168 yy: 'рік_роки_років',
17169 };
17170 if (key === 'm') {
17171 return withoutSuffix ? 'хвилина' : 'хвилину';
17172 } else if (key === 'h') {
17173 return withoutSuffix ? 'година' : 'годину';
17174 } else {
17175 return number + ' ' + plural$6(format[key], +number);
17176 }
17177 }
17178 function weekdaysCaseReplace(m, format) {
17179 var weekdays = {
17180 nominative: 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(
17181 '_'
17182 ),
17183 accusative: 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(
17184 '_'
17185 ),
17186 genitive: 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(
17187 '_'
17188 ),
17189 },
17190 nounCase;
17191
17192 if (m === true) {
17193 return weekdays['nominative']
17194 .slice(1, 7)
17195 .concat(weekdays['nominative'].slice(0, 1));
17196 }
17197 if (!m) {
17198 return weekdays['nominative'];
17199 }
17200
17201 nounCase = /(\[[ВвУу]\]) ?dddd/.test(format)
17202 ? 'accusative'
17203 : /\[?(?:минулої|наступної)? ?\] ?dddd/.test(format)
17204 ? 'genitive'
17205 : 'nominative';
17206 return weekdays[nounCase][m.day()];
17207 }
17208 function processHoursFunction(str) {
17209 return function () {
17210 return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
17211 };
17212 }
17213
17214 hooks.defineLocale('uk', {
17215 months: {
17216 format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(
17217 '_'
17218 ),
17219 standalone: 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(
17220 '_'
17221 ),
17222 },
17223 monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(
17224 '_'
17225 ),
17226 weekdays: weekdaysCaseReplace,
17227 weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
17228 weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
17229 longDateFormat: {
17230 LT: 'HH:mm',
17231 LTS: 'HH:mm:ss',
17232 L: 'DD.MM.YYYY',
17233 LL: 'D MMMM YYYY р.',
17234 LLL: 'D MMMM YYYY р., HH:mm',
17235 LLLL: 'dddd, D MMMM YYYY р., HH:mm',
17236 },
17237 calendar: {
17238 sameDay: processHoursFunction('[Сьогодні '),
17239 nextDay: processHoursFunction('[Завтра '),
17240 lastDay: processHoursFunction('[Вчора '),
17241 nextWeek: processHoursFunction('[У] dddd ['),
17242 lastWeek: function () {
17243 switch (this.day()) {
17244 case 0:
17245 case 3:
17246 case 5:
17247 case 6:
17248 return processHoursFunction('[Минулої] dddd [').call(this);
17249 case 1:
17250 case 2:
17251 case 4:
17252 return processHoursFunction('[Минулого] dddd [').call(this);
17253 }
17254 },
17255 sameElse: 'L',
17256 },
17257 relativeTime: {
17258 future: 'за %s',
17259 past: '%s тому',
17260 s: 'декілька секунд',
17261 ss: relativeTimeWithPlural$4,
17262 m: relativeTimeWithPlural$4,
17263 mm: relativeTimeWithPlural$4,
17264 h: 'годину',
17265 hh: relativeTimeWithPlural$4,
17266 d: 'день',
17267 dd: relativeTimeWithPlural$4,
17268 M: 'місяць',
17269 MM: relativeTimeWithPlural$4,
17270 y: 'рік',
17271 yy: relativeTimeWithPlural$4,
17272 },
17273 // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
17274 meridiemParse: /ночі|ранку|дня|вечора/,
17275 isPM: function (input) {
17276 return /^(дня|вечора)$/.test(input);
17277 },
17278 meridiem: function (hour, minute, isLower) {
17279 if (hour < 4) {
17280 return 'ночі';
17281 } else if (hour < 12) {
17282 return 'ранку';
17283 } else if (hour < 17) {
17284 return 'дня';
17285 } else {
17286 return 'вечора';
17287 }
17288 },
17289 dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
17290 ordinal: function (number, period) {
17291 switch (period) {
17292 case 'M':
17293 case 'd':
17294 case 'DDD':
17295 case 'w':
17296 case 'W':
17297 return number + '-й';
17298 case 'D':
17299 return number + '-го';
17300 default:
17301 return number;
17302 }
17303 },
17304 week: {
17305 dow: 1, // Monday is the first day of the week.
17306 doy: 7, // The week that contains Jan 7th is the first week of the year.
17307 },
17308 });
17309
17310 //! moment.js locale configuration
17311
17312 var months$b = [
17313 'جنوری',
17314 'فروری',
17315 'مارچ',
17316 'اپریل',
17317 'مئی',
17318 'جون',
17319 'جولائی',
17320 'اگست',
17321 'ستمبر',
17322 'اکتوبر',
17323 'نومبر',
17324 'دسمبر',
17325 ],
17326 days$2 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];
17327
17328 hooks.defineLocale('ur', {
17329 months: months$b,
17330 monthsShort: months$b,
17331 weekdays: days$2,
17332 weekdaysShort: days$2,
17333 weekdaysMin: days$2,
17334 longDateFormat: {
17335 LT: 'HH:mm',
17336 LTS: 'HH:mm:ss',
17337 L: 'DD/MM/YYYY',
17338 LL: 'D MMMM YYYY',
17339 LLL: 'D MMMM YYYY HH:mm',
17340 LLLL: 'dddd، D MMMM YYYY HH:mm',
17341 },
17342 meridiemParse: /صبح|شام/,
17343 isPM: function (input) {
17344 return 'شام' === input;
17345 },
17346 meridiem: function (hour, minute, isLower) {
17347 if (hour < 12) {
17348 return 'صبح';
17349 }
17350 return 'شام';
17351 },
17352 calendar: {
17353 sameDay: '[آج بوقت] LT',
17354 nextDay: '[کل بوقت] LT',
17355 nextWeek: 'dddd [بوقت] LT',
17356 lastDay: '[گذشتہ روز بوقت] LT',
17357 lastWeek: '[گذشتہ] dddd [بوقت] LT',
17358 sameElse: 'L',
17359 },
17360 relativeTime: {
17361 future: '%s بعد',
17362 past: '%s قبل',
17363 s: 'چند سیکنڈ',
17364 ss: '%d سیکنڈ',
17365 m: 'ایک منٹ',
17366 mm: '%d منٹ',
17367 h: 'ایک گھنٹہ',
17368 hh: '%d گھنٹے',
17369 d: 'ایک دن',
17370 dd: '%d دن',
17371 M: 'ایک ماہ',
17372 MM: '%d ماہ',
17373 y: 'ایک سال',
17374 yy: '%d سال',
17375 },
17376 preparse: function (string) {
17377 return string.replace(/،/g, ',');
17378 },
17379 postformat: function (string) {
17380 return string.replace(/,/g, '،');
17381 },
17382 week: {
17383 dow: 1, // Monday is the first day of the week.
17384 doy: 4, // The week that contains Jan 4th is the first week of the year.
17385 },
17386 });
17387
17388 //! moment.js locale configuration
17389
17390 hooks.defineLocale('uz-latn', {
17391 months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(
17392 '_'
17393 ),
17394 monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
17395 weekdays: 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(
17396 '_'
17397 ),
17398 weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
17399 weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
17400 longDateFormat: {
17401 LT: 'HH:mm',
17402 LTS: 'HH:mm:ss',
17403 L: 'DD/MM/YYYY',
17404 LL: 'D MMMM YYYY',
17405 LLL: 'D MMMM YYYY HH:mm',
17406 LLLL: 'D MMMM YYYY, dddd HH:mm',
17407 },
17408 calendar: {
17409 sameDay: '[Bugun soat] LT [da]',
17410 nextDay: '[Ertaga] LT [da]',
17411 nextWeek: 'dddd [kuni soat] LT [da]',
17412 lastDay: '[Kecha soat] LT [da]',
17413 lastWeek: "[O'tgan] dddd [kuni soat] LT [da]",
17414 sameElse: 'L',
17415 },
17416 relativeTime: {
17417 future: 'Yaqin %s ichida',
17418 past: 'Bir necha %s oldin',
17419 s: 'soniya',
17420 ss: '%d soniya',
17421 m: 'bir daqiqa',
17422 mm: '%d daqiqa',
17423 h: 'bir soat',
17424 hh: '%d soat',
17425 d: 'bir kun',
17426 dd: '%d kun',
17427 M: 'bir oy',
17428 MM: '%d oy',
17429 y: 'bir yil',
17430 yy: '%d yil',
17431 },
17432 week: {
17433 dow: 1, // Monday is the first day of the week.
17434 doy: 7, // The week that contains Jan 7th is the first week of the year.
17435 },
17436 });
17437
17438 //! moment.js locale configuration
17439
17440 hooks.defineLocale('uz', {
17441 months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(
17442 '_'
17443 ),
17444 monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
17445 weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
17446 weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
17447 weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
17448 longDateFormat: {
17449 LT: 'HH:mm',
17450 LTS: 'HH:mm:ss',
17451 L: 'DD/MM/YYYY',
17452 LL: 'D MMMM YYYY',
17453 LLL: 'D MMMM YYYY HH:mm',
17454 LLLL: 'D MMMM YYYY, dddd HH:mm',
17455 },
17456 calendar: {
17457 sameDay: '[Бугун соат] LT [да]',
17458 nextDay: '[Эртага] LT [да]',
17459 nextWeek: 'dddd [куни соат] LT [да]',
17460 lastDay: '[Кеча соат] LT [да]',
17461 lastWeek: '[Утган] dddd [куни соат] LT [да]',
17462 sameElse: 'L',
17463 },
17464 relativeTime: {
17465 future: 'Якин %s ичида',
17466 past: 'Бир неча %s олдин',
17467 s: 'фурсат',
17468 ss: '%d фурсат',
17469 m: 'бир дакика',
17470 mm: '%d дакика',
17471 h: 'бир соат',
17472 hh: '%d соат',
17473 d: 'бир кун',
17474 dd: '%d кун',
17475 M: 'бир ой',
17476 MM: '%d ой',
17477 y: 'бир йил',
17478 yy: '%d йил',
17479 },
17480 week: {
17481 dow: 1, // Monday is the first day of the week.
17482 doy: 7, // The week that contains Jan 4th is the first week of the year.
17483 },
17484 });
17485
17486 //! moment.js locale configuration
17487
17488 hooks.defineLocale('vi', {
17489 months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(
17490 '_'
17491 ),
17492 monthsShort: 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(
17493 '_'
17494 ),
17495 monthsParseExact: true,
17496 weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(
17497 '_'
17498 ),
17499 weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
17500 weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
17501 weekdaysParseExact: true,
17502 meridiemParse: /sa|ch/i,
17503 isPM: function (input) {
17504 return /^ch$/i.test(input);
17505 },
17506 meridiem: function (hours, minutes, isLower) {
17507 if (hours < 12) {
17508 return isLower ? 'sa' : 'SA';
17509 } else {
17510 return isLower ? 'ch' : 'CH';
17511 }
17512 },
17513 longDateFormat: {
17514 LT: 'HH:mm',
17515 LTS: 'HH:mm:ss',
17516 L: 'DD/MM/YYYY',
17517 LL: 'D MMMM [năm] YYYY',
17518 LLL: 'D MMMM [năm] YYYY HH:mm',
17519 LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',
17520 l: 'DD/M/YYYY',
17521 ll: 'D MMM YYYY',
17522 lll: 'D MMM YYYY HH:mm',
17523 llll: 'ddd, D MMM YYYY HH:mm',
17524 },
17525 calendar: {
17526 sameDay: '[Hôm nay lúc] LT',
17527 nextDay: '[Ngày mai lúc] LT',
17528 nextWeek: 'dddd [tuần tới lúc] LT',
17529 lastDay: '[Hôm qua lúc] LT',
17530 lastWeek: 'dddd [tuần trước lúc] LT',
17531 sameElse: 'L',
17532 },
17533 relativeTime: {
17534 future: '%s tới',
17535 past: '%s trước',
17536 s: 'vài giây',
17537 ss: '%d giây',
17538 m: 'một phút',
17539 mm: '%d phút',
17540 h: 'một giờ',
17541 hh: '%d giờ',
17542 d: 'một ngày',
17543 dd: '%d ngày',
17544 w: 'một tuần',
17545 ww: '%d tuần',
17546 M: 'một tháng',
17547 MM: '%d tháng',
17548 y: 'một năm',
17549 yy: '%d năm',
17550 },
17551 dayOfMonthOrdinalParse: /\d{1,2}/,
17552 ordinal: function (number) {
17553 return number;
17554 },
17555 week: {
17556 dow: 1, // Monday is the first day of the week.
17557 doy: 4, // The week that contains Jan 4th is the first week of the year.
17558 },
17559 });
17560
17561 //! moment.js locale configuration
17562
17563 hooks.defineLocale('x-pseudo', {
17564 months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(
17565 '_'
17566 ),
17567 monthsShort: 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(
17568 '_'
17569 ),
17570 monthsParseExact: true,
17571 weekdays: 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(
17572 '_'
17573 ),
17574 weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
17575 weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
17576 weekdaysParseExact: true,
17577 longDateFormat: {
17578 LT: 'HH:mm',
17579 L: 'DD/MM/YYYY',
17580 LL: 'D MMMM YYYY',
17581 LLL: 'D MMMM YYYY HH:mm',
17582 LLLL: 'dddd, D MMMM YYYY HH:mm',
17583 },
17584 calendar: {
17585 sameDay: '[T~ódá~ý át] LT',
17586 nextDay: '[T~ómó~rró~w át] LT',
17587 nextWeek: 'dddd [át] LT',
17588 lastDay: '[Ý~ést~érdá~ý át] LT',
17589 lastWeek: '[L~ást] dddd [át] LT',
17590 sameElse: 'L',
17591 },
17592 relativeTime: {
17593 future: 'í~ñ %s',
17594 past: '%s á~gó',
17595 s: 'á ~féw ~sécó~ñds',
17596 ss: '%d s~écóñ~ds',
17597 m: 'á ~míñ~úté',
17598 mm: '%d m~íñú~tés',
17599 h: 'á~ñ hó~úr',
17600 hh: '%d h~óúrs',
17601 d: 'á ~dáý',
17602 dd: '%d d~áýs',
17603 M: 'á ~móñ~th',
17604 MM: '%d m~óñt~hs',
17605 y: 'á ~ýéár',
17606 yy: '%d ý~éárs',
17607 },
17608 dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
17609 ordinal: function (number) {
17610 var b = number % 10,
17611 output =
17612 ~~((number % 100) / 10) === 1
17613 ? 'th'
17614 : b === 1
17615 ? 'st'
17616 : b === 2
17617 ? 'nd'
17618 : b === 3
17619 ? 'rd'
17620 : 'th';
17621 return number + output;
17622 },
17623 week: {
17624 dow: 1, // Monday is the first day of the week.
17625 doy: 4, // The week that contains Jan 4th is the first week of the year.
17626 },
17627 });
17628
17629 //! moment.js locale configuration
17630
17631 hooks.defineLocale('yo', {
17632 months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(
17633 '_'
17634 ),
17635 monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
17636 weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
17637 weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
17638 weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
17639 longDateFormat: {
17640 LT: 'h:mm A',
17641 LTS: 'h:mm:ss A',
17642 L: 'DD/MM/YYYY',
17643 LL: 'D MMMM YYYY',
17644 LLL: 'D MMMM YYYY h:mm A',
17645 LLLL: 'dddd, D MMMM YYYY h:mm A',
17646 },
17647 calendar: {
17648 sameDay: '[Ònì ni] LT',
17649 nextDay: '[Ọ̀la ni] LT',
17650 nextWeek: "dddd [Ọsẹ̀ tón'bọ] [ni] LT",
17651 lastDay: '[Àna ni] LT',
17652 lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
17653 sameElse: 'L',
17654 },
17655 relativeTime: {
17656 future: 'ní %s',
17657 past: '%s kọjá',
17658 s: 'ìsẹjú aayá die',
17659 ss: 'aayá %d',
17660 m: 'ìsẹjú kan',
17661 mm: 'ìsẹjú %d',
17662 h: 'wákati kan',
17663 hh: 'wákati %d',
17664 d: 'ọjọ́ kan',
17665 dd: 'ọjọ́ %d',
17666 M: 'osù kan',
17667 MM: 'osù %d',
17668 y: 'ọdún kan',
17669 yy: 'ọdún %d',
17670 },
17671 dayOfMonthOrdinalParse: /ọjọ́\s\d{1,2}/,
17672 ordinal: 'ọjọ́ %d',
17673 week: {
17674 dow: 1, // Monday is the first day of the week.
17675 doy: 4, // The week that contains Jan 4th is the first week of the year.
17676 },
17677 });
17678
17679 //! moment.js locale configuration
17680
17681 hooks.defineLocale('zh-cn', {
17682 months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
17683 '_'
17684 ),
17685 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
17686 '_'
17687 ),
17688 weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
17689 weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
17690 weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
17691 longDateFormat: {
17692 LT: 'HH:mm',
17693 LTS: 'HH:mm:ss',
17694 L: 'YYYY/MM/DD',
17695 LL: 'YYYY年M月D日',
17696 LLL: 'YYYY年M月D日Ah点mm分',
17697 LLLL: 'YYYY年M月D日ddddAh点mm分',
17698 l: 'YYYY/M/D',
17699 ll: 'YYYY年M月D日',
17700 lll: 'YYYY年M月D日 HH:mm',
17701 llll: 'YYYY年M月D日dddd HH:mm',
17702 },
17703 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
17704 meridiemHour: function (hour, meridiem) {
17705 if (hour === 12) {
17706 hour = 0;
17707 }
17708 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
17709 return hour;
17710 } else if (meridiem === '下午' || meridiem === '晚上') {
17711 return hour + 12;
17712 } else {
17713 // '中午'
17714 return hour >= 11 ? hour : hour + 12;
17715 }
17716 },
17717 meridiem: function (hour, minute, isLower) {
17718 var hm = hour * 100 + minute;
17719 if (hm < 600) {
17720 return '凌晨';
17721 } else if (hm < 900) {
17722 return '早上';
17723 } else if (hm < 1130) {
17724 return '上午';
17725 } else if (hm < 1230) {
17726 return '中午';
17727 } else if (hm < 1800) {
17728 return '下午';
17729 } else {
17730 return '晚上';
17731 }
17732 },
17733 calendar: {
17734 sameDay: '[今天]LT',
17735 nextDay: '[明天]LT',
17736 nextWeek: function (now) {
17737 if (now.week() !== this.week()) {
17738 return '[下]dddLT';
17739 } else {
17740 return '[本]dddLT';
17741 }
17742 },
17743 lastDay: '[昨天]LT',
17744 lastWeek: function (now) {
17745 if (this.week() !== now.week()) {
17746 return '[上]dddLT';
17747 } else {
17748 return '[本]dddLT';
17749 }
17750 },
17751 sameElse: 'L',
17752 },
17753 dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
17754 ordinal: function (number, period) {
17755 switch (period) {
17756 case 'd':
17757 case 'D':
17758 case 'DDD':
17759 return number + '日';
17760 case 'M':
17761 return number + '月';
17762 case 'w':
17763 case 'W':
17764 return number + '周';
17765 default:
17766 return number;
17767 }
17768 },
17769 relativeTime: {
17770 future: '%s后',
17771 past: '%s前',
17772 s: '几秒',
17773 ss: '%d 秒',
17774 m: '1 分钟',
17775 mm: '%d 分钟',
17776 h: '1 小时',
17777 hh: '%d 小时',
17778 d: '1 天',
17779 dd: '%d 天',
17780 w: '1 周',
17781 ww: '%d 周',
17782 M: '1 个月',
17783 MM: '%d 个月',
17784 y: '1 年',
17785 yy: '%d 年',
17786 },
17787 week: {
17788 // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
17789 dow: 1, // Monday is the first day of the week.
17790 doy: 4, // The week that contains Jan 4th is the first week of the year.
17791 },
17792 });
17793
17794 //! moment.js locale configuration
17795
17796 hooks.defineLocale('zh-hk', {
17797 months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
17798 '_'
17799 ),
17800 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
17801 '_'
17802 ),
17803 weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
17804 weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
17805 weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
17806 longDateFormat: {
17807 LT: 'HH:mm',
17808 LTS: 'HH:mm:ss',
17809 L: 'YYYY/MM/DD',
17810 LL: 'YYYY年M月D日',
17811 LLL: 'YYYY年M月D日 HH:mm',
17812 LLLL: 'YYYY年M月D日dddd HH:mm',
17813 l: 'YYYY/M/D',
17814 ll: 'YYYY年M月D日',
17815 lll: 'YYYY年M月D日 HH:mm',
17816 llll: 'YYYY年M月D日dddd HH:mm',
17817 },
17818 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
17819 meridiemHour: function (hour, meridiem) {
17820 if (hour === 12) {
17821 hour = 0;
17822 }
17823 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
17824 return hour;
17825 } else if (meridiem === '中午') {
17826 return hour >= 11 ? hour : hour + 12;
17827 } else if (meridiem === '下午' || meridiem === '晚上') {
17828 return hour + 12;
17829 }
17830 },
17831 meridiem: function (hour, minute, isLower) {
17832 var hm = hour * 100 + minute;
17833 if (hm < 600) {
17834 return '凌晨';
17835 } else if (hm < 900) {
17836 return '早上';
17837 } else if (hm < 1200) {
17838 return '上午';
17839 } else if (hm === 1200) {
17840 return '中午';
17841 } else if (hm < 1800) {
17842 return '下午';
17843 } else {
17844 return '晚上';
17845 }
17846 },
17847 calendar: {
17848 sameDay: '[今天]LT',
17849 nextDay: '[明天]LT',
17850 nextWeek: '[下]ddddLT',
17851 lastDay: '[昨天]LT',
17852 lastWeek: '[上]ddddLT',
17853 sameElse: 'L',
17854 },
17855 dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
17856 ordinal: function (number, period) {
17857 switch (period) {
17858 case 'd':
17859 case 'D':
17860 case 'DDD':
17861 return number + '日';
17862 case 'M':
17863 return number + '月';
17864 case 'w':
17865 case 'W':
17866 return number + '週';
17867 default:
17868 return number;
17869 }
17870 },
17871 relativeTime: {
17872 future: '%s後',
17873 past: '%s前',
17874 s: '幾秒',
17875 ss: '%d 秒',
17876 m: '1 分鐘',
17877 mm: '%d 分鐘',
17878 h: '1 小時',
17879 hh: '%d 小時',
17880 d: '1 天',
17881 dd: '%d 天',
17882 M: '1 個月',
17883 MM: '%d 個月',
17884 y: '1 年',
17885 yy: '%d 年',
17886 },
17887 });
17888
17889 //! moment.js locale configuration
17890
17891 hooks.defineLocale('zh-mo', {
17892 months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
17893 '_'
17894 ),
17895 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
17896 '_'
17897 ),
17898 weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
17899 weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
17900 weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
17901 longDateFormat: {
17902 LT: 'HH:mm',
17903 LTS: 'HH:mm:ss',
17904 L: 'DD/MM/YYYY',
17905 LL: 'YYYY年M月D日',
17906 LLL: 'YYYY年M月D日 HH:mm',
17907 LLLL: 'YYYY年M月D日dddd HH:mm',
17908 l: 'D/M/YYYY',
17909 ll: 'YYYY年M月D日',
17910 lll: 'YYYY年M月D日 HH:mm',
17911 llll: 'YYYY年M月D日dddd HH:mm',
17912 },
17913 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
17914 meridiemHour: function (hour, meridiem) {
17915 if (hour === 12) {
17916 hour = 0;
17917 }
17918 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
17919 return hour;
17920 } else if (meridiem === '中午') {
17921 return hour >= 11 ? hour : hour + 12;
17922 } else if (meridiem === '下午' || meridiem === '晚上') {
17923 return hour + 12;
17924 }
17925 },
17926 meridiem: function (hour, minute, isLower) {
17927 var hm = hour * 100 + minute;
17928 if (hm < 600) {
17929 return '凌晨';
17930 } else if (hm < 900) {
17931 return '早上';
17932 } else if (hm < 1130) {
17933 return '上午';
17934 } else if (hm < 1230) {
17935 return '中午';
17936 } else if (hm < 1800) {
17937 return '下午';
17938 } else {
17939 return '晚上';
17940 }
17941 },
17942 calendar: {
17943 sameDay: '[今天] LT',
17944 nextDay: '[明天] LT',
17945 nextWeek: '[下]dddd LT',
17946 lastDay: '[昨天] LT',
17947 lastWeek: '[上]dddd LT',
17948 sameElse: 'L',
17949 },
17950 dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
17951 ordinal: function (number, period) {
17952 switch (period) {
17953 case 'd':
17954 case 'D':
17955 case 'DDD':
17956 return number + '日';
17957 case 'M':
17958 return number + '月';
17959 case 'w':
17960 case 'W':
17961 return number + '週';
17962 default:
17963 return number;
17964 }
17965 },
17966 relativeTime: {
17967 future: '%s內',
17968 past: '%s前',
17969 s: '幾秒',
17970 ss: '%d 秒',
17971 m: '1 分鐘',
17972 mm: '%d 分鐘',
17973 h: '1 小時',
17974 hh: '%d 小時',
17975 d: '1 天',
17976 dd: '%d 天',
17977 M: '1 個月',
17978 MM: '%d 個月',
17979 y: '1 年',
17980 yy: '%d 年',
17981 },
17982 });
17983
17984 //! moment.js locale configuration
17985
17986 hooks.defineLocale('zh-tw', {
17987 months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(
17988 '_'
17989 ),
17990 monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(
17991 '_'
17992 ),
17993 weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
17994 weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),
17995 weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
17996 longDateFormat: {
17997 LT: 'HH:mm',
17998 LTS: 'HH:mm:ss',
17999 L: 'YYYY/MM/DD',
18000 LL: 'YYYY年M月D日',
18001 LLL: 'YYYY年M月D日 HH:mm',
18002 LLLL: 'YYYY年M月D日dddd HH:mm',
18003 l: 'YYYY/M/D',
18004 ll: 'YYYY年M月D日',
18005 lll: 'YYYY年M月D日 HH:mm',
18006 llll: 'YYYY年M月D日dddd HH:mm',
18007 },
18008 meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
18009 meridiemHour: function (hour, meridiem) {
18010 if (hour === 12) {
18011 hour = 0;
18012 }
18013 if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
18014 return hour;
18015 } else if (meridiem === '中午') {
18016 return hour >= 11 ? hour : hour + 12;
18017 } else if (meridiem === '下午' || meridiem === '晚上') {
18018 return hour + 12;
18019 }
18020 },
18021 meridiem: function (hour, minute, isLower) {
18022 var hm = hour * 100 + minute;
18023 if (hm < 600) {
18024 return '凌晨';
18025 } else if (hm < 900) {
18026 return '早上';
18027 } else if (hm < 1130) {
18028 return '上午';
18029 } else if (hm < 1230) {
18030 return '中午';
18031 } else if (hm < 1800) {
18032 return '下午';
18033 } else {
18034 return '晚上';
18035 }
18036 },
18037 calendar: {
18038 sameDay: '[今天] LT',
18039 nextDay: '[明天] LT',
18040 nextWeek: '[下]dddd LT',
18041 lastDay: '[昨天] LT',
18042 lastWeek: '[上]dddd LT',
18043 sameElse: 'L',
18044 },
18045 dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
18046 ordinal: function (number, period) {
18047 switch (period) {
18048 case 'd':
18049 case 'D':
18050 case 'DDD':
18051 return number + '日';
18052 case 'M':
18053 return number + '月';
18054 case 'w':
18055 case 'W':
18056 return number + '週';
18057 default:
18058 return number;
18059 }
18060 },
18061 relativeTime: {
18062 future: '%s後',
18063 past: '%s前',
18064 s: '幾秒',
18065 ss: '%d 秒',
18066 m: '1 分鐘',
18067 mm: '%d 分鐘',
18068 h: '1 小時',
18069 hh: '%d 小時',
18070 d: '1 天',
18071 dd: '%d 天',
18072 M: '1 個月',
18073 MM: '%d 個月',
18074 y: '1 年',
18075 yy: '%d 年',
18076 },
18077 });
18078
18079 hooks.locale('en');
18080
18081 return hooks;
18082
18083})));