PageSourceSearch

https://www.scientology-padova.org/plugins/moment/moment-with-locales.js?_=

js scientology-padova.org collected 2026-10-07 16:53:25 UTC 541,491 bytes, 14,769 lines download raw bytes

1// MANUALY FIXED as we use NO For Norwegian not NN Nynors
2
3;(function (global, factory) {
4    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
5    typeof define === 'function' && define.amd ? define(factory) :
6    global.moment = factory()
vendor: 56,293 bytes, lines 6-1766
6
7}(this, (function () { 'use strict';
8
9    var hookCallback;
10
11    function hooks () {
12        return hookCallback.apply(null, arguments);
13    }
14
15    // This is done to register the method called with moment()
16    // without creating circular dependencies.
17    function setHookCallback (callback) {
18        hookCallback = callback;
19    }
20
21    function isArray(input) {
22        return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
23    }
24
25    function isObject(input) {
26        // IE8 will treat undefined and null as object if it wasn't for
27        // input != null
28        return input != null && Object.prototype.toString.call(input) === '[object Object]';
29    }
30
31    function isObjectEmpty(obj) {
32        if (Object.getOwnPropertyNames) {
33            return (Object.getOwnPropertyNames(obj).length === 0);
34        } else {
35            var k;
36            for (k in obj) {
37                if (obj.hasOwnProperty(k)) {
38                    return false;
39                }
40            }
41            return true;
42        }
43    }
44
45    function isUndefined(input) {
46        return input === void 0;
47    }
48
49    function isNumber(input) {
50        return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
51    }
52
53    function isDate(input) {
54        return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
55    }
56
57    function map(arr, fn) {
58        var res = [], i;
59        for (i = 0; i < arr.length; ++i) {
60            res.push(fn(arr[i], i));
61        }
62        return res;
63    }
64
65    function hasOwnProp(a, b) {
66        return Object.prototype.hasOwnProperty.call(a, b);
67    }
68
69    function extend(a, b) {
70        for (var i in b) {
71            if (hasOwnProp(b, i)) {
72                a[i] = b[i];
73            }
74        }
75
76        if (hasOwnProp(b, 'toString')) {
77            a.toString = b.toString;
78        }
79
80        if (hasOwnProp(b, 'valueOf')) {
81            a.valueOf = b.valueOf;
82        }
83
84        return a;
85    }
86
87    function createUTC (input, format, locale, strict) {
88        return createLocalOrUTC(input, format, locale, strict, true).utc();
89    }
90
91    function defaultParsingFlags() {
92        // We need to deep clone this object.
93        return {
94            empty           : false,
95            unusedTokens    : [],
96            unusedInput     : [],
97            overflow        : -2,
98            charsLeftOver   : 0,
99            nullInput       : false,
100            invalidMonth    : null,
101            invalidFormat   : false,
102            userInvalidated : false,
103            iso             : false,
104            parsedDateParts : [],
105            meridiem        : null,
106            rfc2822         : false,
107            weekdayMismatch : false
108        };
109    }
110
111    function getParsingFlags(m) {
112        if (m._pf == null) {
113            m._pf = defaultParsingFlags();
114        }
115        return m._pf;
116    }
117
118    var some;
119    if (Array.prototype.some) {
120        some = Array.prototype.some;
121    } else {
122        some = function (fun) {
123            var t = Object(this);
124            var len = t.length >>> 0;
125
126            for (var i = 0; i < len; i++) {
127                if (i in t && fun.call(this, t[i], i, t)) {
128                    return true;
129                }
130            }
131
132            return false;
133        };
134    }
135
136    function isValid(m) {
137        if (m._isValid == null) {
138            var flags = getParsingFlags(m);
139            var parsedParts = some.call(flags.parsedDateParts, function (i) {
140                return i != null;
141            });
142            var isNowValid = !isNaN(m._d.getTime()) &&
143                flags.overflow < 0 &&
144                !flags.empty &&
145                !flags.invalidMonth &&
146                !flags.invalidWeekday &&
147                !flags.weekdayMismatch &&
148                !flags.nullInput &&
149                !flags.invalidFormat &&
150                !flags.userInvalidated &&
151                (!flags.meridiem || (flags.meridiem && parsedParts));
152
153            if (m._strict) {
154                isNowValid = isNowValid &&
155                    flags.charsLeftOver === 0 &&
156                    flags.unusedTokens.length === 0 &&
157                    flags.bigHour === undefined;
158            }
159
160            if (Object.isFrozen == null || !Object.isFrozen(m)) {
161                m._isValid = isNowValid;
162            }
163            else {
164                return isNowValid;
165            }
166        }
167        return m._isValid;
168    }
169
170    function createInvalid (flags) {
171        var m = createUTC(NaN);
172        if (flags != null) {
173            extend(getParsingFlags(m), flags);
174        }
175        else {
176            getParsingFlags(m).userInvalidated = true;
177        }
178
179        return m;
180    }
181
182    // Plugins that add properties should also add the key here (null value),
183    // so we can properly clone ourselves.
184    var momentProperties = hooks.momentProperties = [];
185
186    function copyConfig(to, from) {
187        var i, prop, val;
188
189        if (!isUndefined(from._isAMomentObject)) {
190            to._isAMomentObject = from._isAMomentObject;
191        }
192        if (!isUndefined(from._i)) {
193            to._i = from._i;
194        }
195        if (!isUndefined(from._f)) {
196            to._f = from._f;
197        }
198        if (!isUndefined(from._l)) {
199            to._l = from._l;
200        }
201        if (!isUndefined(from._strict)) {
202            to._strict = from._strict;
203        }
204        if (!isUndefined(from._tzm)) {
205            to._tzm = from._tzm;
206        }
207        if (!isUndefined(from._isUTC)) {
208            to._isUTC = from._isUTC;
209        }
210        if (!isUndefined(from._offset)) {
211            to._offset = from._offset;
212        }
213        if (!isUndefined(from._pf)) {
214            to._pf = getParsingFlags(from);
215        }
216        if (!isUndefined(from._locale)) {
217            to._locale = from._locale;
218        }
219
220        if (momentProperties.length > 0) {
221            for (i = 0; i < momentProperties.length; i++) {
222                prop = momentProperties[i];
223                val = from[prop];
224                if (!isUndefined(val)) {
225                    to[prop] = val;
226                }
227            }
228        }
229
230        return to;
231    }
232
233    var updateInProgress = false;
234
235    // Moment prototype object
236    function Moment(config) {
237        copyConfig(this, config);
238        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
239        if (!this.isValid()) {
240            this._d = new Date(NaN);
241        }
242        // Prevent infinite loop in case updateOffset creates new moment
243        // objects.
244        if (updateInProgress === false) {
245            updateInProgress = true;
246            hooks.updateOffset(this);
247            updateInProgress = false;
248        }
249    }
250
251    function isMoment (obj) {
252        return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
253    }
254
255    function absFloor (number) {
256        if (number < 0) {
257            // -0 -> 0
258            return Math.ceil(number) || 0;
259        } else {
260            return Math.floor(number);
261        }
262    }
263
264    function toInt(argumentForCoercion) {
265        var coercedNumber = +argumentForCoercion,
266            value = 0;
267
268        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
269            value = absFloor(coercedNumber);
270        }
271
272        return value;
273    }
274
275    // compare two arrays, return the number of differences
276    function compareArrays(array1, array2, dontConvert) {
277        var len = Math.min(array1.length, array2.length),
278            lengthDiff = Math.abs(array1.length - array2.length),
279            diffs = 0,
280            i;
281        for (i = 0; i < len; i++) {
282            if ((dontConvert && array1[i] !== array2[i]) ||
283                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
284                diffs++;
285            }
286        }
287        return diffs + lengthDiff;
288    }
289
290    function warn(msg) {
291        if (hooks.suppressDeprecationWarnings === false &&
292                (typeof console !==  'undefined') && console.warn) {
293            console.warn('Deprecation warning: ' + msg);
294        }
295    }
296
297    function deprecate(msg, fn) {
298        var firstTime = true;
299
300        return extend(function () {
301            if (hooks.deprecationHandler != null) {
302                hooks.deprecationHandler(null, msg);
303            }
304            if (firstTime) {
305                var args = [];
306                var arg;
307                for (var i = 0; i < arguments.length; i++) {
308                    arg = '';
309                    if (typeof arguments[i] === 'object') {
310                        arg += '\n[' + i + '] ';
311                        for (var key in arguments[0]) {
312                            arg += key + ': ' + arguments[0][key] + ', ';
313                        }
314                        arg = arg.slice(0, -2); // Remove trailing comma and space
315                    } else {
316                        arg = arguments[i];
317                    }
318                    args.push(arg);
319                }
320                warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack);
321                firstTime = false;
322            }
323            return fn.apply(this, arguments);
324        }, fn);
325    }
326
327    var deprecations = {};
328
329    function deprecateSimple(name, msg) {
330        if (hooks.deprecationHandler != null) {
331            hooks.deprecationHandler(name, msg);
332        }
333        if (!deprecations[name]) {
334            warn(msg);
335            deprecations[name] = true;
336        }
337    }
338
339    hooks.suppressDeprecationWarnings = false;
340    hooks.deprecationHandler = null;
341
342    function isFunction(input) {
343        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
344    }
345
346    function set (config) {
347        var prop, i;
348        for (i in config) {
349            prop = config[i];
350            if (isFunction(prop)) {
351                this[i] = prop;
352            } else {
353                this['_' + i] = prop;
354            }
355        }
356        this._config = config;
357        // Lenient ordinal parsing accepts just a number in addition to
358        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
359        // TODO: Remove "ordinalParse" fallback in next major release.
360        this._dayOfMonthOrdinalParseLenient = new RegExp(
361            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
362                '|' + (/\d{1,2}/).source);
363    }
364
365    function mergeConfigs(parentConfig, childConfig) {
366        var res = extend({}, parentConfig), prop;
367        for (prop in childConfig) {
368            if (hasOwnProp(childConfig, prop)) {
369                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
370                    res[prop] = {};
371                    extend(res[prop], parentConfig[prop]);
372                    extend(res[prop], childConfig[prop]);
373                } else if (childConfig[prop] != null) {
374                    res[prop] = childConfig[prop];
375                } else {
376                    delete res[prop];
377                }
378            }
379        }
380        for (prop in parentConfig) {
381            if (hasOwnProp(parentConfig, prop) &&
382                    !hasOwnProp(childConfig, prop) &&
383                    isObject(parentConfig[prop])) {
384                // make sure changes to properties don't modify parent config
385                res[prop] = extend({}, res[prop]);
386            }
387        }
388        return res;
389    }
390
391    function Locale(config) {
392        if (config != null) {
393            this.set(config);
394        }
395    }
396
397    var keys;
398
399    if (Object.keys) {
400        keys = Object.keys;
401    } else {
402        keys = function (obj) {
403            var i, res = [];
404            for (i in obj) {
405                if (hasOwnProp(obj, i)) {
406                    res.push(i);
407                }
408            }
409            return res;
410        };
411    }
412
413    var defaultCalendar = {
414        sameDay : '[Today at] LT',
415        nextDay : '[Tomorrow at] LT',
416        nextWeek : 'dddd [at] LT',
417        lastDay : '[Yesterday at] LT',
418        lastWeek : '[Last] dddd [at] LT',
419        sameElse : 'L'
420    };
421
422    function calendar (key, mom, now) {
423        var output = this._calendar[key] || this._calendar['sameElse'];
424        return isFunction(output) ? output.call(mom, now) : output;
425    }
426
427    var defaultLongDateFormat = {
428        LTS  : 'h:mm:ss A',
429        LT   : 'h:mm A',
430        L    : 'MM/DD/YYYY',
431        LL   : 'MMMM D, YYYY',
432        LLL  : 'MMMM D, YYYY h:mm A',
433        LLLL : 'dddd, MMMM D, YYYY h:mm A'
434    };
435
436    function longDateFormat (key) {
437        var format = this._longDateFormat[key],
438            formatUpper = this._longDateFormat[key.toUpperCase()];
439
440        if (format || !formatUpper) {
441            return format;
442        }
443
444        this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
445            return val.slice(1);
446        });
447
448        return this._longDateFormat[key];
449    }
450
451    var defaultInvalidDate = 'Invalid date';
452
453    function invalidDate () {
454        return this._invalidDate;
455    }
456
457    var defaultOrdinal = '%d';
458    var defaultDayOfMonthOrdinalParse = /\d{1,2}/;
459
460    function ordinal (number) {
461        return this._ordinal.replace('%d', number);
462    }
463
464    var defaultRelativeTime = {
465        future : 'in %s',
466        past   : '%s ago',
467        s  : 'a few seconds',
468        ss : '%d seconds',
469        m  : 'a minute',
470        mm : '%d minutes',
471        h  : 'an hour',
472        hh : '%d hours',
473        d  : 'a day',
474        dd : '%d days',
475        M  : 'a month',
476        MM : '%d months',
477        y  : 'a year',
478        yy : '%d years'
479    };
480
481    function relativeTime (number, withoutSuffix, string, isFuture) {
482        var output = this._relativeTime[string];
483        return (isFunction(output)) ?
484            output(number, withoutSuffix, string, isFuture) :
485            output.replace(/%d/i, number);
486    }
487
488    function pastFuture (diff, output) {
489        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
490        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
491    }
492
493    var aliases = {};
494
495    function addUnitAlias (unit, shorthand) {
496        var lowerCase = unit.toLowerCase();
497        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
498    }
499
500    function normalizeUnits(units) {
501        return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
502    }
503
504    function normalizeObjectUnits(inputObject) {
505        var normalizedInput = {},
506            normalizedProp,
507            prop;
508
509        for (prop in inputObject) {
510            if (hasOwnProp(inputObject, prop)) {
511                normalizedProp = normalizeUnits(prop);
512                if (normalizedProp) {
513                    normalizedInput[normalizedProp] = inputObject[prop];
514                }
515            }
516        }
517
518        return normalizedInput;
519    }
520
521    var priorities = {};
522
523    function addUnitPriority(unit, priority) {
524        priorities[unit] = priority;
525    }
526
527    function getPrioritizedUnits(unitsObj) {
528        var units = [];
529        for (var u in unitsObj) {
530            units.push({unit: u, priority: priorities[u]});
531        }
532        units.sort(function (a, b) {
533            return a.priority - b.priority;
534        });
535        return units;
536    }
537
538    function zeroFill(number, targetLength, forceSign) {
539        var absNumber = '' + Math.abs(number),
540            zerosToFill = targetLength - absNumber.length,
541            sign = number >= 0;
542        return (sign ? (forceSign ? '+' : '') : '-') +
543            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
544    }
545
546    var formattingTokens = /(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g;
547
548    var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
549
550    var formatFunctions = {};
551
552    var formatTokenFunctions = {};
553
554    // token:    'M'
555    // padded:   ['MM', 2]
556    // ordinal:  'Mo'
557    // callback: function () { this.month() + 1 }
558    function addFormatToken (token, padded, ordinal, callback) {
559        var func = callback;
560        if (typeof callback === 'string') {
561            func = function () {
562                return this[callback]();
563            };
564        }
565        if (token) {
566            formatTokenFunctions[token] = func;
567        }
568        if (padded) {
569            formatTokenFunctions[padded[0]] = function () {
570                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
571            };
572        }
573        if (ordinal) {
574            formatTokenFunctions[ordinal] = function () {
575                return this.localeData().ordinal(func.apply(this, arguments), token);
576            };
577        }
578    }
579
580    function removeFormattingTokens(input) {
581        if (input.match(/\[[\s\S]/)) {
582            return input.replace(/^\[|\]$/g, '');
583        }
584        return input.replace(/\\/g, '');
585    }
586
587    function makeFormatFunction(format) {
588        var array = format.match(formattingTokens), i, length;
589
590        for (i = 0, length = array.length; i < length; i++) {
591            if (formatTokenFunctions[array[i]]) {
592                array[i] = formatTokenFunctions[array[i]];
593            } else {
594                array[i] = removeFormattingTokens(array[i]);
595            }
596        }
597
598        return function (mom) {
599            var output = '', i;
600            for (i = 0; i < length; i++) {
601                output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];
602            }
603            return output;
604        };
605    }
606
607    // format date using native date object
608    function formatMoment(m, format) {
609        if (!m.isValid()) {
610            return m.localeData().invalidDate();
611        }
612
613        format = expandFormat(format, m.localeData());
614        formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
615
616        return formatFunctions[format](m);
617    }
618
619    function expandFormat(format, locale) {
620        var i = 5;
621
622        function replaceLongDateFormatTokens(input) {
623            return locale.longDateFormat(input) || input;
624        }
625
626        localFormattingTokens.lastIndex = 0;
627        while (i >= 0 && localFormattingTokens.test(format)) {
628            format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
629            localFormattingTokens.lastIndex = 0;
630            i -= 1;
631        }
632
633        return format;
634    }
635
636    var match1         = /\d/;            //       0 - 9
637    var match2         = /\d\d/;          //      00 - 99
638    var match3         = /\d{3}/;         //     000 - 999
639    var match4         = /\d{4}/;         //    0000 - 9999
640    var match6         = /[+-]?\d{6}/;    // -999999 - 999999
641    var match1to2      = /\d\d?/;         //       0 - 99
642    var match3to4      = /\d\d\d\d?/;     //     999 - 9999
643    var match5to6      = /\d\d\d\d\d\d?/; //   99999 - 999999
644    var match1to3      = /\d{1,3}/;       //       0 - 999
645    var match1to4      = /\d{1,4}/;       //       0 - 9999
646    var match1to6      = /[+-]?\d{1,6}/;  // -999999 - 999999
647
648    var matchUnsigned  = /\d+/;           //       0 - inf
649    var matchSigned    = /[+-]?\d+/;      //    -inf - inf
650
651    var matchOffset    = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
652    var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
653
654    var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
655
656    // any word (or two) characters or numbers including two/three word month in arabic.
657    // includes scottish gaelic two word and hyphenated months
658    var 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;
659
660    var regexes = {};
661
662    function addRegexToken (token, regex, strictRegex) {
663        regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
664            return (isStrict && strictRegex) ? strictRegex : regex;
665        };
666    }
667
668    function getParseRegexForToken (token, config) {
669        if (!hasOwnProp(regexes, token)) {
670            return new RegExp(unescapeFormat(token));
671        }
672
673        return regexes[token](config._strict, config._locale);
674    }
675
676    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
677    function unescapeFormat(s) {
678        return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
679            return p1 || p2 || p3 || p4;
680        }));
681    }
682
683    function regexEscape(s) {
684        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
685    }
686
687    var tokens = {};
688
689    function addParseToken (token, callback) {
690        var i, func = callback;
691        if (typeof token === 'string') {
692            token = [token];
693        }
694        if (isNumber(callback)) {
695            func = function (input, array) {
696                array[callback] = toInt(input);
697            };
698        }
699        for (i = 0; i < token.length; i++) {
700            tokens[token[i]] = func;
701        }
702    }
703
704    function addWeekParseToken (token, callback) {
705        addParseToken(token, function (input, array, config, token) {
706            config._w = config._w || {};
707            callback(input, config._w, config, token);
708        });
709    }
710
711    function addTimeToArrayFromToken(token, input, config) {
712        if (input != null && hasOwnProp(tokens, token)) {
713            tokens[token](input, config._a, config, token);
714        }
715    }
716
717    var YEAR = 0;
718    var MONTH = 1;
719    var DATE = 2;
720    var HOUR = 3;
721    var MINUTE = 4;
722    var SECOND = 5;
723    var MILLISECOND = 6;
724    var WEEK = 7;
725    var WEEKDAY = 8;
726
727    // FORMATTING
728
729    addFormatToken('Y', 0, 0, function () {
730        var y = this.year();
731        return y <= 9999 ? '' + y : '+' + y;
732    });
733
734    addFormatToken(0, ['YY', 2], 0, function () {
735        return this.year() % 100;
736    });
737
738    addFormatToken(0, ['YYYY',   4],       0, 'year');
739    addFormatToken(0, ['YYYYY',  5],       0, 'year');
740    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
741
742    // ALIASES
743
744    addUnitAlias('year', 'y');
745
746    // PRIORITIES
747
748    addUnitPriority('year', 1);
749
750    // PARSING
751
752    addRegexToken('Y',      matchSigned);
753    addRegexToken('YY',     match1to2, match2);
754    addRegexToken('YYYY',   match1to4, match4);
755    addRegexToken('YYYYY',  match1to6, match6);
756    addRegexToken('YYYYYY', match1to6, match6);
757
758    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
759    addParseToken('YYYY', function (input, array) {
760        array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
761    });
762    addParseToken('YY', function (input, array) {
763        array[YEAR] = hooks.parseTwoDigitYear(input);
764    });
765    addParseToken('Y', function (input, array) {
766        array[YEAR] = parseInt(input, 10);
767    });
768
769    // HELPERS
770
771    function daysInYear(year) {
772        return isLeapYear(year) ? 366 : 365;
773    }
774
775    function isLeapYear(year) {
776        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
777    }
778
779    // HOOKS
780
781    hooks.parseTwoDigitYear = function (input) {
782        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
783    };
784
785    // MOMENTS
786
787    var getSetYear = makeGetSet('FullYear', true);
788
789    function getIsLeapYear () {
790        return isLeapYear(this.year());
791    }
792
793    function makeGetSet (unit, keepTime) {
794        return function (value) {
795            if (value != null) {
796                set$1(this, unit, value);
797                hooks.updateOffset(this, keepTime);
798                return this;
799            } else {
800                return get(this, unit);
801            }
802        };
803    }
804
805    function get (mom, unit) {
806        return mom.isValid() ?
807            mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
808    }
809
810    function set$1 (mom, unit, value) {
811        if (mom.isValid() && !isNaN(value)) {
812            if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {
813                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));
814            }
815            else {
816                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
817            }
818        }
819    }
820
821    // MOMENTS
822
823    function stringGet (units) {
824        units = normalizeUnits(units);
825        if (isFunction(this[units])) {
826            return this[units]();
827        }
828        return this;
829    }
830
831
832    function stringSet (units, value) {
833        if (typeof units === 'object') {
834            units = normalizeObjectUnits(units);
835            var prioritized = getPrioritizedUnits(units);
836            for (var i = 0; i < prioritized.length; i++) {
837                this[prioritized[i].unit](units[prioritized[i].unit]);
838            }
839        } else {
840            units = normalizeUnits(units);
841            if (isFunction(this[units])) {
842                return this[units](value);
843            }
844        }
845        return this;
846    }
847
848    function mod(n, x) {
849        return ((n % x) + x) % x;
850    }
851
852    var indexOf;
853
854    if (Array.prototype.indexOf) {
855        indexOf = Array.prototype.indexOf;
856    } else {
857        indexOf = function (o) {
858            // I know
859            var i;
860            for (i = 0; i < this.length; ++i) {
861                if (this[i] === o) {
862                    return i;
863                }
864            }
865            return -1;
866        };
867    }
868
869    function daysInMonth(year, month) {
870        if (isNaN(year) || isNaN(month)) {
871            return NaN;
872        }
873        var modMonth = mod(month, 12);
874        year += (month - modMonth) / 12;
875        return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);
876    }
877
878    // FORMATTING
879
880    addFormatToken('M', ['MM', 2], 'Mo', function () {
881        return this.month() + 1;
882    });
883
884    addFormatToken('MMM', 0, 0, function (format) {
885        return this.localeData().monthsShort(this, format);
886    });
887
888    addFormatToken('MMMM', 0, 0, function (format) {
889        return this.localeData().months(this, format);
890    });
891
892    // ALIASES
893
894    addUnitAlias('month', 'M');
895
896    // PRIORITY
897
898    addUnitPriority('month', 8);
899
900    // PARSING
901
902    addRegexToken('M',    match1to2);
903    addRegexToken('MM',   match1to2, match2);
904    addRegexToken('MMM',  function (isStrict, locale) {
905        return locale.monthsShortRegex(isStrict);
906    });
907    addRegexToken('MMMM', function (isStrict, locale) {
908        return locale.monthsRegex(isStrict);
909    });
910
911    addParseToken(['M', 'MM'], function (input, array) {
912        array[MONTH] = toInt(input) - 1;
913    });
914
915    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
916        var month = config._locale.monthsParse(input, token, config._strict);
917        // if we didn't find a month name, mark the date as invalid.
918        if (month != null) {
919            array[MONTH] = month;
920        } else {
921            getParsingFlags(config).invalidMonth = input;
922        }
923    });
924
925    // LOCALES
926
927    var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;
928    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
929    function localeMonths (m, format) {
930        if (!m) {
931            return isArray(this._months) ? this._months :
932                this._months['standalone'];
933        }
934        return isArray(this._months) ? this._months[m.month()] :
935            this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
936    }
937
938    var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
939    function localeMonthsShort (m, format) {
940        if (!m) {
941            return isArray(this._monthsShort) ? this._monthsShort :
942                this._monthsShort['standalone'];
943        }
944        return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
945            this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
946    }
947
948    function handleStrictParse(monthName, format, strict) {
949        var i, ii, mom, llc = monthName.toLocaleLowerCase();
950        if (!this._monthsParse) {
951            // this is not used
952            this._monthsParse = [];
953            this._longMonthsParse = [];
954            this._shortMonthsParse = [];
955            for (i = 0; i < 12; ++i) {
956                mom = createUTC([2000, i]);
957                this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
958                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
959            }
960        }
961
962        if (strict) {
963            if (format === 'MMM') {
964                ii = indexOf.call(this._shortMonthsParse, llc);
965                return ii !== -1 ? ii : null;
966            } else {
967                ii = indexOf.call(this._longMonthsParse, llc);
968                return ii !== -1 ? ii : null;
969            }
970        } else {
971            if (format === 'MMM') {
972                ii = indexOf.call(this._shortMonthsParse, llc);
973                if (ii !== -1) {
974                    return ii;
975                }
976                ii = indexOf.call(this._longMonthsParse, llc);
977                return ii !== -1 ? ii : null;
978            } else {
979                ii = indexOf.call(this._longMonthsParse, llc);
980                if (ii !== -1) {
981                    return ii;
982                }
983                ii = indexOf.call(this._shortMonthsParse, llc);
984                return ii !== -1 ? ii : null;
985            }
986        }
987    }
988
989    function localeMonthsParse (monthName, format, strict) {
990        var i, mom, regex;
991
992        if (this._monthsParseExact) {
993            return handleStrictParse.call(this, monthName, format, strict);
994        }
995
996        if (!this._monthsParse) {
997            this._monthsParse = [];
998            this._longMonthsParse = [];
999            this._shortMonthsParse = [];
1000        }
1001
1002        // TODO: add sorting
1003        // Sorting makes sure if one month (or abbr) is a prefix of another
1004        // see sorting in computeMonthsParse
1005        for (i = 0; i < 12; i++) {
1006            // make the regex if we don't have it already
1007            mom = createUTC([2000, i]);
1008            if (strict && !this._longMonthsParse[i]) {
1009                this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
1010                this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
1011            }
1012            if (!strict && !this._monthsParse[i]) {
1013                regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
1014                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
1015            }
1016            // test the regex
1017            if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
1018                return i;
1019            } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
1020                return i;
1021            } else if (!strict && this._monthsParse[i].test(monthName)) {
1022                return i;
1023            }
1024        }
1025    }
1026
1027    // MOMENTS
1028
1029    function setMonth (mom, value) {
1030        var dayOfMonth;
1031
1032        if (!mom.isValid()) {
1033            // No op
1034            return mom;
1035        }
1036
1037        if (typeof value === 'string') {
1038            if (/^\d+$/.test(value)) {
1039                value = toInt(value);
1040            } else {
1041                value = mom.localeData().monthsParse(value);
1042                // TODO: Another silent failure?
1043                if (!isNumber(value)) {
1044                    return mom;
1045                }
1046            }
1047        }
1048
1049        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
1050        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
1051        return mom;
1052    }
1053
1054    function getSetMonth (value) {
1055        if (value != null) {
1056            setMonth(this, value);
1057            hooks.updateOffset(this, true);
1058            return this;
1059        } else {
1060            return get(this, 'Month');
1061        }
1062    }
1063
1064    function getDaysInMonth () {
1065        return daysInMonth(this.year(), this.month());
1066    }
1067
1068    var defaultMonthsShortRegex = matchWord;
1069    function monthsShortRegex (isStrict) {
1070        if (this._monthsParseExact) {
1071            if (!hasOwnProp(this, '_monthsRegex')) {
1072                computeMonthsParse.call(this);
1073            }
1074            if (isStrict) {
1075                return this._monthsShortStrictRegex;
1076            } else {
1077                return this._monthsShortRegex;
1078            }
1079        } else {
1080            if (!hasOwnProp(this, '_monthsShortRegex')) {
1081                this._monthsShortRegex = defaultMonthsShortRegex;
1082            }
1083            return this._monthsShortStrictRegex && isStrict ?
1084                this._monthsShortStrictRegex : this._monthsShortRegex;
1085        }
1086    }
1087
1088    var defaultMonthsRegex = matchWord;
1089    function monthsRegex (isStrict) {
1090        if (this._monthsParseExact) {
1091            if (!hasOwnProp(this, '_monthsRegex')) {
1092                computeMonthsParse.call(this);
1093            }
1094            if (isStrict) {
1095                return this._monthsStrictRegex;
1096            } else {
1097                return this._monthsRegex;
1098            }
1099        } else {
1100            if (!hasOwnProp(this, '_monthsRegex')) {
1101                this._monthsRegex = defaultMonthsRegex;
1102            }
1103            return this._monthsStrictRegex && isStrict ?
1104                this._monthsStrictRegex : this._monthsRegex;
1105        }
1106    }
1107
1108    function computeMonthsParse () {
1109        function cmpLenRev(a, b) {
1110            return b.length - a.length;
1111        }
1112
1113        var shortPieces = [], longPieces = [], mixedPieces = [],
1114            i, mom;
1115        for (i = 0; i < 12; i++) {
1116            // make the regex if we don't have it already
1117            mom = createUTC([2000, i]);
1118            shortPieces.push(this.monthsShort(mom, ''));
1119            longPieces.push(this.months(mom, ''));
1120            mixedPieces.push(this.months(mom, ''));
1121            mixedPieces.push(this.monthsShort(mom, ''));
1122        }
1123        // Sorting makes sure if one month (or abbr) is a prefix of another it
1124        // will match the longer piece.
1125        shortPieces.sort(cmpLenRev);
1126        longPieces.sort(cmpLenRev);
1127        mixedPieces.sort(cmpLenRev);
1128        for (i = 0; i < 12; i++) {
1129            shortPieces[i] = regexEscape(shortPieces[i]);
1130            longPieces[i] = regexEscape(longPieces[i]);
1131        }
1132        for (i = 0; i < 24; i++) {
1133            mixedPieces[i] = regexEscape(mixedPieces[i]);
1134        }
1135
1136        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1137        this._monthsShortRegex = this._monthsRegex;
1138        this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1139        this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1140    }
1141
1142    function createDate (y, m, d, h, M, s, ms) {
1143        // can't just apply() to create a date:
1144        // https://stackoverflow.com/q/181348
1145        var date;
1146        // the date constructor remaps years 0-99 to 1900-1999
1147        if (y < 100 && y >= 0) {
1148            // preserve leap years using a full 400 year cycle, then reset
1149            date = new Date(y + 400, m, d, h, M, s, ms);
1150            if (isFinite(date.getFullYear())) {
1151                date.setFullYear(y);
1152            }
1153        } else {
1154            date = new Date(y, m, d, h, M, s, ms);
1155        }
1156
1157        return date;
1158    }
1159
1160    function createUTCDate (y) {
1161        var date;
1162        // the Date.UTC function remaps years 0-99 to 1900-1999
1163        if (y < 100 && y >= 0) {
1164            var args = Array.prototype.slice.call(arguments);
1165            // preserve leap years using a full 400 year cycle, then reset
1166            args[0] = y + 400;
1167            date = new Date(Date.UTC.apply(null, args));
1168            if (isFinite(date.getUTCFullYear())) {
1169                date.setUTCFullYear(y);
1170            }
1171        } else {
1172            date = new Date(Date.UTC.apply(null, arguments));
1173        }
1174
1175        return date;
1176    }
1177
1178    // start-of-first-week - start-of-year
1179    function firstWeekOffset(year, dow, doy) {
1180        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1181            fwd = 7 + dow - doy,
1182            // first-week day local weekday -- which local weekday is fwd
1183            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1184
1185        return -fwdlw + fwd - 1;
1186    }
1187
1188    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1189    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1190        var localWeekday = (7 + weekday - dow) % 7,
1191            weekOffset = firstWeekOffset(year, dow, doy),
1192            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1193            resYear, resDayOfYear;
1194
1195        if (dayOfYear <= 0) {
1196            resYear = year - 1;
1197            resDayOfYear = daysInYear(resYear) + dayOfYear;
1198        } else if (dayOfYear > daysInYear(year)) {
1199            resYear = year + 1;
1200            resDayOfYear = dayOfYear - daysInYear(year);
1201        } else {
1202            resYear = year;
1203            resDayOfYear = dayOfYear;
1204        }
1205
1206        return {
1207            year: resYear,
1208            dayOfYear: resDayOfYear
1209        };
1210    }
1211
1212    function weekOfYear(mom, dow, doy) {
1213        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1214            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1215            resWeek, resYear;
1216
1217        if (week < 1) {
1218            resYear = mom.year() - 1;
1219            resWeek = week + weeksInYear(resYear, dow, doy);
1220        } else if (week > weeksInYear(mom.year(), dow, doy)) {
1221            resWeek = week - weeksInYear(mom.year(), dow, doy);
1222            resYear = mom.year() + 1;
1223        } else {
1224            resYear = mom.year();
1225            resWeek = week;
1226        }
1227
1228        return {
1229            week: resWeek,
1230            year: resYear
1231        };
1232    }
1233
1234    function weeksInYear(year, dow, doy) {
1235        var weekOffset = firstWeekOffset(year, dow, doy),
1236            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1237        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1238    }
1239
1240    // FORMATTING
1241
1242    addFormatToken('w', ['ww', 2], 'wo', 'week');
1243    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
1244
1245    // ALIASES
1246
1247    addUnitAlias('week', 'w');
1248    addUnitAlias('isoWeek', 'W');
1249
1250    // PRIORITIES
1251
1252    addUnitPriority('week', 5);
1253    addUnitPriority('isoWeek', 5);
1254
1255    // PARSING
1256
1257    addRegexToken('w',  match1to2);
1258    addRegexToken('ww', match1to2, match2);
1259    addRegexToken('W',  match1to2);
1260    addRegexToken('WW', match1to2, match2);
1261
1262    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
1263        week[token.substr(0, 1)] = toInt(input);
1264    });
1265
1266    // HELPERS
1267
1268    // LOCALES
1269
1270    function localeWeek (mom) {
1271        return weekOfYear(mom, this._week.dow, this._week.doy).week;
1272    }
1273
1274    var defaultLocaleWeek = {
1275        dow : 0, // Sunday is the first day of the week.
1276        doy : 6  // The week that contains Jan 6th is the first week of the year.
1277    };
1278
1279    function localeFirstDayOfWeek () {
1280        return this._week.dow;
1281    }
1282
1283    function localeFirstDayOfYear () {
1284        return this._week.doy;
1285    }
1286
1287    // MOMENTS
1288
1289    function getSetWeek (input) {
1290        var week = this.localeData().week(this);
1291        return input == null ? week : this.add((input - week) * 7, 'd');
1292    }
1293
1294    function getSetISOWeek (input) {
1295        var week = weekOfYear(this, 1, 4).week;
1296        return input == null ? week : this.add((input - week) * 7, 'd');
1297    }
1298
1299    // FORMATTING
1300
1301    addFormatToken('d', 0, 'do', 'day');
1302
1303    addFormatToken('dd', 0, 0, function (format) {
1304        return this.localeData().weekdaysMin(this, format);
1305    });
1306
1307    addFormatToken('ddd', 0, 0, function (format) {
1308        return this.localeData().weekdaysShort(this, format);
1309    });
1310
1311    addFormatToken('dddd', 0, 0, function (format) {
1312        return this.localeData().weekdays(this, format);
1313    });
1314
1315    addFormatToken('e', 0, 0, 'weekday');
1316    addFormatToken('E', 0, 0, 'isoWeekday');
1317
1318    // ALIASES
1319
1320    addUnitAlias('day', 'd');
1321    addUnitAlias('weekday', 'e');
1322    addUnitAlias('isoWeekday', 'E');
1323
1324    // PRIORITY
1325    addUnitPriority('day', 11);
1326    addUnitPriority('weekday', 11);
1327    addUnitPriority('isoWeekday', 11);
1328
1329    // PARSING
1330
1331    addRegexToken('d',    match1to2);
1332    addRegexToken('e',    match1to2);
1333    addRegexToken('E',    match1to2);
1334    addRegexToken('dd',   function (isStrict, locale) {
1335        return locale.weekdaysMinRegex(isStrict);
1336    });
1337    addRegexToken('ddd',   function (isStrict, locale) {
1338        return locale.weekdaysShortRegex(isStrict);
1339    });
1340    addRegexToken('dddd',   function (isStrict, locale) {
1341        return locale.weekdaysRegex(isStrict);
1342    });
1343
1344    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
1345        var weekday = config._locale.weekdaysParse(input, token, config._strict);
1346        // if we didn't get a weekday name, mark the date as invalid
1347        if (weekday != null) {
1348            week.d = weekday;
1349        } else {
1350            getParsingFlags(config).invalidWeekday = input;
1351        }
1352    });
1353
1354    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
1355        week[token] = toInt(input);
1356    });
1357
1358    // HELPERS
1359
1360    function parseWeekday(input, locale) {
1361        if (typeof input !== 'string') {
1362            return input;
1363        }
1364
1365        if (!isNaN(input)) {
1366            return parseInt(input, 10);
1367        }
1368
1369        input = locale.weekdaysParse(input);
1370        if (typeof input === 'number') {
1371            return input;
1372        }
1373
1374        return null;
1375    }
1376
1377    function parseIsoWeekday(input, locale) {
1378        if (typeof input === 'string') {
1379            return locale.weekdaysParse(input) % 7 || 7;
1380        }
1381        return isNaN(input) ? null : input;
1382    }
1383
1384    // LOCALES
1385    function shiftWeekdays (ws, n) {
1386        return ws.slice(n, 7).concat(ws.slice(0, n));
1387    }
1388
1389    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
1390    function localeWeekdays (m, format) {
1391        var weekdays = isArray(this._weekdays) ? this._weekdays :
1392            this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];
1393        return (m === true) ? shiftWeekdays(weekdays, this._week.dow)
1394            : (m) ? weekdays[m.day()] : weekdays;
1395    }
1396
1397    var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
1398    function localeWeekdaysShort (m) {
1399        return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)
1400            : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;
1401    }
1402
1403    var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
1404    function localeWeekdaysMin (m) {
1405        return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)
1406            : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;
1407    }
1408
1409    function handleStrictParse$1(weekdayName, format, strict) {
1410        var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
1411        if (!this._weekdaysParse) {
1412            this._weekdaysParse = [];
1413            this._shortWeekdaysParse = [];
1414            this._minWeekdaysParse = [];
1415
1416            for (i = 0; i < 7; ++i) {
1417                mom = createUTC([2000, 1]).day(i);
1418                this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
1419                this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
1420                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
1421            }
1422        }
1423
1424        if (strict) {
1425            if (format === 'dddd') {
1426                ii = indexOf.call(this._weekdaysParse, llc);
1427                return ii !== -1 ? ii : null;
1428            } else if (format === 'ddd') {
1429                ii = indexOf.call(this._shortWeekdaysParse, llc);
1430                return ii !== -1 ? ii : null;
1431            } else {
1432                ii = indexOf.call(this._minWeekdaysParse, llc);
1433                return ii !== -1 ? ii : null;
1434            }
1435        } else {
1436            if (format === 'dddd') {
1437                ii = indexOf.call(this._weekdaysParse, llc);
1438                if (ii !== -1) {
1439                    return ii;
1440                }
1441                ii = indexOf.call(this._shortWeekdaysParse, llc);
1442                if (ii !== -1) {
1443                    return ii;
1444                }
1445                ii = indexOf.call(this._minWeekdaysParse, llc);
1446                return ii !== -1 ? ii : null;
1447            } else if (format === 'ddd') {
1448                ii = indexOf.call(this._shortWeekdaysParse, llc);
1449                if (ii !== -1) {
1450                    return ii;
1451                }
1452                ii = indexOf.call(this._weekdaysParse, llc);
1453                if (ii !== -1) {
1454                    return ii;
1455                }
1456                ii = indexOf.call(this._minWeekdaysParse, llc);
1457                return ii !== -1 ? ii : null;
1458            } else {
1459                ii = indexOf.call(this._minWeekdaysParse, llc);
1460                if (ii !== -1) {
1461                    return ii;
1462                }
1463                ii = indexOf.call(this._weekdaysParse, llc);
1464                if (ii !== -1) {
1465                    return ii;
1466                }
1467                ii = indexOf.call(this._shortWeekdaysParse, llc);
1468                return ii !== -1 ? ii : null;
1469            }
1470        }
1471    }
1472
1473    function localeWeekdaysParse (weekdayName, format, strict) {
1474        var i, mom, regex;
1475
1476        if (this._weekdaysParseExact) {
1477            return handleStrictParse$1.call(this, weekdayName, format, strict);
1478        }
1479
1480        if (!this._weekdaysParse) {
1481            this._weekdaysParse = [];
1482            this._minWeekdaysParse = [];
1483            this._shortWeekdaysParse = [];
1484            this._fullWeekdaysParse = [];
1485        }
1486
1487        for (i = 0; i < 7; i++) {
1488            // make the regex if we don't have it already
1489
1490            mom = createUTC([2000, 1]).day(i);
1491            if (strict && !this._fullWeekdaysParse[i]) {
1492                this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');
1493                this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');
1494                this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');
1495            }
1496            if (!this._weekdaysParse[i]) {
1497                regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
1498                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
1499            }
1500            // test the regex
1501            if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
1502                return i;
1503            } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
1504                return i;
1505            } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
1506                return i;
1507            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
1508                return i;
1509            }
1510        }
1511    }
1512
1513    // MOMENTS
1514
1515    function getSetDayOfWeek (input) {
1516        if (!this.isValid()) {
1517            return input != null ? this : NaN;
1518        }
1519        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
1520        if (input != null) {
1521            input = parseWeekday(input, this.localeData());
1522            return this.add(input - day, 'd');
1523        } else {
1524            return day;
1525        }
1526    }
1527
1528    function getSetLocaleDayOfWeek (input) {
1529        if (!this.isValid()) {
1530            return input != null ? this : NaN;
1531        }
1532        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
1533        return input == null ? weekday : this.add(input - weekday, 'd');
1534    }
1535
1536    function getSetISODayOfWeek (input) {
1537        if (!this.isValid()) {
1538            return input != null ? this : NaN;
1539        }
1540
1541        // behaves the same as moment#day except
1542        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
1543        // as a setter, sunday should belong to the previous week.
1544
1545        if (input != null) {
1546            var weekday = parseIsoWeekday(input, this.localeData());
1547            return this.day(this.day() % 7 ? weekday : weekday - 7);
1548        } else {
1549            return this.day() || 7;
1550        }
1551    }
1552
1553    var defaultWeekdaysRegex = matchWord;
1554    function weekdaysRegex (isStrict) {
1555        if (this._weekdaysParseExact) {
1556            if (!hasOwnProp(this, '_weekdaysRegex')) {
1557                computeWeekdaysParse.call(this);
1558            }
1559            if (isStrict) {
1560                return this._weekdaysStrictRegex;
1561            } else {
1562                return this._weekdaysRegex;
1563            }
1564        } else {
1565            if (!hasOwnProp(this, '_weekdaysRegex')) {
1566                this._weekdaysRegex = defaultWeekdaysRegex;
1567            }
1568            return this._weekdaysStrictRegex && isStrict ?
1569                this._weekdaysStrictRegex : this._weekdaysRegex;
1570        }
1571    }
1572
1573    var defaultWeekdaysShortRegex = matchWord;
1574    function weekdaysShortRegex (isStrict) {
1575        if (this._weekdaysParseExact) {
1576            if (!hasOwnProp(this, '_weekdaysRegex')) {
1577                computeWeekdaysParse.call(this);
1578            }
1579            if (isStrict) {
1580                return this._weekdaysShortStrictRegex;
1581            } else {
1582                return this._weekdaysShortRegex;
1583            }
1584        } else {
1585            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
1586                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
1587            }
1588            return this._weekdaysShortStrictRegex && isStrict ?
1589                this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
1590        }
1591    }
1592
1593    var defaultWeekdaysMinRegex = matchWord;
1594    function weekdaysMinRegex (isStrict) {
1595        if (this._weekdaysParseExact) {
1596            if (!hasOwnProp(this, '_weekdaysRegex')) {
1597                computeWeekdaysParse.call(this);
1598            }
1599            if (isStrict) {
1600                return this._weekdaysMinStrictRegex;
1601            } else {
1602                return this._weekdaysMinRegex;
1603            }
1604        } else {
1605            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
1606                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
1607            }
1608            return this._weekdaysMinStrictRegex && isStrict ?
1609                this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
1610        }
1611    }
1612
1613
1614    function computeWeekdaysParse () {
1615        function cmpLenRev(a, b) {
1616            return b.length - a.length;
1617        }
1618
1619        var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
1620            i, mom, minp, shortp, longp;
1621        for (i = 0; i < 7; i++) {
1622            // make the regex if we don't have it already
1623            mom = createUTC([2000, 1]).day(i);
1624            minp = this.weekdaysMin(mom, '');
1625            shortp = this.weekdaysShort(mom, '');
1626            longp = this.weekdays(mom, '');
1627            minPieces.push(minp);
1628            shortPieces.push(shortp);
1629            longPieces.push(longp);
1630            mixedPieces.push(minp);
1631            mixedPieces.push(shortp);
1632            mixedPieces.push(longp);
1633        }
1634        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
1635        // will match the longer piece.
1636        minPieces.sort(cmpLenRev);
1637        shortPieces.sort(cmpLenRev);
1638        longPieces.sort(cmpLenRev);
1639        mixedPieces.sort(cmpLenRev);
1640        for (i = 0; i < 7; i++) {
1641            shortPieces[i] = regexEscape(shortPieces[i]);
1642            longPieces[i] = regexEscape(longPieces[i]);
1643            mixedPieces[i] = regexEscape(mixedPieces[i]);
1644        }
1645
1646        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1647        this._weekdaysShortRegex = this._weekdaysRegex;
1648        this._weekdaysMinRegex = this._weekdaysRegex;
1649
1650        this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1651        this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1652        this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
1653    }
1654
1655    // FORMATTING
1656
1657    function hFormat() {
1658        return this.hours() % 12 || 12;
1659    }
1660
1661    function kFormat() {
1662        return this.hours() || 24;
1663    }
1664
1665    addFormatToken('H', ['HH', 2], 0, 'hour');
1666    addFormatToken('h', ['hh', 2], 0, hFormat);
1667    addFormatToken('k', ['kk', 2], 0, kFormat);
1668
1669    addFormatToken('hmm', 0, 0, function () {
1670        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
1671    });
1672
1673    addFormatToken('hmmss', 0, 0, function () {
1674        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
1675            zeroFill(this.seconds(), 2);
1676    });
1677
1678    addFormatToken('Hmm', 0, 0, function () {
1679        return '' + this.hours() + zeroFill(this.minutes(), 2);
1680    });
1681
1682    addFormatToken('Hmmss', 0, 0, function () {
1683        return '' + this.hours() + zeroFill(this.minutes(), 2) +
1684            zeroFill(this.seconds(), 2);
1685    });
1686
1687    function meridiem (token, lowercase) {
1688        addFormatToken(token, 0, 0, function () {
1689            return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
1690        });
1691    }
1692
1693    meridiem('a', true);
1694    meridiem('A', false);
1695
1696    // ALIASES
1697
1698    addUnitAlias('hour', 'h');
1699
1700    // PRIORITY
1701    addUnitPriority('hour', 13);
1702
1703    // PARSING
1704
1705    function matchMeridiem (isStrict, locale) {
1706        return locale._meridiemParse;
1707    }
1708
1709    addRegexToken('a',  matchMeridiem);
1710    addRegexToken('A',  matchMeridiem);
1711    addRegexToken('H',  match1to2);
1712    addRegexToken('h',  match1to2);
1713    addRegexToken('k',  match1to2);
1714    addRegexToken('HH', match1to2, match2);
1715    addRegexToken('hh', match1to2, match2);
1716    addRegexToken('kk', match1to2, match2);
1717
1718    addRegexToken('hmm', match3to4);
1719    addRegexToken('hmmss', match5to6);
1720    addRegexToken('Hmm', match3to4);
1721    addRegexToken('Hmmss', match5to6);
1722
1723    addParseToken(['H', 'HH'], HOUR);
1724    addParseToken(['k', 'kk'], function (input, array, config) {
1725        var kInput = toInt(input);
1726        array[HOUR] = kInput === 24 ? 0 : kInput;
1727    });
1728    addParseToken(['a', 'A'], function (input, array, config) {
1729        config._isPm = config._locale.isPM(input);
1730        config._meridiem = input;
1731    });
1732    addParseToken(['h', 'hh'], function (input, array, config) {
1733        array[HOUR] = toInt(input);
1734        getParsingFlags(config).bigHour = true;
1735    });
1736    addParseToken('hmm', function (input, array, config) {
1737        var pos = input.length - 2;
1738        array[HOUR] = toInt(input.substr(0, pos));
1739        array[MINUTE] = toInt(input.substr(pos));
1740        getParsingFlags(config).bigHour = true;
1741    });
1742    addParseToken('hmmss', function (input, array, config) {
1743        var pos1 = input.length - 4;
1744        var pos2 = input.length - 2;
1745        array[HOUR] = toInt(input.substr(0, pos1));
1746        array[MINUTE] = toInt(input.substr(pos1, 2));
1747        array[SECOND] = toInt(input.substr(pos2));
1748        getParsingFlags(config).bigHour = true;
1749    });
1750    addParseToken('Hmm', function (input, array, config) {
1751        var pos = input.length - 2;
1752        array[HOUR] = toInt(input.substr(0, pos));
1753        array[MINUTE] = toInt(input.substr(pos));
1754    });
1755    addParseToken('Hmmss', function (input, array, config) {
1756        var pos1 = input.length - 4;
1757        var pos2 = input.length - 2;
1758        array[HOUR] = toInt(input.substr(0, pos1));
1759        array[MINUTE] = toInt(input.substr(pos1, 2));
1760        array[SECOND] = toInt(input.substr(pos2));
1761    });
1762
1763    // LOCALES
1764
1765    function localeIsPM (input) {
1766        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing str
vendor: 11,105 bytes, lines 1766-2082
1766ings like arrays
1767        // Using charAt should be more compatible.
1768        return ((input + '').toLowerCase().charAt(0) === 'p');
1769    }
1770
1771    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
1772    function localeMeridiem (hours, minutes, isLower) {
1773        if (hours > 11) {
1774            return isLower ? 'pm' : 'PM';
1775        } else {
1776            return isLower ? 'am' : 'AM';
1777        }
1778    }
1779
1780
1781    // MOMENTS
1782
1783    // Setting the hour should keep the time, because the user explicitly
1784    // specified which hour they want. So trying to maintain the same hour (in
1785    // a new timezone) makes sense. Adding/subtracting hours does not follow
1786    // this rule.
1787    var getSetHour = makeGetSet('Hours', true);
1788
1789    var baseConfig = {
1790        calendar: defaultCalendar,
1791        longDateFormat: defaultLongDateFormat,
1792        invalidDate: defaultInvalidDate,
1793        ordinal: defaultOrdinal,
1794        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
1795        relativeTime: defaultRelativeTime,
1796
1797        months: defaultLocaleMonths,
1798        monthsShort: defaultLocaleMonthsShort,
1799
1800        week: defaultLocaleWeek,
1801
1802        weekdays: defaultLocaleWeekdays,
1803        weekdaysMin: defaultLocaleWeekdaysMin,
1804        weekdaysShort: defaultLocaleWeekdaysShort,
1805
1806        meridiemParse: defaultLocaleMeridiemParse
1807    };
1808
1809    // internal storage for locale config files
1810    var locales = {};
1811    var localeFamilies = {};
1812    var globalLocale;
1813
1814    function normalizeLocale(key) {
1815        return key ? key.toLowerCase().replace('_', '-') : key;
1816    }
1817
1818    // pick the locale from the array
1819    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
1820    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
1821    function chooseLocale(names) {
1822        var i = 0, j, next, locale, split;
1823
1824        while (i < names.length) {
1825            split = normalizeLocale(names[i]).split('-');
1826            j = split.length;
1827            next = normalizeLocale(names[i + 1]);
1828            next = next ? next.split('-') : null;
1829            while (j > 0) {
1830                locale = loadLocale(split.slice(0, j).join('-'));
1831                if (locale) {
1832                    return locale;
1833                }
1834                if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
1835                    //the next array item is better than a shallower substring of this one
1836                    break;
1837                }
1838                j--;
1839            }
1840            i++;
1841        }
1842        return globalLocale;
1843    }
1844
1845    function loadLocale(name) {
1846        var oldLocale = null;
1847        // TODO: Find a better way to register and load all the locales in Node
1848        if (!locales[name] && (typeof module !== 'undefined') &&
1849                module && module.exports) {
1850            try {
1851                oldLocale = globalLocale._abbr;
1852                var aliasedRequire = require;
1853                aliasedRequire('./locale/' + name);
1854                getSetGlobalLocale(oldLocale);
1855            } catch (e) {}
1856        }
1857        return locales[name];
1858    }
1859
1860    // This function will load locale and then set the global locale.  If
1861    // no arguments are passed in, it will simply return the current global
1862    // locale key.
1863    function getSetGlobalLocale (key, values) {
1864        var data;
1865        if (key) {
1866            if (isUndefined(values)) {
1867                data = getLocale(key);
1868            }
1869            else {
1870                data = defineLocale(key, values);
1871            }
1872
1873            if (data) {
1874                // moment.duration._locale = moment._locale = data;
1875                globalLocale = data;
1876            }
1877            else {
1878                if ((typeof console !==  'undefined') && console.warn) {
1879                    //warn user if arguments are passed but the locale could not be set
1880                    console.warn('Locale ' + key +  ' not found. Did you forget to load it?');
1881                }
1882            }
1883        }
1884
1885        return globalLocale._abbr;
1886    }
1887
1888    function defineLocale (name, config) {
1889        if (config !== null) {
1890            var locale, parentConfig = baseConfig;
1891            config.abbr = name;
1892            if (locales[name] != null) {
1893                deprecateSimple('defineLocaleOverride',
1894                        'use moment.updateLocale(localeName, config) to change ' +
1895                        'an existing locale. moment.defineLocale(localeName, ' +
1896                        'config) should only be used for creating a new locale ' +
1897                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');
1898                parentConfig = locales[name]._config;
1899            } else if (config.parentLocale != null) {
1900                if (locales[config.parentLocale] != null) {
1901                    parentConfig = locales[config.parentLocale]._config;
1902                } else {
1903                    locale = loadLocale(config.parentLocale);
1904                    if (locale != null) {
1905                        parentConfig = locale._config;
1906                    } else {
1907                        if (!localeFamilies[config.parentLocale]) {
1908                            localeFamilies[config.parentLocale] = [];
1909                        }
1910                        localeFamilies[config.parentLocale].push({
1911                            name: name,
1912                            config: config
1913                        });
1914                        return null;
1915                    }
1916                }
1917            }
1918            locales[name] = new Locale(mergeConfigs(parentConfig, config));
1919
1920            if (localeFamilies[name]) {
1921                localeFamilies[name].forEach(function (x) {
1922                    defineLocale(x.name, x.config);
1923                });
1924            }
1925
1926            // backwards compat for now: also set the locale
1927            // make sure we set the locale AFTER all child locales have been
1928            // created, so we won't end up with the child locale set.
1929            getSetGlobalLocale(name);
1930
1931
1932            return locales[name];
1933        } else {
1934            // useful for testing
1935            delete locales[name];
1936            return null;
1937        }
1938    }
1939
1940    function updateLocale(name, config) {
1941        if (config != null) {
1942            var locale, tmpLocale, parentConfig = baseConfig;
1943            // MERGE
1944            tmpLocale = loadLocale(name);
1945            if (tmpLocale != null) {
1946                parentConfig = tmpLocale._config;
1947            }
1948            config = mergeConfigs(parentConfig, config);
1949            locale = new Locale(config);
1950            locale.parentLocale = locales[name];
1951            locales[name] = locale;
1952
1953            // backwards compat for now: also set the locale
1954            getSetGlobalLocale(name);
1955        } else {
1956            // pass null for config to unupdate, useful for tests
1957            if (locales[name] != null) {
1958                if (locales[name].parentLocale != null) {
1959                    locales[name] = locales[name].parentLocale;
1960                } else if (locales[name] != null) {
1961                    delete locales[name];
1962                }
1963            }
1964        }
1965        return locales[name];
1966    }
1967
1968    // returns locale data
1969    function getLocale (key) {
1970        var locale;
1971
1972        if (key && key._locale && key._locale._abbr) {
1973            key = key._locale._abbr;
1974        }
1975
1976        if (!key) {
1977            return globalLocale;
1978        }
1979
1980        if (!isArray(key)) {
1981            //short-circuit everything else
1982            locale = loadLocale(key);
1983            if (locale) {
1984                return locale;
1985            }
1986            key = [key];
1987        }
1988
1989        return chooseLocale(key);
1990    }
1991
1992    function listLocales() {
1993        return keys(locales);
1994    }
1995
1996    function checkOverflow (m) {
1997        var overflow;
1998        var a = m._a;
1999
2000        if (a && getParsingFlags(m).overflow === -2) {
2001            overflow =
2002                a[MONTH]       < 0 || a[MONTH]       > 11  ? MONTH :
2003                a[DATE]        < 1 || a[DATE]        > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
2004                a[HOUR]        < 0 || a[HOUR]        > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
2005                a[MINUTE]      < 0 || a[MINUTE]      > 59  ? MINUTE :
2006                a[SECOND]      < 0 || a[SECOND]      > 59  ? SECOND :
2007                a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
2008                -1;
2009
2010            if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
2011                overflow = DATE;
2012            }
2013            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
2014                overflow = WEEK;
2015            }
2016            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
2017                overflow = WEEKDAY;
2018            }
2019
2020            getParsingFlags(m).overflow = overflow;
2021        }
2022
2023        return m;
2024    }
2025
2026    // Pick the first defined of two or three arguments.
2027    function defaults(a, b, c) {
2028        if (a != null) {
2029            return a;
2030        }
2031        if (b != null) {
2032            return b;
2033        }
2034        return c;
2035    }
2036
2037    function currentDateArray(config) {
2038        // hooks is actually the exported moment object
2039        var nowValue = new Date(hooks.now());
2040        if (config._useUTC) {
2041            return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
2042        }
2043        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
2044    }
2045
2046    // convert an array to a date.
2047    // the array should mirror the parameters below
2048    // note: all values past the year are optional and will default to the lowest possible value.
2049    // [year, month, day , hour, minute, second, millisecond]
2050    function configFromArray (config) {
2051        var i, date, input = [], currentDate, expectedWeekday, yearToUse;
2052
2053        if (config._d) {
2054            return;
2055        }
2056
2057        currentDate = currentDateArray(config);
2058
2059        //compute day of the year from weeks and weekdays
2060        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
2061            dayOfYearFromWeekInfo(config);
2062        }
2063
2064        //if the day of the year is set, figure out what it is
2065        if (config._dayOfYear != null) {
2066            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
2067
2068            if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
2069                getParsingFlags(config)._overflowDayOfYear = true;
2070            }
2071
2072            date = createUTCDate(yearToUse, 0, config._dayOfYear);
2073            config._a[MONTH] = date.getUTCMonth();
2074            config._a[DATE] = date.getUTCDate();
2075        }
2076
2077        // Default to current date.
2078        // * if no year, month, day of month are given, default to today
2079        // * if day of month is given, default month and year
2080        // * if month is given, default only year
2081        // * if year is given, don't default anything
2082        for (i = 0; i < 3 && config._a[i] == null; ++i) {
vendor: 81,024 bytes, lines 2083-4553
2083            config._a[i] = input[i] = currentDate[i];
2084        }
2085
2086        // Zero out whatever was not defaulted, including time
2087        for (; i < 7; i++) {
2088            config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
2089        }
2090
2091        // Check for 24:00:00.000
2092        if (config._a[HOUR] === 24 &&
2093                config._a[MINUTE] === 0 &&
2094                config._a[SECOND] === 0 &&
2095                config._a[MILLISECOND] === 0) {
2096            config._nextDay = true;
2097            config._a[HOUR] = 0;
2098        }
2099
2100        config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
2101        expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();
2102
2103        // Apply timezone offset from input. The actual utcOffset can be changed
2104        // with parseZone.
2105        if (config._tzm != null) {
2106            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2107        }
2108
2109        if (config._nextDay) {
2110            config._a[HOUR] = 24;
2111        }
2112
2113        // check for mismatching day of week
2114        if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {
2115            getParsingFlags(config).weekdayMismatch = true;
2116        }
2117    }
2118
2119    function dayOfYearFromWeekInfo(config) {
2120        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
2121
2122        w = config._w;
2123        if (w.GG != null || w.W != null || w.E != null) {
2124            dow = 1;
2125            doy = 4;
2126
2127            // TODO: We need to take the current isoWeekYear, but that depends on
2128            // how we interpret now (local, utc, fixed offset). So create
2129            // a now version of current config (take local/utc/offset flags, and
2130            // create now).
2131            weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);
2132            week = defaults(w.W, 1);
2133            weekday = defaults(w.E, 1);
2134            if (weekday < 1 || weekday > 7) {
2135                weekdayOverflow = true;
2136            }
2137        } else {
2138            dow = config._locale._week.dow;
2139            doy = config._locale._week.doy;
2140
2141            var curWeek = weekOfYear(createLocal(), dow, doy);
2142
2143            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
2144
2145            // Default to current week.
2146            week = defaults(w.w, curWeek.week);
2147
2148            if (w.d != null) {
2149                // weekday -- low day numbers are considered next week
2150                weekday = w.d;
2151                if (weekday < 0 || weekday > 6) {
2152                    weekdayOverflow = true;
2153                }
2154            } else if (w.e != null) {
2155                // local weekday -- counting starts from beginning of week
2156                weekday = w.e + dow;
2157                if (w.e < 0 || w.e > 6) {
2158                    weekdayOverflow = true;
2159                }
2160            } else {
2161                // default to beginning of week
2162                weekday = dow;
2163            }
2164        }
2165        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
2166            getParsingFlags(config)._overflowWeeks = true;
2167        } else if (weekdayOverflow != null) {
2168            getParsingFlags(config)._overflowWeekday = true;
2169        } else {
2170            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
2171            config._a[YEAR] = temp.year;
2172            config._dayOfYear = temp.dayOfYear;
2173        }
2174    }
2175
2176    // iso 8601 regex
2177    // 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)
2178    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)?)?$/;
2179    var 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)?)?$/;
2180
2181    var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
2182
2183    var isoDates = [
2184        ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
2185        ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
2186        ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
2187        ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
2188        ['YYYY-DDD', /\d{4}-\d{3}/],
2189        ['YYYY-MM', /\d{4}-\d\d/, false],
2190        ['YYYYYYMMDD', /[+-]\d{10}/],
2191        ['YYYYMMDD', /\d{8}/],
2192        // YYYYMM is NOT allowed by the standard
2193        ['GGGG[W]WWE', /\d{4}W\d{3}/],
2194        ['GGGG[W]WW', /\d{4}W\d{2}/, false],
2195        ['YYYYDDD', /\d{7}/]
2196    ];
2197
2198    // iso time formats and regexes
2199    var isoTimes = [
2200        ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
2201        ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
2202        ['HH:mm:ss', /\d\d:\d\d:\d\d/],
2203        ['HH:mm', /\d\d:\d\d/],
2204        ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
2205        ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
2206        ['HHmmss', /\d\d\d\d\d\d/],
2207        ['HHmm', /\d\d\d\d/],
2208        ['HH', /\d\d/]
2209    ];
2210
2211    var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
2212
2213    // date from iso format
2214    function configFromISO(config) {
2215        var i, l,
2216            string = config._i,
2217            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
2218            allowTime, dateFormat, timeFormat, tzFormat;
2219
2220        if (match) {
2221            getParsingFlags(config).iso = true;
2222
2223            for (i = 0, l = isoDates.length; i < l; i++) {
2224                if (isoDates[i][1].exec(match[1])) {
2225                    dateFormat = isoDates[i][0];
2226                    allowTime = isoDates[i][2] !== false;
2227                    break;
2228                }
2229            }
2230            if (dateFormat == null) {
2231                config._isValid = false;
2232                return;
2233            }
2234            if (match[3]) {
2235                for (i = 0, l = isoTimes.length; i < l; i++) {
2236                    if (isoTimes[i][1].exec(match[3])) {
2237                        // match[2] should be 'T' or space
2238                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
2239                        break;
2240                    }
2241                }
2242                if (timeFormat == null) {
2243                    config._isValid = false;
2244                    return;
2245                }
2246            }
2247            if (!allowTime && timeFormat != null) {
2248                config._isValid = false;
2249                return;
2250            }
2251            if (match[4]) {
2252                if (tzRegex.exec(match[4])) {
2253                    tzFormat = 'Z';
2254                } else {
2255                    config._isValid = false;
2256                    return;
2257                }
2258            }
2259            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
2260            configFromStringAndFormat(config);
2261        } else {
2262            config._isValid = false;
2263        }
2264    }
2265
2266    // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
2267    var 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}))$/;
2268
2269    function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {
2270        var result = [
2271            untruncateYear(yearStr),
2272            defaultLocaleMonthsShort.indexOf(monthStr),
2273            parseInt(dayStr, 10),
2274            parseInt(hourStr, 10),
2275            parseInt(minuteStr, 10)
2276        ];
2277
2278        if (secondStr) {
2279            result.push(parseInt(secondStr, 10));
2280        }
2281
2282        return result;
2283    }
2284
2285    function untruncateYear(yearStr) {
2286        var year = parseInt(yearStr, 10);
2287        if (year <= 49) {
2288            return 2000 + year;
2289        } else if (year <= 999) {
2290            return 1900 + year;
2291        }
2292        return year;
2293    }
2294
2295    function preprocessRFC2822(s) {
2296        // Remove comments and folding whitespace and replace multiple-spaces with a single space
2297        return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, '');
2298    }
2299
2300    function checkWeekday(weekdayStr, parsedInput, config) {
2301        if (weekdayStr) {
2302            // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.
2303            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
2304                weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();
2305            if (weekdayProvided !== weekdayActual) {
2306                getParsingFlags(config).weekdayMismatch = true;
2307                config._isValid = false;
2308                return false;
2309            }
2310        }
2311        return true;
2312    }
2313
2314    var obsOffsets = {
2315        UT: 0,
2316        GMT: 0,
2317        EDT: -4 * 60,
2318        EST: -5 * 60,
2319        CDT: -5 * 60,
2320        CST: -6 * 60,
2321        MDT: -6 * 60,
2322        MST: -7 * 60,
2323        PDT: -7 * 60,
2324        PST: -8 * 60
2325    };
2326
2327    function calculateOffset(obsOffset, militaryOffset, numOffset) {
2328        if (obsOffset) {
2329            return obsOffsets[obsOffset];
2330        } else if (militaryOffset) {
2331            // the only allowed military tz is Z
2332            return 0;
2333        } else {
2334            var hm = parseInt(numOffset, 10);
2335            var m = hm % 100, h = (hm - m) / 100;
2336            return h * 60 + m;
2337        }
2338    }
2339
2340    // date and time from ref 2822 format
2341    function configFromRFC2822(config) {
2342        var match = rfc2822.exec(preprocessRFC2822(config._i));
2343        if (match) {
2344            var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);
2345            if (!checkWeekday(match[1], parsedArray, config)) {
2346                return;
2347            }
2348
2349            config._a = parsedArray;
2350            config._tzm = calculateOffset(match[8], match[9], match[10]);
2351
2352            config._d = createUTCDate.apply(null, config._a);
2353            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2354
2355            getParsingFlags(config).rfc2822 = true;
2356        } else {
2357            config._isValid = false;
2358        }
2359    }
2360
2361    // date from iso format or fallback
2362    function configFromString(config) {
2363        var matched = aspNetJsonRegex.exec(config._i);
2364
2365        if (matched !== null) {
2366            config._d = new Date(+matched[1]);
2367            return;
2368        }
2369
2370        configFromISO(config);
2371        if (config._isValid === false) {
2372            delete config._isValid;
2373        } else {
2374            return;
2375        }
2376
2377        configFromRFC2822(config);
2378        if (config._isValid === false) {
2379            delete config._isValid;
2380        } else {
2381            return;
2382        }
2383
2384        // Final attempt, use Input Fallback
2385        hooks.createFromInputFallback(config);
2386    }
2387
2388    hooks.createFromInputFallback = deprecate(
2389        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
2390        'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
2391        'discouraged and will be removed in an upcoming major release. Please refer to ' +
2392        'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
2393        function (config) {
2394            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
2395        }
2396    );
2397
2398    // constant that refers to the ISO standard
2399    hooks.ISO_8601 = function () {};
2400
2401    // constant that refers to the RFC 2822 form
2402    hooks.RFC_2822 = function () {};
2403
2404    // date from string and format string
2405    function configFromStringAndFormat(config) {
2406        // TODO: Move this to another part of the creation flow to prevent circular deps
2407        if (config._f === hooks.ISO_8601) {
2408            configFromISO(config);
2409            return;
2410        }
2411        if (config._f === hooks.RFC_2822) {
2412            configFromRFC2822(config);
2413            return;
2414        }
2415        config._a = [];
2416        getParsingFlags(config).empty = true;
2417
2418        // This array is used to make a Date, either with `new Date` or `Date.UTC`
2419        var string = '' + config._i,
2420            i, parsedInput, tokens, token, skipped,
2421            stringLength = string.length,
2422            totalParsedInputLength = 0;
2423
2424        tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
2425
2426        for (i = 0; i < tokens.length; i++) {
2427            token = tokens[i];
2428            parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
2429            // console.log('token', token, 'parsedInput', parsedInput,
2430            //         'regex', getParseRegexForToken(token, config));
2431            if (parsedInput) {
2432                skipped = string.substr(0, string.indexOf(parsedInput));
2433                if (skipped.length > 0) {
2434                    getParsingFlags(config).unusedInput.push(skipped);
2435                }
2436                string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
2437                totalParsedInputLength += parsedInput.length;
2438            }
2439            // don't parse if it's not a known token
2440            if (formatTokenFunctions[token]) {
2441                if (parsedInput) {
2442                    getParsingFlags(config).empty = false;
2443                }
2444                else {
2445                    getParsingFlags(config).unusedTokens.push(token);
2446                }
2447                addTimeToArrayFromToken(token, parsedInput, config);
2448            }
2449            else if (config._strict && !parsedInput) {
2450                getParsingFlags(config).unusedTokens.push(token);
2451            }
2452        }
2453
2454        // add remaining unparsed input length to the string
2455        getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
2456        if (string.length > 0) {
2457            getParsingFlags(config).unusedInput.push(string);
2458        }
2459
2460        // clear _12h flag if hour is <= 12
2461        if (config._a[HOUR] <= 12 &&
2462            getParsingFlags(config).bigHour === true &&
2463            config._a[HOUR] > 0) {
2464            getParsingFlags(config).bigHour = undefined;
2465        }
2466
2467        getParsingFlags(config).parsedDateParts = config._a.slice(0);
2468        getParsingFlags(config).meridiem = config._meridiem;
2469        // handle meridiem
2470        config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
2471
2472        configFromArray(config);
2473        checkOverflow(config);
2474    }
2475
2476
2477    function meridiemFixWrap (locale, hour, meridiem) {
2478        var isPm;
2479
2480        if (meridiem == null) {
2481            // nothing to do
2482            return hour;
2483        }
2484        if (locale.meridiemHour != null) {
2485            return locale.meridiemHour(hour, meridiem);
2486        } else if (locale.isPM != null) {
2487            // Fallback
2488            isPm = locale.isPM(meridiem);
2489            if (isPm && hour < 12) {
2490                hour += 12;
2491            }
2492            if (!isPm && hour === 12) {
2493                hour = 0;
2494            }
2495            return hour;
2496        } else {
2497            // this is not supposed to happen
2498            return hour;
2499        }
2500    }
2501
2502    // date from string and array of format strings
2503    function configFromStringAndArray(config) {
2504        var tempConfig,
2505            bestMoment,
2506
2507            scoreToBeat,
2508            i,
2509            currentScore;
2510
2511        if (config._f.length === 0) {
2512            getParsingFlags(config).invalidFormat = true;
2513            config._d = new Date(NaN);
2514            return;
2515        }
2516
2517        for (i = 0; i < config._f.length; i++) {
2518            currentScore = 0;
2519            tempConfig = copyConfig({}, config);
2520            if (config._useUTC != null) {
2521                tempConfig._useUTC = config._useUTC;
2522            }
2523            tempConfig._f = config._f[i];
2524            configFromStringAndFormat(tempConfig);
2525
2526            if (!isValid(tempConfig)) {
2527                continue;
2528            }
2529
2530            // if there is any input that was not parsed add a penalty for that format
2531            currentScore += getParsingFlags(tempConfig).charsLeftOver;
2532
2533            //or tokens
2534            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
2535
2536            getParsingFlags(tempConfig).score = currentScore;
2537
2538            if (scoreToBeat == null || currentScore < scoreToBeat) {
2539                scoreToBeat = currentScore;
2540                bestMoment = tempConfig;
2541            }
2542        }
2543
2544        extend(config, bestMoment || tempConfig);
2545    }
2546
2547    function configFromObject(config) {
2548        if (config._d) {
2549            return;
2550        }
2551
2552        var i = normalizeObjectUnits(config._i);
2553        config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
2554            return obj && parseInt(obj, 10);
2555        });
2556
2557        configFromArray(config);
2558    }
2559
2560    function createFromConfig (config) {
2561        var res = new Moment(checkOverflow(prepareConfig(config)));
2562        if (res._nextDay) {
2563            // Adding is smart enough around DST
2564            res.add(1, 'd');
2565            res._nextDay = undefined;
2566        }
2567
2568        return res;
2569    }
2570
2571    function prepareConfig (config) {
2572        var input = config._i,
2573            format = config._f;
2574
2575        config._locale = config._locale || getLocale(config._l);
2576
2577        if (input === null || (format === undefined && input === '')) {
2578            return createInvalid({nullInput: true});
2579        }
2580
2581        if (typeof input === 'string') {
2582            config._i = input = config._locale.preparse(input);
2583        }
2584
2585        if (isMoment(input)) {
2586            return new Moment(checkOverflow(input));
2587        } else if (isDate(input)) {
2588            config._d = input;
2589        } else if (isArray(format)) {
2590            configFromStringAndArray(config);
2591        } else if (format) {
2592            configFromStringAndFormat(config);
2593        }  else {
2594            configFromInput(config);
2595        }
2596
2597        if (!isValid(config)) {
2598            config._d = null;
2599        }
2600
2601        return config;
2602    }
2603
2604    function configFromInput(config) {
2605        var input = config._i;
2606        if (isUndefined(input)) {
2607            config._d = new Date(hooks.now());
2608        } else if (isDate(input)) {
2609            config._d = new Date(input.valueOf());
2610        } else if (typeof input === 'string') {
2611            configFromString(config);
2612        } else if (isArray(input)) {
2613            config._a = map(input.slice(0), function (obj) {
2614                return parseInt(obj, 10);
2615            });
2616            configFromArray(config);
2617        } else if (isObject(input)) {
2618            configFromObject(config);
2619        } else if (isNumber(input)) {
2620            // from milliseconds
2621            config._d = new Date(input);
2622        } else {
2623            hooks.createFromInputFallback(config);
2624        }
2625    }
2626
2627    function createLocalOrUTC (input, format, locale, strict, isUTC) {
2628        var c = {};
2629
2630        if (locale === true || locale === false) {
2631            strict = locale;
2632            locale = undefined;
2633        }
2634
2635        if ((isObject(input) && isObjectEmpty(input)) ||
2636                (isArray(input) && input.length === 0)) {
2637            input = undefined;
2638        }
2639        // object construction must be done this way.
2640        // https://github.com/moment/moment/issues/1423
2641        c._isAMomentObject = true;
2642        c._useUTC = c._isUTC = isUTC;
2643        c._l = locale;
2644        c._i = input;
2645        c._f = format;
2646        c._strict = strict;
2647
2648        return createFromConfig(c);
2649    }
2650
2651    function createLocal (input, format, locale, strict) {
2652        return createLocalOrUTC(input, format, locale, strict, false);
2653    }
2654
2655    var prototypeMin = deprecate(
2656        'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
2657        function () {
2658            var other = createLocal.apply(null, arguments);
2659            if (this.isValid() && other.isValid()) {
2660                return other < this ? this : other;
2661            } else {
2662                return createInvalid();
2663            }
2664        }
2665    );
2666
2667    var prototypeMax = deprecate(
2668        'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
2669        function () {
2670            var other = createLocal.apply(null, arguments);
2671            if (this.isValid() && other.isValid()) {
2672                return other > this ? this : other;
2673            } else {
2674                return createInvalid();
2675            }
2676        }
2677    );
2678
2679    // Pick a moment m from moments so that m[fn](other) is true for all
2680    // other. This relies on the function fn to be transitive.
2681    //
2682    // moments should either be an array of moment objects or an array, whose
2683    // first element is an array of moment objects.
2684    function pickBy(fn, moments) {
2685        var res, i;
2686        if (moments.length === 1 && isArray(moments[0])) {
2687            moments = moments[0];
2688        }
2689        if (!moments.length) {
2690            return createLocal();
2691        }
2692        res = moments[0];
2693        for (i = 1; i < moments.length; ++i) {
2694            if (!moments[i].isValid() || moments[i][fn](res)) {
2695                res = moments[i];
2696            }
2697        }
2698        return res;
2699    }
2700
2701    // TODO: Use [].sort instead?
2702    function min () {
2703        var args = [].slice.call(arguments, 0);
2704
2705        return pickBy('isBefore', args);
2706    }
2707
2708    function max () {
2709        var args = [].slice.call(arguments, 0);
2710
2711        return pickBy('isAfter', args);
2712    }
2713
2714    var now = function () {
2715        return Date.now ? Date.now() : +(new Date());
2716    };
2717
2718    var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];
2719
2720    function isDurationValid(m) {
2721        for (var key in m) {
2722            if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
2723                return false;
2724            }
2725        }
2726
2727        var unitHasDecimal = false;
2728        for (var i = 0; i < ordering.length; ++i) {
2729            if (m[ordering[i]]) {
2730                if (unitHasDecimal) {
2731                    return false; // only allow non-integers for smallest unit
2732                }
2733                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
2734                    unitHasDecimal = true;
2735                }
2736            }
2737        }
2738
2739        return true;
2740    }
2741
2742    function isValid$1() {
2743        return this._isValid;
2744    }
2745
2746    function createInvalid$1() {
2747        return createDuration(NaN);
2748    }
2749
2750    function Duration (duration) {
2751        var normalizedInput = normalizeObjectUnits(duration),
2752            years = normalizedInput.year || 0,
2753            quarters = normalizedInput.quarter || 0,
2754            months = normalizedInput.month || 0,
2755            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
2756            days = normalizedInput.day || 0,
2757            hours = normalizedInput.hour || 0,
2758            minutes = normalizedInput.minute || 0,
2759            seconds = normalizedInput.second || 0,
2760            milliseconds = normalizedInput.millisecond || 0;
2761
2762        this._isValid = isDurationValid(normalizedInput);
2763
2764        // representation for dateAddRemove
2765        this._milliseconds = +milliseconds +
2766            seconds * 1e3 + // 1000
2767            minutes * 6e4 + // 1000 * 60
2768            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
2769        // Because of dateAddRemove treats 24 hours as different from a
2770        // day when working around DST, we need to store them separately
2771        this._days = +days +
2772            weeks * 7;
2773        // It is impossible to translate months into days without knowing
2774        // which months you are are talking about, so we have to store
2775        // it separately.
2776        this._months = +months +
2777            quarters * 3 +
2778            years * 12;
2779
2780        this._data = {};
2781
2782        this._locale = getLocale();
2783
2784        this._bubble();
2785    }
2786
2787    function isDuration (obj) {
2788        return obj instanceof Duration;
2789    }
2790
2791    function absRound (number) {
2792        if (number < 0) {
2793            return Math.round(-1 * number) * -1;
2794        } else {
2795            return Math.round(number);
2796        }
2797    }
2798
2799    // FORMATTING
2800
2801    function offset (token, separator) {
2802        addFormatToken(token, 0, 0, function () {
2803            var offset = this.utcOffset();
2804            var sign = '+';
2805            if (offset < 0) {
2806                offset = -offset;
2807                sign = '-';
2808            }
2809            return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
2810        });
2811    }
2812
2813    offset('Z', ':');
2814    offset('ZZ', '');
2815
2816    // PARSING
2817
2818    addRegexToken('Z',  matchShortOffset);
2819    addRegexToken('ZZ', matchShortOffset);
2820    addParseToken(['Z', 'ZZ'], function (input, array, config) {
2821        config._useUTC = true;
2822        config._tzm = offsetFromString(matchShortOffset, input);
2823    });
2824
2825    // HELPERS
2826
2827    // timezone chunker
2828    // '+10:00' > ['10',  '00']
2829    // '-1530'  > ['-15', '30']
2830    var chunkOffset = /([\+\-]|\d\d)/gi;
2831
2832    function offsetFromString(matcher, string) {
2833        var matches = (string || '').match(matcher);
2834
2835        if (matches === null) {
2836            return null;
2837        }
2838
2839        var chunk   = matches[matches.length - 1] || [];
2840        var parts   = (chunk + '').match(chunkOffset) || ['-', 0, 0];
2841        var minutes = +(parts[1] * 60) + toInt(parts[2]);
2842
2843        return minutes === 0 ?
2844          0 :
2845          parts[0] === '+' ? minutes : -minutes;
2846    }
2847
2848    // Return a moment from input, that is local/utc/zone equivalent to model.
2849    function cloneWithOffset(input, model) {
2850        var res, diff;
2851        if (model._isUTC) {
2852            res = model.clone();
2853            diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
2854            // Use low-level api, because this fn is low-level api.
2855            res._d.setTime(res._d.valueOf() + diff);
2856            hooks.updateOffset(res, false);
2857            return res;
2858        } else {
2859            return createLocal(input).local();
2860        }
2861    }
2862
2863    function getDateOffset (m) {
2864        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
2865        // https://github.com/moment/moment/pull/1871
2866        return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
2867    }
2868
2869    // HOOKS
2870
2871    // This function will be called whenever a moment is mutated.
2872    // It is intended to keep the offset in sync with the timezone.
2873    hooks.updateOffset = function () {};
2874
2875    // MOMENTS
2876
2877    // keepLocalTime = true means only change the timezone, without
2878    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
2879    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
2880    // +0200, so we adjust the time as needed, to be valid.
2881    //
2882    // Keeping the time actually adds/subtracts (one hour)
2883    // from the actual represented time. That is why we call updateOffset
2884    // a second time. In case it wants us to change the offset again
2885    // _changeInProgress == true case, then we have to adjust, because
2886    // there is no such time in the given timezone.
2887    function getSetOffset (input, keepLocalTime, keepMinutes) {
2888        var offset = this._offset || 0,
2889            localAdjust;
2890        if (!this.isValid()) {
2891            return input != null ? this : NaN;
2892        }
2893        if (input != null) {
2894            if (typeof input === 'string') {
2895                input = offsetFromString(matchShortOffset, input);
2896                if (input === null) {
2897                    return this;
2898                }
2899            } else if (Math.abs(input) < 16 && !keepMinutes) {
2900                input = input * 60;
2901            }
2902            if (!this._isUTC && keepLocalTime) {
2903                localAdjust = getDateOffset(this);
2904            }
2905            this._offset = input;
2906            this._isUTC = true;
2907            if (localAdjust != null) {
2908                this.add(localAdjust, 'm');
2909            }
2910            if (offset !== input) {
2911                if (!keepLocalTime || this._changeInProgress) {
2912                    addSubtract(this, createDuration(input - offset, 'm'), 1, false);
2913                } else if (!this._changeInProgress) {
2914                    this._changeInProgress = true;
2915                    hooks.updateOffset(this, true);
2916                    this._changeInProgress = null;
2917                }
2918            }
2919            return this;
2920        } else {
2921            return this._isUTC ? offset : getDateOffset(this);
2922        }
2923    }
2924
2925    function getSetZone (input, keepLocalTime) {
2926        if (input != null) {
2927            if (typeof input !== 'string') {
2928                input = -input;
2929            }
2930
2931            this.utcOffset(input, keepLocalTime);
2932
2933            return this;
2934        } else {
2935            return -this.utcOffset();
2936        }
2937    }
2938
2939    function setOffsetToUTC (keepLocalTime) {
2940        return this.utcOffset(0, keepLocalTime);
2941    }
2942
2943    function setOffsetToLocal (keepLocalTime) {
2944        if (this._isUTC) {
2945            this.utcOffset(0, keepLocalTime);
2946            this._isUTC = false;
2947
2948            if (keepLocalTime) {
2949                this.subtract(getDateOffset(this), 'm');
2950            }
2951        }
2952        return this;
2953    }
2954
2955    function setOffsetToParsedOffset () {
2956        if (this._tzm != null) {
2957            this.utcOffset(this._tzm, false, true);
2958        } else if (typeof this._i === 'string') {
2959            var tZone = offsetFromString(matchOffset, this._i);
2960            if (tZone != null) {
2961                this.utcOffset(tZone);
2962            }
2963            else {
2964                this.utcOffset(0, true);
2965            }
2966        }
2967        return this;
2968    }
2969
2970    function hasAlignedHourOffset (input) {
2971        if (!this.isValid()) {
2972            return false;
2973        }
2974        input = input ? createLocal(input).utcOffset() : 0;
2975
2976        return (this.utcOffset() - input) % 60 === 0;
2977    }
2978
2979    function isDaylightSavingTime () {
2980        return (
2981            this.utcOffset() > this.clone().month(0).utcOffset() ||
2982            this.utcOffset() > this.clone().month(5).utcOffset()
2983        );
2984    }
2985
2986    function isDaylightSavingTimeShifted () {
2987        if (!isUndefined(this._isDSTShifted)) {
2988            return this._isDSTShifted;
2989        }
2990
2991        var c = {};
2992
2993        copyConfig(c, this);
2994        c = prepareConfig(c);
2995
2996        if (c._a) {
2997            var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
2998            this._isDSTShifted = this.isValid() &&
2999                compareArrays(c._a, other.toArray()) > 0;
3000        } else {
3001            this._isDSTShifted = false;
3002        }
3003
3004        return this._isDSTShifted;
3005    }
3006
3007    function isLocal () {
3008        return this.isValid() ? !this._isUTC : false;
3009    }
3010
3011    function isUtcOffset () {
3012        return this.isValid() ? this._isUTC : false;
3013    }
3014
3015    function isUtc () {
3016        return this.isValid() ? this._isUTC && this._offset === 0 : false;
3017    }
3018
3019    // ASP.NET json date format regex
3020    var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;
3021
3022    // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
3023    // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
3024    // and further modified to allow for strings containing both week and day
3025    var isoRegex = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;
3026
3027    function createDuration (input, key) {
3028        var duration = input,
3029            // matching against regexp is expensive, do it on demand
3030            match = null,
3031            sign,
3032            ret,
3033            diffRes;
3034
3035        if (isDuration(input)) {
3036            duration = {
3037                ms : input._milliseconds,
3038                d  : input._days,
3039                M  : input._months
3040            };
3041        } else if (isNumber(input)) {
3042            duration = {};
3043            if (key) {
3044                duration[key] = input;
3045            } else {
3046                duration.milliseconds = input;
3047            }
3048        } else if (!!(match = aspNetRegex.exec(input))) {
3049            sign = (match[1] === '-') ? -1 : 1;
3050            duration = {
3051                y  : 0,
3052                d  : toInt(match[DATE])                         * sign,
3053                h  : toInt(match[HOUR])                         * sign,
3054                m  : toInt(match[MINUTE])                       * sign,
3055                s  : toInt(match[SECOND])                       * sign,
3056                ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match
3057            };
3058        } else if (!!(match = isoRegex.exec(input))) {
3059            sign = (match[1] === '-') ? -1 : 1;
3060            duration = {
3061                y : parseIso(match[2], sign),
3062                M : parseIso(match[3], sign),
3063                w : parseIso(match[4], sign),
3064                d : parseIso(match[5], sign),
3065                h : parseIso(match[6], sign),
3066                m : parseIso(match[7], sign),
3067                s : parseIso(match[8], sign)
3068            };
3069        } else if (duration == null) {// checks for null or undefined
3070            duration = {};
3071        } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
3072            diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));
3073
3074            duration = {};
3075            duration.ms = diffRes.milliseconds;
3076            duration.M = diffRes.months;
3077        }
3078
3079        ret = new Duration(duration);
3080
3081        if (isDuration(input) && hasOwnProp(input, '_locale')) {
3082            ret._locale = input._locale;
3083        }
3084
3085        return ret;
3086    }
3087
3088    createDuration.fn = Duration.prototype;
3089    createDuration.invalid = createInvalid$1;
3090
3091    function parseIso (inp, sign) {
3092        // We'd normally use ~~inp for this, but unfortunately it also
3093        // converts floats to ints.
3094        // inp may be undefined, so careful calling replace on it.
3095        var res = inp && parseFloat(inp.replace(',', '.'));
3096        // apply sign while we're at it
3097        return (isNaN(res) ? 0 : res) * sign;
3098    }
3099
3100    function positiveMomentsDifference(base, other) {
3101        var res = {};
3102
3103        res.months = other.month() - base.month() +
3104            (other.year() - base.year()) * 12;
3105        if (base.clone().add(res.months, 'M').isAfter(other)) {
3106            --res.months;
3107        }
3108
3109        res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
3110
3111        return res;
3112    }
3113
3114    function momentsDifference(base, other) {
3115        var res;
3116        if (!(base.isValid() && other.isValid())) {
3117            return {milliseconds: 0, months: 0};
3118        }
3119
3120        other = cloneWithOffset(other, base);
3121        if (base.isBefore(other)) {
3122            res = positiveMomentsDifference(base, other);
3123        } else {
3124            res = positiveMomentsDifference(other, base);
3125            res.milliseconds = -res.milliseconds;
3126            res.months = -res.months;
3127        }
3128
3129        return res;
3130    }
3131
3132    // TODO: remove 'name' arg after deprecation is removed
3133    function createAdder(direction, name) {
3134        return function (val, period) {
3135            var dur, tmp;
3136            //invert the arguments, but complain about it
3137            if (period !== null && !isNaN(+period)) {
3138                deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +
3139                'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');
3140                tmp = val; val = period; period = tmp;
3141            }
3142
3143            val = typeof val === 'string' ? +val : val;
3144            dur = createDuration(val, period);
3145            addSubtract(this, dur, direction);
3146            return this;
3147        };
3148    }
3149
3150    function addSubtract (mom, duration, isAdding, updateOffset) {
3151        var milliseconds = duration._milliseconds,
3152            days = absRound(duration._days),
3153            months = absRound(duration._months);
3154
3155        if (!mom.isValid()) {
3156            // No op
3157            return;
3158        }
3159
3160        updateOffset = updateOffset == null ? true : updateOffset;
3161
3162        if (months) {
3163            setMonth(mom, get(mom, 'Month') + months * isAdding);
3164        }
3165        if (days) {
3166            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
3167        }
3168        if (milliseconds) {
3169            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
3170        }
3171        if (updateOffset) {
3172            hooks.updateOffset(mom, days || months);
3173        }
3174    }
3175
3176    var add      = createAdder(1, 'add');
3177    var subtract = createAdder(-1, 'subtract');
3178
3179    function getCalendarFormat(myMoment, now) {
3180        var diff = myMoment.diff(now, 'days', true);
3181        return diff < -6 ? 'sameElse' :
3182                diff < -1 ? 'lastWeek' :
3183                diff < 0 ? 'lastDay' :
3184                diff < 1 ? 'sameDay' :
3185                diff < 2 ? 'nextDay' :
3186                diff < 7 ? 'nextWeek' : 'sameElse';
3187    }
3188
3189    function calendar$1 (time, formats) {
3190        // We want to compare the start of today, vs this.
3191        // Getting start-of-today depends on whether we're local/utc/offset or not.
3192        var now = time || createLocal(),
3193            sod = cloneWithOffset(now, this).startOf('day'),
3194            format = hooks.calendarFormat(this, sod) || 'sameElse';
3195
3196        var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
3197
3198        return this.format(output || this.localeData().calendar(format, this, createLocal(now)));
3199    }
3200
3201    function clone () {
3202        return new Moment(this);
3203    }
3204
3205    function isAfter (input, units) {
3206        var localInput = isMoment(input) ? input : createLocal(input);
3207        if (!(this.isValid() && localInput.isValid())) {
3208            return false;
3209        }
3210        units = normalizeUnits(units) || 'millisecond';
3211        if (units === 'millisecond') {
3212            return this.valueOf() > localInput.valueOf();
3213        } else {
3214            return localInput.valueOf() < this.clone().startOf(units).valueOf();
3215        }
3216    }
3217
3218    function isBefore (input, units) {
3219        var localInput = isMoment(input) ? input : createLocal(input);
3220        if (!(this.isValid() && localInput.isValid())) {
3221            return false;
3222        }
3223        units = normalizeUnits(units) || 'millisecond';
3224        if (units === 'millisecond') {
3225            return this.valueOf() < localInput.valueOf();
3226        } else {
3227            return this.clone().endOf(units).valueOf() < localInput.valueOf();
3228        }
3229    }
3230
3231    function isBetween (from, to, units, inclusivity) {
3232        var localFrom = isMoment(from) ? from : createLocal(from),
3233            localTo = isMoment(to) ? to : createLocal(to);
3234        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
3235            return false;
3236        }
3237        inclusivity = inclusivity || '()';
3238        return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&
3239            (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));
3240    }
3241
3242    function isSame (input, units) {
3243        var localInput = isMoment(input) ? input : createLocal(input),
3244            inputMs;
3245        if (!(this.isValid() && localInput.isValid())) {
3246            return false;
3247        }
3248        units = normalizeUnits(units) || 'millisecond';
3249        if (units === 'millisecond') {
3250            return this.valueOf() === localInput.valueOf();
3251        } else {
3252            inputMs = localInput.valueOf();
3253            return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
3254        }
3255    }
3256
3257    function isSameOrAfter (input, units) {
3258        return this.isSame(input, units) || this.isAfter(input, units);
3259    }
3260
3261    function isSameOrBefore (input, units) {
3262        return this.isSame(input, units) || this.isBefore(input, units);
3263    }
3264
3265    function diff (input, units, asFloat) {
3266        var that,
3267            zoneDelta,
3268            output;
3269
3270        if (!this.isValid()) {
3271            return NaN;
3272        }
3273
3274        that = cloneWithOffset(input, this);
3275
3276        if (!that.isValid()) {
3277            return NaN;
3278        }
3279
3280        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
3281
3282        units = normalizeUnits(units);
3283
3284        switch (units) {
3285            case 'year': output = monthDiff(this, that) / 12; break;
3286            case 'month': output = monthDiff(this, that); break;
3287            case 'quarter': output = monthDiff(this, that) / 3; break;
3288            case 'second': output = (this - that) / 1e3; break; // 1000
3289            case 'minute': output = (this - that) / 6e4; break; // 1000 * 60
3290            case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60
3291            case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst
3292            case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst
3293            default: output = this - that;
3294        }
3295
3296        return asFloat ? output : absFloor(output);
3297    }
3298
3299    function monthDiff (a, b) {
3300        // difference in months
3301        var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
3302            // b is in (anchor - 1 month, anchor + 1 month)
3303            anchor = a.clone().add(wholeMonthDiff, 'months'),
3304            anchor2, adjust;
3305
3306        if (b - anchor < 0) {
3307            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
3308            // linear across the month
3309            adjust = (b - anchor) / (anchor - anchor2);
3310        } else {
3311            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
3312            // linear across the month
3313            adjust = (b - anchor) / (anchor2 - anchor);
3314        }
3315
3316        //check for negative zero, return zero if negative zero
3317        return -(wholeMonthDiff + adjust) || 0;
3318    }
3319
3320    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
3321    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
3322
3323    function toString () {
3324        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
3325    }
3326
3327    function toISOString(keepOffset) {
3328        if (!this.isValid()) {
3329            return null;
3330        }
3331        var utc = keepOffset !== true;
3332        var m = utc ? this.clone().utc() : this;
3333        if (m.year() < 0 || m.year() > 9999) {
3334            return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');
3335        }
3336        if (isFunction(Date.prototype.toISOString)) {
3337            // native implementation is ~50x faster, use it when we can
3338            if (utc) {
3339                return this.toDate().toISOString();
3340            } else {
3341                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));
3342            }
3343        }
3344        return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');
3345    }
3346
3347    /**
3348     * Return a human readable representation of a moment that can
3349     * also be evaluated to get a new moment which is the same
3350     *
3351     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
3352     */
3353    function inspect () {
3354        if (!this.isValid()) {
3355            return 'moment.invalid(/* ' + this._i + ' */)';
3356        }
3357        var func = 'moment';
3358        var zone = '';
3359        if (!this.isLocal()) {
3360            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
3361            zone = 'Z';
3362        }
3363        var prefix = '[' + func + '("]';
3364        var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
3365        var datetime = '-MM-DD[T]HH:mm:ss.SSS';
3366        var suffix = zone + '[")]';
3367
3368        return this.format(prefix + year + datetime + suffix);
3369    }
3370
3371    function format (inputString) {
3372        if (!inputString) {
3373            inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
3374        }
3375        var output = formatMoment(this, inputString);
3376        return this.localeData().postformat(output);
3377    }
3378
3379    function from (time, withoutSuffix) {
3380        if (this.isValid() &&
3381                ((isMoment(time) && time.isValid()) ||
3382                 createLocal(time).isValid())) {
3383            return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
3384        } else {
3385            return this.localeData().invalidDate();
3386        }
3387    }
3388
3389    function fromNow (withoutSuffix) {
3390        return this.from(createLocal(), withoutSuffix);
3391    }
3392
3393    function to (time, withoutSuffix) {
3394        if (this.isValid() &&
3395                ((isMoment(time) && time.isValid()) ||
3396                 createLocal(time).isValid())) {
3397            return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
3398        } else {
3399            return this.localeData().invalidDate();
3400        }
3401    }
3402
3403    function toNow (withoutSuffix) {
3404        return this.to(createLocal(), withoutSuffix);
3405    }
3406
3407    // If passed a locale key, it will set the locale for this
3408    // instance.  Otherwise, it will return the locale configuration
3409    // variables for this instance.
3410    function locale (key) {
3411        var newLocaleData;
3412
3413        if (key === undefined) {
3414            return this._locale._abbr;
3415        } else {
3416            newLocaleData = getLocale(key);
3417            if (newLocaleData != null) {
3418                this._locale = newLocaleData;
3419            }
3420            return this;
3421        }
3422    }
3423
3424    var lang = deprecate(
3425        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
3426        function (key) {
3427            if (key === undefined) {
3428                return this.localeData();
3429            } else {
3430                return this.locale(key);
3431            }
3432        }
3433    );
3434
3435    function localeData () {
3436        return this._locale;
3437    }
3438
3439    var MS_PER_SECOND = 1000;
3440    var MS_PER_MINUTE = 60 * MS_PER_SECOND;
3441    var MS_PER_HOUR = 60 * MS_PER_MINUTE;
3442    var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
3443
3444    // actual modulo - handles negative numbers (for dates before 1970):
3445    function mod$1(dividend, divisor) {
3446        return (dividend % divisor + divisor) % divisor;
3447    }
3448
3449    function localStartOfDate(y, m, d) {
3450        // the date constructor remaps years 0-99 to 1900-1999
3451        if (y < 100 && y >= 0) {
3452            // preserve leap years using a full 400 year cycle, then reset
3453            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
3454        } else {
3455            return new Date(y, m, d).valueOf();
3456        }
3457    }
3458
3459    function utcStartOfDate(y, m, d) {
3460        // Date.UTC remaps years 0-99 to 1900-1999
3461        if (y < 100 && y >= 0) {
3462            // preserve leap years using a full 400 year cycle, then reset
3463            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
3464        } else {
3465            return Date.UTC(y, m, d);
3466        }
3467    }
3468
3469    function startOf (units) {
3470        var time;
3471        units = normalizeUnits(units);
3472        if (units === undefined || units === 'millisecond' || !this.isValid()) {
3473            return this;
3474        }
3475
3476        var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
3477
3478        switch (units) {
3479            case 'year':
3480                time = startOfDate(this.year(), 0, 1);
3481                break;
3482            case 'quarter':
3483                time = startOfDate(this.year(), this.month() - this.month() % 3, 1);
3484                break;
3485            case 'month':
3486                time = startOfDate(this.year(), this.month(), 1);
3487                break;
3488            case 'week':
3489                time = startOfDate(this.year(), this.month(), this.date() - this.weekday());
3490                break;
3491            case 'isoWeek':
3492                time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));
3493                break;
3494            case 'day':
3495            case 'date':
3496                time = startOfDate(this.year(), this.month(), this.date());
3497                break;
3498            case 'hour':
3499                time = this._d.valueOf();
3500                time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);
3501                break;
3502            case 'minute':
3503                time = this._d.valueOf();
3504                time -= mod$1(time, MS_PER_MINUTE);
3505                break;
3506            case 'second':
3507                time = this._d.valueOf();
3508                time -= mod$1(time, MS_PER_SECOND);
3509                break;
3510        }
3511
3512        this._d.setTime(time);
3513        hooks.updateOffset(this, true);
3514        return this;
3515    }
3516
3517    function endOf (units) {
3518        var time;
3519        units = normalizeUnits(units);
3520        if (units === undefined || units === 'millisecond' || !this.isValid()) {
3521            return this;
3522        }
3523
3524        var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
3525
3526        switch (units) {
3527            case 'year':
3528                time = startOfDate(this.year() + 1, 0, 1) - 1;
3529                break;
3530            case 'quarter':
3531                time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;
3532                break;
3533            case 'month':
3534                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
3535                break;
3536            case 'week':
3537                time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;
3538                break;
3539            case 'isoWeek':
3540                time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;
3541                break;
3542            case 'day':
3543            case 'date':
3544                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
3545                break;
3546            case 'hour':
3547                time = this._d.valueOf();
3548                time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;
3549                break;
3550            case 'minute':
3551                time = this._d.valueOf();
3552                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
3553                break;
3554            case 'second':
3555                time = this._d.valueOf();
3556                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
3557                break;
3558        }
3559
3560        this._d.setTime(time);
3561        hooks.updateOffset(this, true);
3562        return this;
3563    }
3564
3565    function valueOf () {
3566        return this._d.valueOf() - ((this._offset || 0) * 60000);
3567    }
3568
3569    function unix () {
3570        return Math.floor(this.valueOf() / 1000);
3571    }
3572
3573    function toDate () {
3574        return new Date(this.valueOf());
3575    }
3576
3577    function toArray () {
3578        var m = this;
3579        return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
3580    }
3581
3582    function toObject () {
3583        var m = this;
3584        return {
3585            years: m.year(),
3586            months: m.month(),
3587            date: m.date(),
3588            hours: m.hours(),
3589            minutes: m.minutes(),
3590            seconds: m.seconds(),
3591            milliseconds: m.milliseconds()
3592        };
3593    }
3594
3595    function toJSON () {
3596        // new Date(NaN).toJSON() === null
3597        return this.isValid() ? this.toISOString() : null;
3598    }
3599
3600    function isValid$2 () {
3601        return isValid(this);
3602    }
3603
3604    function parsingFlags () {
3605        return extend({}, getParsingFlags(this));
3606    }
3607
3608    function invalidAt () {
3609        return getParsingFlags(this).overflow;
3610    }
3611
3612    function creationData() {
3613        return {
3614            input: this._i,
3615            format: this._f,
3616            locale: this._locale,
3617            isUTC: this._isUTC,
3618            strict: this._strict
3619        };
3620    }
3621
3622    // FORMATTING
3623
3624    addFormatToken(0, ['gg', 2], 0, function () {
3625        return this.weekYear() % 100;
3626    });
3627
3628    addFormatToken(0, ['GG', 2], 0, function () {
3629        return this.isoWeekYear() % 100;
3630    });
3631
3632    function addWeekYearFormatToken (token, getter) {
3633        addFormatToken(0, [token, token.length], 0, getter);
3634    }
3635
3636    addWeekYearFormatToken('gggg',     'weekYear');
3637    addWeekYearFormatToken('ggggg',    'weekYear');
3638    addWeekYearFormatToken('GGGG',  'isoWeekYear');
3639    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
3640
3641    // ALIASES
3642
3643    addUnitAlias('weekYear', 'gg');
3644    addUnitAlias('isoWeekYear', 'GG');
3645
3646    // PRIORITY
3647
3648    addUnitPriority('weekYear', 1);
3649    addUnitPriority('isoWeekYear', 1);
3650
3651
3652    // PARSING
3653
3654    addRegexToken('G',      matchSigned);
3655    addRegexToken('g',      matchSigned);
3656    addRegexToken('GG',     match1to2, match2);
3657    addRegexToken('gg',     match1to2, match2);
3658    addRegexToken('GGGG',   match1to4, match4);
3659    addRegexToken('gggg',   match1to4, match4);
3660    addRegexToken('GGGGG',  match1to6, match6);
3661    addRegexToken('ggggg',  match1to6, match6);
3662
3663    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
3664        week[token.substr(0, 2)] = toInt(input);
3665    });
3666
3667    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
3668        week[token] = hooks.parseTwoDigitYear(input);
3669    });
3670
3671    // MOMENTS
3672
3673    function getSetWeekYear (input) {
3674        return getSetWeekYearHelper.call(this,
3675                input,
3676                this.week(),
3677                this.weekday(),
3678                this.localeData()._week.dow,
3679                this.localeData()._week.doy);
3680    }
3681
3682    function getSetISOWeekYear (input) {
3683        return getSetWeekYearHelper.call(this,
3684                input, this.isoWeek(), this.isoWeekday(), 1, 4);
3685    }
3686
3687    function getISOWeeksInYear () {
3688        return weeksInYear(this.year(), 1, 4);
3689    }
3690
3691    function getWeeksInYear () {
3692        var weekInfo = this.localeData()._week;
3693        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
3694    }
3695
3696    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
3697        var weeksTarget;
3698        if (input == null) {
3699            return weekOfYear(this, dow, doy).year;
3700        } else {
3701            weeksTarget = weeksInYear(input, dow, doy);
3702            if (week > weeksTarget) {
3703                week = weeksTarget;
3704            }
3705            return setWeekAll.call(this, input, week, weekday, dow, doy);
3706        }
3707    }
3708
3709    function setWeekAll(weekYear, week, weekday, dow, doy) {
3710        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
3711            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
3712
3713        this.year(date.getUTCFullYear());
3714        this.month(date.getUTCMonth());
3715        this.date(date.getUTCDate());
3716        return this;
3717    }
3718
3719    // FORMATTING
3720
3721    addFormatToken('Q', 0, 'Qo', 'quarter');
3722
3723    // ALIASES
3724
3725    addUnitAlias('quarter', 'Q');
3726
3727    // PRIORITY
3728
3729    addUnitPriority('quarter', 7);
3730
3731    // PARSING
3732
3733    addRegexToken('Q', match1);
3734    addParseToken('Q', function (input, array) {
3735        array[MONTH] = (toInt(input) - 1) * 3;
3736    });
3737
3738    // MOMENTS
3739
3740    function getSetQuarter (input) {
3741        return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
3742    }
3743
3744    // FORMATTING
3745
3746    addFormatToken('D', ['DD', 2], 'Do', 'date');
3747
3748    // ALIASES
3749
3750    addUnitAlias('date', 'D');
3751
3752    // PRIORITY
3753    addUnitPriority('date', 9);
3754
3755    // PARSING
3756
3757    addRegexToken('D',  match1to2);
3758    addRegexToken('DD', match1to2, match2);
3759    addRegexToken('Do', function (isStrict, locale) {
3760        // TODO: Remove "ordinalParse" fallback in next major release.
3761        return isStrict ?
3762          (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :
3763          locale._dayOfMonthOrdinalParseLenient;
3764    });
3765
3766    addParseToken(['D', 'DD'], DATE);
3767    addParseToken('Do', function (input, array) {
3768        array[DATE] = toInt(input.match(match1to2)[0]);
3769    });
3770
3771    // MOMENTS
3772
3773    var getSetDayOfMonth = makeGetSet('Date', true);
3774
3775    // FORMATTING
3776
3777    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
3778
3779    // ALIASES
3780
3781    addUnitAlias('dayOfYear', 'DDD');
3782
3783    // PRIORITY
3784    addUnitPriority('dayOfYear', 4);
3785
3786    // PARSING
3787
3788    addRegexToken('DDD',  match1to3);
3789    addRegexToken('DDDD', match3);
3790    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
3791        config._dayOfYear = toInt(input);
3792    });
3793
3794    // HELPERS
3795
3796    // MOMENTS
3797
3798    function getSetDayOfYear (input) {
3799        var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
3800        return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
3801    }
3802
3803    // FORMATTING
3804
3805    addFormatToken('m', ['mm', 2], 0, 'minute');
3806
3807    // ALIASES
3808
3809    addUnitAlias('minute', 'm');
3810
3811    // PRIORITY
3812
3813    addUnitPriority('minute', 14);
3814
3815    // PARSING
3816
3817    addRegexToken('m',  match1to2);
3818    addRegexToken('mm', match1to2, match2);
3819    addParseToken(['m', 'mm'], MINUTE);
3820
3821    // MOMENTS
3822
3823    var getSetMinute = makeGetSet('Minutes', false);
3824
3825    // FORMATTING
3826
3827    addFormatToken('s', ['ss', 2], 0, 'second');
3828
3829    // ALIASES
3830
3831    addUnitAlias('second', 's');
3832
3833    // PRIORITY
3834
3835    addUnitPriority('second', 15);
3836
3837    // PARSING
3838
3839    addRegexToken('s',  match1to2);
3840    addRegexToken('ss', match1to2, match2);
3841    addParseToken(['s', 'ss'], SECOND);
3842
3843    // MOMENTS
3844
3845    var getSetSecond = makeGetSet('Seconds', false);
3846
3847    // FORMATTING
3848
3849    addFormatToken('S', 0, 0, function () {
3850        return ~~(this.millisecond() / 100);
3851    });
3852
3853    addFormatToken(0, ['SS', 2], 0, function () {
3854        return ~~(this.millisecond() / 10);
3855    });
3856
3857    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
3858    addFormatToken(0, ['SSSS', 4], 0, function () {
3859        return this.millisecond() * 10;
3860    });
3861    addFormatToken(0, ['SSSSS', 5], 0, function () {
3862        return this.millisecond() * 100;
3863    });
3864    addFormatToken(0, ['SSSSSS', 6], 0, function () {
3865        return this.millisecond() * 1000;
3866    });
3867    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
3868        return this.millisecond() * 10000;
3869    });
3870    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
3871        return this.millisecond() * 100000;
3872    });
3873    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
3874        return this.millisecond() * 1000000;
3875    });
3876
3877
3878    // ALIASES
3879
3880    addUnitAlias('millisecond', 'ms');
3881
3882    // PRIORITY
3883
3884    addUnitPriority('millisecond', 16);
3885
3886    // PARSING
3887
3888    addRegexToken('S',    match1to3, match1);
3889    addRegexToken('SS',   match1to3, match2);
3890    addRegexToken('SSS',  match1to3, match3);
3891
3892    var token;
3893    for (token = 'SSSS'; token.length <= 9; token += 'S') {
3894        addRegexToken(token, matchUnsigned);
3895    }
3896
3897    function parseMs(input, array) {
3898        array[MILLISECOND] = toInt(('0.' + input) * 1000);
3899    }
3900
3901    for (token = 'S'; token.length <= 9; token += 'S') {
3902        addParseToken(token, parseMs);
3903    }
3904    // MOMENTS
3905
3906    var getSetMillisecond = makeGetSet('Milliseconds', false);
3907
3908    // FORMATTING
3909
3910    addFormatToken('z',  0, 0, 'zoneAbbr');
3911    addFormatToken('zz', 0, 0, 'zoneName');
3912
3913    // MOMENTS
3914
3915    function getZoneAbbr () {
3916        return this._isUTC ? 'UTC' : '';
3917    }
3918
3919    function getZoneName () {
3920        return this._isUTC ? 'Coordinated Universal Time' : '';
3921    }
3922
3923    var proto = Moment.prototype;
3924
3925    proto.add               = add;
3926    proto.calendar          = calendar$1;
3927    proto.clone             = clone;
3928    proto.diff              = diff;
3929    proto.endOf             = endOf;
3930    proto.format            = format;
3931    proto.from              = from;
3932    proto.fromNow           = fromNow;
3933    proto.to                = to;
3934    proto.toNow             = toNow;
3935    proto.get               = stringGet;
3936    proto.invalidAt         = invalidAt;
3937    proto.isAfter           = isAfter;
3938    proto.isBefore          = isBefore;
3939    proto.isBetween         = isBetween;
3940    proto.isSame            = isSame;
3941    proto.isSameOrAfter     = isSameOrAfter;
3942    proto.isSameOrBefore    = isSameOrBefore;
3943    proto.isValid           = isValid$2;
3944    proto.lang              = lang;
3945    proto.locale            = locale;
3946    proto.localeData        = localeData;
3947    proto.max               = prototypeMax;
3948    proto.min               = prototypeMin;
3949    proto.parsingFlags      = parsingFlags;
3950    proto.set               = stringSet;
3951    proto.startOf           = startOf;
3952    proto.subtract          = subtract;
3953    proto.toArray           = toArray;
3954    proto.toObject          = toObject;
3955    proto.toDate            = toDate;
3956    proto.toISOString       = toISOString;
3957    proto.inspect           = inspect;
3958    proto.toJSON            = toJSON;
3959    proto.toString          = toString;
3960    proto.unix              = unix;
3961    proto.valueOf           = valueOf;
3962    proto.creationData      = creationData;
3963    proto.year       = getSetYear;
3964    proto.isLeapYear = getIsLeapYear;
3965    proto.weekYear    = getSetWeekYear;
3966    proto.isoWeekYear = getSetISOWeekYear;
3967    proto.quarter = proto.quarters = getSetQuarter;
3968    proto.month       = getSetMonth;
3969    proto.daysInMonth = getDaysInMonth;
3970    proto.week           = proto.weeks        = getSetWeek;
3971    proto.isoWeek        = proto.isoWeeks     = getSetISOWeek;
3972    proto.weeksInYear    = getWeeksInYear;
3973    proto.isoWeeksInYear = getISOWeeksInYear;
3974    proto.date       = getSetDayOfMonth;
3975    proto.day        = proto.days             = getSetDayOfWeek;
3976    proto.weekday    = getSetLocaleDayOfWeek;
3977    proto.isoWeekday = getSetISODayOfWeek;
3978    proto.dayOfYear  = getSetDayOfYear;
3979    proto.hour = proto.hours = getSetHour;
3980    proto.minute = proto.minutes = getSetMinute;
3981    proto.second = proto.seconds = getSetSecond;
3982    proto.millisecond = proto.milliseconds = getSetMillisecond;
3983    proto.utcOffset            = getSetOffset;
3984    proto.utc                  = setOffsetToUTC;
3985    proto.local                = setOffsetToLocal;
3986    proto.parseZone            = setOffsetToParsedOffset;
3987    proto.hasAlignedHourOffset = hasAlignedHourOffset;
3988    proto.isDST                = isDaylightSavingTime;
3989    proto.isLocal              = isLocal;
3990    proto.isUtcOffset          = isUtcOffset;
3991    proto.isUtc                = isUtc;
3992    proto.isUTC                = isUtc;
3993    proto.zoneAbbr = getZoneAbbr;
3994    proto.zoneName = getZoneName;
3995    proto.dates  = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
3996    proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
3997    proto.years  = deprecate('years accessor is deprecated. Use year instead', getSetYear);
3998    proto.zone   = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);
3999    proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);
4000
4001    function createUnix (input) {
4002        return createLocal(input * 1000);
4003    }
4004
4005    function createInZone () {
4006        return createLocal.apply(null, arguments).parseZone();
4007    }
4008
4009    function preParsePostFormat (string) {
4010        return string;
4011    }
4012
4013    var proto$1 = Locale.prototype;
4014
4015    proto$1.calendar        = calendar;
4016    proto$1.longDateFormat  = longDateFormat;
4017    proto$1.invalidDate     = invalidDate;
4018    proto$1.ordinal         = ordinal;
4019    proto$1.preparse        = preParsePostFormat;
4020    proto$1.postformat      = preParsePostFormat;
4021    proto$1.relativeTime    = relativeTime;
4022    proto$1.pastFuture      = pastFuture;
4023    proto$1.set             = set;
4024
4025    proto$1.months            =        localeMonths;
4026    proto$1.monthsShort       =        localeMonthsShort;
4027    proto$1.monthsParse       =        localeMonthsParse;
4028    proto$1.monthsRegex       = monthsRegex;
4029    proto$1.monthsShortRegex  = monthsShortRegex;
4030    proto$1.week = localeWeek;
4031    proto$1.firstDayOfYear = localeFirstDayOfYear;
4032    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
4033
4034    proto$1.weekdays       =        localeWeekdays;
4035    proto$1.weekdaysMin    =        localeWeekdaysMin;
4036    proto$1.weekdaysShort  =        localeWeekdaysShort;
4037    proto$1.weekdaysParse  =        localeWeekdaysParse;
4038
4039    proto$1.weekdaysRegex       =        weekdaysRegex;
4040    proto$1.weekdaysShortRegex  =        weekdaysShortRegex;
4041    proto$1.weekdaysMinRegex    =        weekdaysMinRegex;
4042
4043    proto$1.isPM = localeIsPM;
4044    proto$1.meridiem = localeMeridiem;
4045
4046    function get$1 (format, index, field, setter) {
4047        var locale = getLocale();
4048        var utc = createUTC().set(setter, index);
4049        return locale[field](utc, format);
4050    }
4051
4052    function listMonthsImpl (format, index, field) {
4053        if (isNumber(format)) {
4054            index = format;
4055            format = undefined;
4056        }
4057
4058        format = format || '';
4059
4060        if (index != null) {
4061            return get$1(format, index, field, 'month');
4062        }
4063
4064        var i;
4065        var out = [];
4066        for (i = 0; i < 12; i++) {
4067            out[i] = get$1(format, i, field, 'month');
4068        }
4069        return out;
4070    }
4071
4072    // ()
4073    // (5)
4074    // (fmt, 5)
4075    // (fmt)
4076    // (true)
4077    // (true, 5)
4078    // (true, fmt, 5)
4079    // (true, fmt)
4080    function listWeekdaysImpl (localeSorted, format, index, field) {
4081        if (typeof localeSorted === 'boolean') {
4082            if (isNumber(format)) {
4083                index = format;
4084                format = undefined;
4085            }
4086
4087            format = format || '';
4088        } else {
4089            format = localeSorted;
4090            index = format;
4091            localeSorted = false;
4092
4093            if (isNumber(format)) {
4094                index = format;
4095                format = undefined;
4096            }
4097
4098            format = format || '';
4099        }
4100
4101        var locale = getLocale(),
4102            shift = localeSorted ? locale._week.dow : 0;
4103
4104        if (index != null) {
4105            return get$1(format, (index + shift) % 7, field, 'day');
4106        }
4107
4108        var i;
4109        var out = [];
4110        for (i = 0; i < 7; i++) {
4111            out[i] = get$1(format, (i + shift) % 7, field, 'day');
4112        }
4113        return out;
4114    }
4115
4116    function listMonths (format, index) {
4117        return listMonthsImpl(format, index, 'months');
4118    }
4119
4120    function listMonthsShort (format, index) {
4121        return listMonthsImpl(format, index, 'monthsShort');
4122    }
4123
4124    function listWeekdays (localeSorted, format, index) {
4125        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
4126    }
4127
4128    function listWeekdaysShort (localeSorted, format, index) {
4129        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
4130    }
4131
4132    function listWeekdaysMin (localeSorted, format, index) {
4133        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
4134    }
4135
4136    getSetGlobalLocale('en', {
4137        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
4138        ordinal : function (number) {
4139            var b = number % 10,
4140                output = (toInt(number % 100 / 10) === 1) ? 'th' :
4141                (b === 1) ? 'st' :
4142                (b === 2) ? 'nd' :
4143                (b === 3) ? 'rd' : 'th';
4144            return number + output;
4145        }
4146    });
4147
4148    // Side effect imports
4149
4150    hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);
4151    hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);
4152
4153    var mathAbs = Math.abs;
4154
4155    function abs () {
4156        var data           = this._data;
4157
4158        this._milliseconds = mathAbs(this._milliseconds);
4159        this._days         = mathAbs(this._days);
4160        this._months       = mathAbs(this._months);
4161
4162        data.milliseconds  = mathAbs(data.milliseconds);
4163        data.seconds       = mathAbs(data.seconds);
4164        data.minutes       = mathAbs(data.minutes);
4165        data.hours         = mathAbs(data.hours);
4166        data.months        = mathAbs(data.months);
4167        data.years         = mathAbs(data.years);
4168
4169        return this;
4170    }
4171
4172    function addSubtract$1 (duration, input, value, direction) {
4173        var other = createDuration(input, value);
4174
4175        duration._milliseconds += direction * other._milliseconds;
4176        duration._days         += direction * other._days;
4177        duration._months       += direction * other._months;
4178
4179        return duration._bubble();
4180    }
4181
4182    // supports only 2.0-style add(1, 's') or add(duration)
4183    function add$1 (input, value) {
4184        return addSubtract$1(this, input, value, 1);
4185    }
4186
4187    // supports only 2.0-style subtract(1, 's') or subtract(duration)
4188    function subtract$1 (input, value) {
4189        return addSubtract$1(this, input, value, -1);
4190    }
4191
4192    function absCeil (number) {
4193        if (number < 0) {
4194            return Math.floor(number);
4195        } else {
4196            return Math.ceil(number);
4197        }
4198    }
4199
4200    function bubble () {
4201        var milliseconds = this._milliseconds;
4202        var days         = this._days;
4203        var months       = this._months;
4204        var data         = this._data;
4205        var seconds, minutes, hours, years, monthsFromDays;
4206
4207        // if we have a mix of positive and negative values, bubble down first
4208        // check: https://github.com/moment/moment/issues/2166
4209        if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
4210                (milliseconds <= 0 && days <= 0 && months <= 0))) {
4211            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
4212            days = 0;
4213            months = 0;
4214        }
4215
4216        // The following code bubbles up values, see the tests for
4217        // examples of what that means.
4218        data.milliseconds = milliseconds % 1000;
4219
4220        seconds           = absFloor(milliseconds / 1000);
4221        data.seconds      = seconds % 60;
4222
4223        minutes           = absFloor(seconds / 60);
4224        data.minutes      = minutes % 60;
4225
4226        hours             = absFloor(minutes / 60);
4227        data.hours        = hours % 24;
4228
4229        days += absFloor(hours / 24);
4230
4231        // convert days to months
4232        monthsFromDays = absFloor(daysToMonths(days));
4233        months += monthsFromDays;
4234        days -= absCeil(monthsToDays(monthsFromDays));
4235
4236        // 12 months -> 1 year
4237        years = absFloor(months / 12);
4238        months %= 12;
4239
4240        data.days   = days;
4241        data.months = months;
4242        data.years  = years;
4243
4244        return this;
4245    }
4246
4247    function daysToMonths (days) {
4248        // 400 years have 146097 days (taking into account leap year rules)
4249        // 400 years have 12 months === 4800
4250        return days * 4800 / 146097;
4251    }
4252
4253    function monthsToDays (months) {
4254        // the reverse of daysToMonths
4255        return months * 146097 / 4800;
4256    }
4257
4258    function as (units) {
4259        if (!this.isValid()) {
4260            return NaN;
4261        }
4262        var days;
4263        var months;
4264        var milliseconds = this._milliseconds;
4265
4266        units = normalizeUnits(units);
4267
4268        if (units === 'month' || units === 'quarter' || units === 'year') {
4269            days = this._days + milliseconds / 864e5;
4270            months = this._months + daysToMonths(days);
4271            switch (units) {
4272                case 'month':   return months;
4273                case 'quarter': return months / 3;
4274                case 'year':    return months / 12;
4275            }
4276        } else {
4277            // handle milliseconds separately because of floating point math errors (issue #1867)
4278            days = this._days + Math.round(monthsToDays(this._months));
4279            switch (units) {
4280                case 'week'   : return days / 7     + milliseconds / 6048e5;
4281                case 'day'    : return days         + milliseconds / 864e5;
4282                case 'hour'   : return days * 24    + milliseconds / 36e5;
4283                case 'minute' : return days * 1440  + milliseconds / 6e4;
4284                case 'second' : return days * 86400 + milliseconds / 1000;
4285                // Math.floor prevents floating point math errors here
4286                case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
4287                default: throw new Error('Unknown unit ' + units);
4288            }
4289        }
4290    }
4291
4292    // TODO: Use this.as('ms')?
4293    function valueOf$1 () {
4294        if (!this.isValid()) {
4295            return NaN;
4296        }
4297        return (
4298            this._milliseconds +
4299            this._days * 864e5 +
4300            (this._months % 12) * 2592e6 +
4301            toInt(this._months / 12) * 31536e6
4302        );
4303    }
4304
4305    function makeAs (alias) {
4306        return function () {
4307            return this.as(alias);
4308        };
4309    }
4310
4311    var asMilliseconds = makeAs('ms');
4312    var asSeconds      = makeAs('s');
4313    var asMinutes      = makeAs('m');
4314    var asHours        = makeAs('h');
4315    var asDays         = makeAs('d');
4316    var asWeeks        = makeAs('w');
4317    var asMonths       = makeAs('M');
4318    var asQuarters     = makeAs('Q');
4319    var asYears        = makeAs('y');
4320
4321    function clone$1 () {
4322        return createDuration(this);
4323    }
4324
4325    function get$2 (units) {
4326        units = normalizeUnits(units);
4327        return this.isValid() ? this[units + 's']() : NaN;
4328    }
4329
4330    function makeGetter(name) {
4331        return function () {
4332            return this.isValid() ? this._data[name] : NaN;
4333        };
4334    }
4335
4336    var milliseconds = makeGetter('milliseconds');
4337    var seconds      = makeGetter('seconds');
4338    var minutes      = makeGetter('minutes');
4339    var hours        = makeGetter('hours');
4340    var days         = makeGetter('days');
4341    var months       = makeGetter('months');
4342    var years        = makeGetter('years');
4343
4344    function weeks () {
4345        return absFloor(this.days() / 7);
4346    }
4347
4348    var round = Math.round;
4349    var thresholds = {
4350        ss: 44,         // a few seconds to seconds
4351        s : 45,         // seconds to minute
4352        m : 45,         // minutes to hour
4353        h : 22,         // hours to day
4354        d : 26,         // days to month
4355        M : 11          // months to year
4356    };
4357
4358    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
4359    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
4360        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
4361    }
4362
4363    function relativeTime$1 (posNegDuration, withoutSuffix, locale) {
4364        var duration = createDuration(posNegDuration).abs();
4365        var seconds  = round(duration.as('s'));
4366        var minutes  = round(duration.as('m'));
4367        var hours    = round(duration.as('h'));
4368        var days     = round(duration.as('d'));
4369        var months   = round(duration.as('M'));
4370        var years    = round(duration.as('y'));
4371
4372        var a = seconds <= thresholds.ss && ['s', seconds]  ||
4373                seconds < thresholds.s   && ['ss', seconds] ||
4374                minutes <= 1             && ['m']           ||
4375                minutes < thresholds.m   && ['mm', minutes] ||
4376                hours   <= 1             && ['h']           ||
4377                hours   < thresholds.h   && ['hh', hours]   ||
4378                days    <= 1             && ['d']           ||
4379                days    < thresholds.d   && ['dd', days]    ||
4380                months  <= 1             && ['M']           ||
4381                months  < thresholds.M   && ['MM', months]  ||
4382                years   <= 1             && ['y']           || ['yy', years];
4383
4384        a[2] = withoutSuffix;
4385        a[3] = +posNegDuration > 0;
4386        a[4] = locale;
4387        return substituteTimeAgo.apply(null, a);
4388    }
4389
4390    // This function allows you to set the rounding function for relative time strings
4391    function getSetRelativeTimeRounding (roundingFunction) {
4392        if (roundingFunction === undefined) {
4393            return round;
4394        }
4395        if (typeof(roundingFunction) === 'function') {
4396            round = roundingFunction;
4397            return true;
4398        }
4399        return false;
4400    }
4401
4402    // This function allows you to set a threshold for relative time strings
4403    function getSetRelativeTimeThreshold (threshold, limit) {
4404        if (thresholds[threshold] === undefined) {
4405            return false;
4406        }
4407        if (limit === undefined) {
4408            return thresholds[threshold];
4409        }
4410        thresholds[threshold] = limit;
4411        if (threshold === 's') {
4412            thresholds.ss = limit - 1;
4413        }
4414        return true;
4415    }
4416
4417    function humanize (withSuffix) {
4418        if (!this.isValid()) {
4419            return this.localeData().invalidDate();
4420        }
4421
4422        var locale = this.localeData();
4423        var output = relativeTime$1(this, !withSuffix, locale);
4424
4425        if (withSuffix) {
4426            output = locale.pastFuture(+this, output);
4427        }
4428
4429        return locale.postformat(output);
4430    }
4431
4432    var abs$1 = Math.abs;
4433
4434    function sign(x) {
4435        return ((x > 0) - (x < 0)) || +x;
4436    }
4437
4438    function toISOString$1() {
4439        // for ISO strings we do not use the normal bubbling rules:
4440        //  * milliseconds bubble up until they become hours
4441        //  * days do not bubble at all
4442        //  * months bubble up until they become years
4443        // This is because there is no context-free conversion between hours and days
4444        // (think of clock changes)
4445        // and also not between days and months (28-31 days per month)
4446        if (!this.isValid()) {
4447            return this.localeData().invalidDate();
4448        }
4449
4450        var seconds = abs$1(this._milliseconds) / 1000;
4451        var days         = abs$1(this._days);
4452        var months       = abs$1(this._months);
4453        var minutes, hours, years;
4454
4455        // 3600 seconds -> 60 minutes -> 1 hour
4456        minutes           = absFloor(seconds / 60);
4457        hours             = absFloor(minutes / 60);
4458        seconds %= 60;
4459        minutes %= 60;
4460
4461        // 12 months -> 1 year
4462        years  = absFloor(months / 12);
4463        months %= 12;
4464
4465
4466        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
4467        var Y = years;
4468        var M = months;
4469        var D = days;
4470        var h = hours;
4471        var m = minutes;
4472        var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
4473        var total = this.asSeconds();
4474
4475        if (!total) {
4476            // this is the same as C#'s (Noda) and python (isodate)...
4477            // but not other JS (goog.date)
4478            return 'P0D';
4479        }
4480
4481        var totalSign = total < 0 ? '-' : '';
4482        var ymSign = sign(this._months) !== sign(total) ? '-' : '';
4483        var daysSign = sign(this._days) !== sign(total) ? '-' : '';
4484        var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
4485
4486        return totalSign + 'P' +
4487            (Y ? ymSign + Y + 'Y' : '') +
4488            (M ? ymSign + M + 'M' : '') +
4489            (D ? daysSign + D + 'D' : '') +
4490            ((h || m || s) ? 'T' : '') +
4491            (h ? hmsSign + h + 'H' : '') +
4492            (m ? hmsSign + m + 'M' : '') +
4493            (s ? hmsSign + s + 'S' : '');
4494    }
4495
4496    var proto$2 = Duration.prototype;
4497
4498    proto$2.isValid        = isValid$1;
4499    proto$2.abs            = abs;
4500    proto$2.add            = add$1;
4501    proto$2.subtract       = subtract$1;
4502    proto$2.as             = as;
4503    proto$2.asMilliseconds = asMilliseconds;
4504    proto$2.asSeconds      = asSeconds;
4505    proto$2.asMinutes      = asMinutes;
4506    proto$2.asHours        = asHours;
4507    proto$2.asDays         = asDays;
4508    proto$2.asWeeks        = asWeeks;
4509    proto$2.asMonths       = asMonths;
4510    proto$2.asQuarters     = asQuarters;
4511    proto$2.asYears        = asYears;
4512    proto$2.valueOf        = valueOf$1;
4513    proto$2._bubble        = bubble;
4514    proto$2.clone          = clone$1;
4515    proto$2.get            = get$2;
4516    proto$2.milliseconds   = milliseconds;
4517    proto$2.seconds        = seconds;
4518    proto$2.minutes        = minutes;
4519    proto$2.hours          = hours;
4520    proto$2.days           = days;
4521    proto$2.weeks          = weeks;
4522    proto$2.months         = months;
4523    proto$2.years          = years;
4524    proto$2.humanize       = humanize;
4525    proto$2.toISOString    = toISOString$1;
4526    proto$2.toString       = toISOString$1;
4527    proto$2.toJSON         = toISOString$1;
4528    proto$2.locale         = locale;
4529    proto$2.localeData     = localeData;
4530
4531    proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);
4532    proto$2.lang = lang;
4533
4534    // Side effect imports
4535
4536    // FORMATTING
4537
4538    addFormatToken('X', 0, 0, 'unix');
4539    addFormatToken('x', 0, 0, 'valueOf');
4540
4541    // PARSING
4542
4543    addRegexToken('x', matchSigned);
4544    addRegexToken('X', matchTimestamp);
4545    addParseToken('X', function (input, array, config) {
4546        config._d = new Date(parseFloat(input, 10) * 1000);
4547    });
4548    addParseToken('x', function (input, array, config) {
4549        config._d = new Date(toInt(input));
4550    });
4551
4552    // Side effect imports
4553
4554    //! moment.js
4555
4556    hooks.version = '2.24.0';
4557
4558    setHookCallback(createLocal);
4559
4560    hooks.fn                    = proto;
4561    hooks.min                   = min;
4562    hooks.max                   = max;
4563    hooks.now                   = now;
4564    hooks.utc                   = createUTC;
4565    hooks.unix                  = createUnix;
4566    hooks.months                = listMonths;
4567    hooks.isDate                = isDate;
4568    hooks.locale                = getSetGlobalLocale;
4569    hooks.invalid               = createInvalid;
4570    hooks.duration              = createDuration;
4571    hooks.isMoment              = isMoment;
4572    hooks.weekdays              = listWeekdays;
4573    hooks.parseZone             = createInZone;
4574    hooks.localeData            = getLocale;
4575    hooks.isDuration            = isDuration;
4576    hooks.monthsShort           = listMonthsShort;
4577    hooks.weekdaysMin           = listWeekdaysMin;
4578    hooks.defineLocale          = defineLocale;
4579    hooks.updateLocale          = updateLocale;
4580    hooks.locales               = listLocales;
4581    hooks.weekdaysShort         = listWeekdaysShort;
4582    hooks.normalizeUnits        = normalizeUnits;
4583    hooks.relativeTimeRounding  = getSetRelativeTimeRounding;
4584    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
4585    hooks.calendarFormat        = getCalendarFormat;
4586    hooks.prototype             = proto;
4587
4588    // currently HTML5 input type only supports 24-hour formats
4589    hooks.HTML5_FMT = {
4590        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',             // <input type="datetime-local" />
4591        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',  // <input type="datetime-local" step="1" />
4592        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',   // <input type="datetime-local" step="0.001" />
4593        DATE: 'YYYY-MM-DD',                             // <input type="date" />
4594        TIME: 'HH:mm',                                  // <input type="time" />
4595        TIME_SECONDS: 'HH:mm:ss',                       // <input type="time" step="1" />
4596        TIME_MS: 'HH:mm:ss.SSS',                        // <input type="time" step="0.001" />
4597        WEEK: 'GGGG-[W]WW',                             // <input type="week" />
4598        MONTH: 'YYYY-MM'                                // <input type="month" />
4599    };
4600
4601    //! moment.js locale configuration
4602
4603    hooks.defineLocale('af', {
4604        months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
4605        monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
4606        weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
4607        weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
4608        weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
4609        meridiemParse: /vm|nm/i,
4610        isPM : function (input) {
4611            return /^nm$/i.test(input);
4612        },
4613        meridiem : function (hours, minutes, isLower) {
4614            if (hours < 12) {
4615                return isLower ? 'vm' : 'VM';
4616            } else {
4617                return isLower ? 'nm' : 'NM';
4618            }
4619        },
4620        longDateFormat : {
4621            LT : 'HH:mm',
4622            LTS : 'HH:mm:ss',
4623            L : 'DD/MM/YYYY',
4624            LL : 'D MMMM YYYY',
4625            LLL : 'D MMMM YYYY HH:mm',
4626            LLLL : 'dddd, D MMMM YYYY HH:mm'
4627        },
4628        calendar : {
4629            sameDay : '[Vandag om] LT',
4630            nextDay : '[Môre om] LT',
4631            nextWeek : 'dddd [om] LT',
4632            lastDay : '[Gister om] LT',
4633            lastWeek : '[Laas] dddd [om] LT',
4634            sameElse : 'L'
4635        },
4636        relativeTime : {
vendor: 61,842 bytes, lines 4637-6222
4637            future : 'oor %s',
4638            past : '%s gelede',
4639            s : '\'n paar sekondes',
4640            ss : '%d sekondes',
4641            m : '\'n minuut',
4642            mm : '%d minute',
4643            h : '\'n uur',
4644            hh : '%d ure',
4645            d : '\'n dag',
4646            dd : '%d dae',
4647            M : '\'n maand',
4648            MM : '%d maande',
4649            y : '\'n jaar',
4650            yy : '%d jaar'
4651        },
4652        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
4653        ordinal : function (number) {
4654            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
4655        },
4656        week : {
4657            dow : 1, // Maandag is die eerste dag van die week.
4658            doy : 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
4659        }
4660    });
4661
4662    //! moment.js locale configuration
4663
4664    hooks.defineLocale('ar-dz', {
4665        months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4666        monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4667        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4668        weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4669        weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),
4670        weekdaysParseExact : true,
4671        longDateFormat : {
4672            LT : 'HH:mm',
4673            LTS : 'HH:mm:ss',
4674            L : 'DD/MM/YYYY',
4675            LL : 'D MMMM YYYY',
4676            LLL : 'D MMMM YYYY HH:mm',
4677            LLLL : 'dddd D MMMM YYYY HH:mm'
4678        },
4679        calendar : {
4680            sameDay: '[اليوم على الساعة] LT',
4681            nextDay: '[غدا على الساعة] LT',
4682            nextWeek: 'dddd [على الساعة] LT',
4683            lastDay: '[أمس على الساعة] LT',
4684            lastWeek: 'dddd [على الساعة] LT',
4685            sameElse: 'L'
4686        },
4687        relativeTime : {
4688            future : 'في %s',
4689            past : 'منذ %s',
4690            s : 'ثوان',
4691            ss : '%d ثانية',
4692            m : 'دقيقة',
4693            mm : '%d دقائق',
4694            h : 'ساعة',
4695            hh : '%d ساعات',
4696            d : 'يوم',
4697            dd : '%d أيام',
4698            M : 'شهر',
4699            MM : '%d أشهر',
4700            y : 'سنة',
4701            yy : '%d سنوات'
4702        },
4703        week : {
4704            dow : 0, // Sunday is the first day of the week.
4705            doy : 4  // The week that contains Jan 4th is the first week of the year.
4706        }
4707    });
4708
4709    //! moment.js locale configuration
4710
4711    hooks.defineLocale('ar-kw', {
4712        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4713        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4714        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4715        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4716        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4717        weekdaysParseExact : true,
4718        longDateFormat : {
4719            LT : 'HH:mm',
4720            LTS : 'HH:mm:ss',
4721            L : 'DD/MM/YYYY',
4722            LL : 'D MMMM YYYY',
4723            LLL : 'D MMMM YYYY HH:mm',
4724            LLLL : 'dddd D MMMM YYYY HH:mm'
4725        },
4726        calendar : {
4727            sameDay: '[اليوم على الساعة] LT',
4728            nextDay: '[غدا على الساعة] LT',
4729            nextWeek: 'dddd [على الساعة] LT',
4730            lastDay: '[أمس على الساعة] LT',
4731            lastWeek: 'dddd [على الساعة] LT',
4732            sameElse: 'L'
4733        },
4734        relativeTime : {
4735            future : 'في %s',
4736            past : 'منذ %s',
4737            s : 'ثوان',
4738            ss : '%d ثانية',
4739            m : 'دقيقة',
4740            mm : '%d دقائق',
4741            h : 'ساعة',
4742            hh : '%d ساعات',
4743            d : 'يوم',
4744            dd : '%d أيام',
4745            M : 'شهر',
4746            MM : '%d أشهر',
4747            y : 'سنة',
4748            yy : '%d سنوات'
4749        },
4750        week : {
4751            dow : 0, // Sunday is the first day of the week.
4752            doy : 12  // The week that contains Jan 12th is the first week of the year.
4753        }
4754    });
4755
4756    //! moment.js locale configuration
4757
4758    var symbolMap = {
4759        '1': '1',
4760        '2': '2',
4761        '3': '3',
4762        '4': '4',
4763        '5': '5',
4764        '6': '6',
4765        '7': '7',
4766        '8': '8',
4767        '9': '9',
4768        '0': '0'
4769    }, pluralForm = function (n) {
4770        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
4771    }, plurals = {
4772        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
4773        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
4774        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
4775        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
4776        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
4777        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
4778    }, pluralize = function (u) {
4779        return function (number, withoutSuffix, string, isFuture) {
4780            var f = pluralForm(number),
4781                str = plurals[u][pluralForm(number)];
4782            if (f === 2) {
4783                str = str[withoutSuffix ? 0 : 1];
4784            }
4785            return str.replace(/%d/i, number);
4786        };
4787    }, months$1 = [
4788        'يناير',
4789        'فبراير',
4790        'مارس',
4791        'أبريل',
4792        'مايو',
4793        'يونيو',
4794        'يوليو',
4795        'أغسطس',
4796        'سبتمبر',
4797        'أكتوبر',
4798        'نوفمبر',
4799        'ديسمبر'
4800    ];
4801
4802    hooks.defineLocale('ar-ly', {
4803        months : months$1,
4804        monthsShort : months$1,
4805        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4806        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4807        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4808        weekdaysParseExact : true,
4809        longDateFormat : {
4810            LT : 'HH:mm',
4811            LTS : 'HH:mm:ss',
4812            L : 'D/\u200FM/\u200FYYYY',
4813            LL : 'D MMMM YYYY',
4814            LLL : 'D MMMM YYYY HH:mm',
4815            LLLL : 'dddd D MMMM YYYY HH:mm'
4816        },
4817        meridiemParse: /ص|م/,
4818        isPM : function (input) {
4819            return 'م' === input;
4820        },
4821        meridiem : function (hour, minute, isLower) {
4822            if (hour < 12) {
4823                return 'ص';
4824            } else {
4825                return 'م';
4826            }
4827        },
4828        calendar : {
4829            sameDay: '[اليوم عند الساعة] LT',
4830            nextDay: '[غدًا عند الساعة] LT',
4831            nextWeek: 'dddd [عند الساعة] LT',
4832            lastDay: '[أمس عند الساعة] LT',
4833            lastWeek: 'dddd [عند الساعة] LT',
4834            sameElse: 'L'
4835        },
4836        relativeTime : {
4837            future : 'بعد %s',
4838            past : 'منذ %s',
4839            s : pluralize('s'),
4840            ss : pluralize('s'),
4841            m : pluralize('m'),
4842            mm : pluralize('m'),
4843            h : pluralize('h'),
4844            hh : pluralize('h'),
4845            d : pluralize('d'),
4846            dd : pluralize('d'),
4847            M : pluralize('M'),
4848            MM : pluralize('M'),
4849            y : pluralize('y'),
4850            yy : pluralize('y')
4851        },
4852        preparse: function (string) {
4853            return string.replace(/،/g, ',');
4854        },
4855        postformat: function (string) {
4856            return string.replace(/\d/g, function (match) {
4857                return symbolMap[match];
4858            }).replace(/,/g, '،');
4859        },
4860        week : {
4861            dow : 6, // Saturday is the first day of the week.
4862            doy : 12  // The week that contains Jan 12th is the first week of the year.
4863        }
4864    });
4865
4866    //! moment.js locale configuration
4867
4868    hooks.defineLocale('ar-ma', {
4869        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4870        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4871        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4872        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4873        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4874        weekdaysParseExact : true,
4875        longDateFormat : {
4876            LT : 'HH:mm',
4877            LTS : 'HH:mm:ss',
4878            L : 'DD/MM/YYYY',
4879            LL : 'D MMMM YYYY',
4880            LLL : 'D MMMM YYYY HH:mm',
4881            LLLL : 'dddd D MMMM YYYY HH:mm'
4882        },
4883        calendar : {
4884            sameDay: '[اليوم على الساعة] LT',
4885            nextDay: '[غدا على الساعة] LT',
4886            nextWeek: 'dddd [على الساعة] LT',
4887            lastDay: '[أمس على الساعة] LT',
4888            lastWeek: 'dddd [على الساعة] LT',
4889            sameElse: 'L'
4890        },
4891        relativeTime : {
4892            future : 'في %s',
4893            past : 'منذ %s',
4894            s : 'ثوان',
4895            ss : '%d ثانية',
4896            m : 'دقيقة',
4897            mm : '%d دقائق',
4898            h : 'ساعة',
4899            hh : '%d ساعات',
4900            d : 'يوم',
4901            dd : '%d أيام',
4902            M : 'شهر',
4903            MM : '%d أشهر',
4904            y : 'سنة',
4905            yy : '%d سنوات'
4906        },
4907        week : {
4908            dow : 6, // Saturday is the first day of the week.
4909            doy : 12  // The week that contains Jan 12th is the first week of the year.
4910        }
4911    });
4912
4913    //! moment.js locale configuration
4914
4915    var symbolMap$1 = {
4916        '1': 'Ù¡',
4917        '2': 'Ù¢',
4918        '3': 'Ù£',
4919        '4': 'Ù¤',
4920        '5': 'Ù¥',
4921        '6': 'Ù¦',
4922        '7': 'Ù§',
4923        '8': 'Ù¨',
4924        '9': 'Ù©',
4925        '0': 'Ù '
4926    }, numberMap = {
4927        'Ù¡': '1',
4928        'Ù¢': '2',
4929        'Ù£': '3',
4930        'Ù¤': '4',
4931        'Ù¥': '5',
4932        'Ù¦': '6',
4933        'Ù§': '7',
4934        'Ù¨': '8',
4935        'Ù©': '9',
4936        'Ù ': '0'
4937    };
4938
4939    hooks.defineLocale('ar-sa', {
4940        months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4941        monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4942        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4943        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4944        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4945        weekdaysParseExact : true,
4946        longDateFormat : {
4947            LT : 'HH:mm',
4948            LTS : 'HH:mm:ss',
4949            L : 'DD/MM/YYYY',
4950            LL : 'D MMMM YYYY',
4951            LLL : 'D MMMM YYYY HH:mm',
4952            LLLL : 'dddd D MMMM YYYY HH:mm'
4953        },
4954        meridiemParse: /ص|م/,
4955        isPM : function (input) {
4956            return 'م' === input;
4957        },
4958        meridiem : function (hour, minute, isLower) {
4959            if (hour < 12) {
4960                return 'ص';
4961            } else {
4962                return 'م';
4963            }
4964        },
4965        calendar : {
4966            sameDay: '[اليوم على الساعة] LT',
4967            nextDay: '[غدا على الساعة] LT',
4968            nextWeek: 'dddd [على الساعة] LT',
4969            lastDay: '[أمس على الساعة] LT',
4970            lastWeek: 'dddd [على الساعة] LT',
4971            sameElse: 'L'
4972        },
4973        relativeTime : {
4974            future : 'في %s',
4975            past : 'منذ %s',
4976            s : 'ثوان',
4977            ss : '%d ثانية',
4978            m : 'دقيقة',
4979            mm : '%d دقائق',
4980            h : 'ساعة',
4981            hh : '%d ساعات',
4982            d : 'يوم',
4983            dd : '%d أيام',
4984            M : 'شهر',
4985            MM : '%d أشهر',
4986            y : 'سنة',
4987            yy : '%d سنوات'
4988        },
4989        preparse: function (string) {
4990            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
4991                return numberMap[match];
4992            }).replace(/،/g, ',');
4993        },
4994        postformat: function (string) {
4995            return string.replace(/\d/g, function (match) {
4996                return symbolMap$1[match];
4997            }).replace(/,/g, '،');
4998        },
4999        week : {
5000            dow : 0, // Sunday is the first day of the week.
5001            doy : 6  // The week that contains Jan 6th is the first week of the year.
5002        }
5003    });
5004
5005    //! moment.js locale configuration
5006
5007    hooks.defineLocale('ar-tn', {
5008        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
5009        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
5010        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
5011        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
5012        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
5013        weekdaysParseExact : true,
5014        longDateFormat: {
5015            LT: 'HH:mm',
5016            LTS: 'HH:mm:ss',
5017            L: 'DD/MM/YYYY',
5018            LL: 'D MMMM YYYY',
5019            LLL: 'D MMMM YYYY HH:mm',
5020            LLLL: 'dddd D MMMM YYYY HH:mm'
5021        },
5022        calendar: {
5023            sameDay: '[اليوم على الساعة] LT',
5024            nextDay: '[غدا على الساعة] LT',
5025            nextWeek: 'dddd [على الساعة] LT',
5026            lastDay: '[أمس على الساعة] LT',
5027            lastWeek: 'dddd [على الساعة] LT',
5028            sameElse: 'L'
5029        },
5030        relativeTime: {
5031            future: 'في %s',
5032            past: 'منذ %s',
5033            s: 'ثوان',
5034            ss : '%d ثانية',
5035            m: 'دقيقة',
5036            mm: '%d دقائق',
5037            h: 'ساعة',
5038            hh: '%d ساعات',
5039            d: 'يوم',
5040            dd: '%d أيام',
5041            M: 'شهر',
5042            MM: '%d أشهر',
5043            y: 'سنة',
5044            yy: '%d سنوات'
5045        },
5046        week: {
5047            dow: 1, // Monday is the first day of the week.
5048            doy: 4 // The week that contains Jan 4th is the first week of the year.
5049        }
5050    });
5051
5052    //! moment.js locale configuration
5053
5054    var symbolMap$2 = {
5055        '1': 'Ù¡',
5056        '2': 'Ù¢',
5057        '3': 'Ù£',
5058        '4': 'Ù¤',
5059        '5': 'Ù¥',
5060        '6': 'Ù¦',
5061        '7': 'Ù§',
5062        '8': 'Ù¨',
5063        '9': 'Ù©',
5064        '0': 'Ù '
5065    }, numberMap$1 = {
5066        'Ù¡': '1',
5067        'Ù¢': '2',
5068        'Ù£': '3',
5069        'Ù¤': '4',
5070        'Ù¥': '5',
5071        'Ù¦': '6',
5072        'Ù§': '7',
5073        'Ù¨': '8',
5074        'Ù©': '9',
5075        'Ù ': '0'
5076    }, pluralForm$1 = function (n) {
5077        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
5078    }, plurals$1 = {
5079        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
5080        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
5081        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
5082        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
5083        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
5084        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
5085    }, pluralize$1 = function (u) {
5086        return function (number, withoutSuffix, string, isFuture) {
5087            var f = pluralForm$1(number),
5088                str = plurals$1[u][pluralForm$1(number)];
5089            if (f === 2) {
5090                str = str[withoutSuffix ? 0 : 1];
5091            }
5092            return str.replace(/%d/i, number);
5093        };
5094    }, months$2 = [
5095        'يناير',
5096        'فبراير',
5097        'مارس',
5098        'أبريل',
5099        'مايو',
5100        'يونيو',
5101        'يوليو',
5102        'أغسطس',
5103        'سبتمبر',
5104        'أكتوبر',
5105        'نوفمبر',
5106        'ديسمبر'
5107    ];
5108
5109    hooks.defineLocale('ar', {
5110        months : months$2,
5111        monthsShort : months$2,
5112        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
5113        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
5114        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
5115        weekdaysParseExact : true,
5116        longDateFormat : {
5117            LT : 'HH:mm',
5118            LTS : 'HH:mm:ss',
5119            L : 'D/\u200FM/\u200FYYYY',
5120            LL : 'D MMMM YYYY',
5121            LLL : 'D MMMM YYYY HH:mm',
5122            LLLL : 'dddd D MMMM YYYY HH:mm'
5123        },
5124        meridiemParse: /ص|م/,
5125        isPM : function (input) {
5126            return 'م' === input;
5127        },
5128        meridiem : function (hour, minute, isLower) {
5129            if (hour < 12) {
5130                return 'ص';
5131            } else {
5132                return 'م';
5133            }
5134        },
5135        calendar : {
5136            sameDay: '[اليوم عند الساعة] LT',
5137            nextDay: '[غدًا عند الساعة] LT',
5138            nextWeek: 'dddd [عند الساعة] LT',
5139            lastDay: '[أمس عند الساعة] LT',
5140            lastWeek: 'dddd [عند الساعة] LT',
5141            sameElse: 'L'
5142        },
5143        relativeTime : {
5144            future : 'بعد %s',
5145            past : 'منذ %s',
5146            s : pluralize$1('s'),
5147            ss : pluralize$1('s'),
5148            m : pluralize$1('m'),
5149            mm : pluralize$1('m'),
5150            h : pluralize$1('h'),
5151            hh : pluralize$1('h'),
5152            d : pluralize$1('d'),
5153            dd : pluralize$1('d'),
5154            M : pluralize$1('M'),
5155            MM : pluralize$1('M'),
5156            y : pluralize$1('y'),
5157            yy : pluralize$1('y')
5158        },
5159        preparse: function (string) {
5160            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
5161                return numberMap$1[match];
5162            }).replace(/،/g, ',');
5163        },
5164        postformat: function (string) {
5165            return string.replace(/\d/g, function (match) {
5166                return symbolMap$2[match];
5167            }).replace(/,/g, '،');
5168        },
5169        week : {
5170            dow : 6, // Saturday is the first day of the week.
5171            doy : 12  // The week that contains Jan 12th is the first week of the year.
5172        }
5173    });
5174
5175    //! moment.js locale configuration
5176
5177    var suffixes = {
5178        1: '-inci',
5179        5: '-inci',
5180        8: '-inci',
5181        70: '-inci',
5182        80: '-inci',
5183        2: '-nci',
5184        7: '-nci',
5185        20: '-nci',
5186        50: '-nci',
5187        3: '-üncü',
5188        4: '-üncü',
5189        100: '-üncü',
5190        6: '-ncı',
5191        9: '-uncu',
5192        10: '-uncu',
5193        30: '-uncu',
5194        60: '-ıncı',
5195        90: '-ıncı'
5196    };
5197
5198    hooks.defineLocale('az', {
5199        months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
5200        monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
5201        weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
5202        weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
5203        weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
5204        weekdaysParseExact : true,
5205        longDateFormat : {
5206            LT : 'HH:mm',
5207            LTS : 'HH:mm:ss',
5208            L : 'DD.MM.YYYY',
5209            LL : 'D MMMM YYYY',
5210            LLL : 'D MMMM YYYY HH:mm',
5211            LLLL : 'dddd, D MMMM YYYY HH:mm'
5212        },
5213        calendar : {
5214            sameDay : '[bugün saat] LT',
5215            nextDay : '[sabah saat] LT',
5216            nextWeek : '[gələn həftə] dddd [saat] LT',
5217            lastDay : '[dünən] LT',
5218            lastWeek : '[keçən həftə] dddd [saat] LT',
5219            sameElse : 'L'
5220        },
5221        relativeTime : {
5222            future : '%s sonra',
5223            past : '%s əvvəl',
5224            s : 'birneçə saniyə',
5225            ss : '%d saniyə',
5226            m : 'bir dəqiqə',
5227            mm : '%d dəqiqə',
5228            h : 'bir saat',
5229            hh : '%d saat',
5230            d : 'bir gün',
5231            dd : '%d gün',
5232            M : 'bir ay',
5233            MM : '%d ay',
5234            y : 'bir il',
5235            yy : '%d il'
5236        },
5237        meridiemParse: /gecə|səhər|gündüz|axşam/,
5238        isPM : function (input) {
5239            return /^(gündüz|axşam)$/.test(input);
5240        },
5241        meridiem : function (hour, minute, isLower) {
5242            if (hour < 4) {
5243                return 'gecə';
5244            } else if (hour < 12) {
5245                return 'səhər';
5246            } else if (hour < 17) {
5247                return 'gündüz';
5248            } else {
5249                return 'axşam';
5250            }
5251        },
5252        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
5253        ordinal : function (number) {
5254            if (number === 0) {  // special case for zero
5255                return number + '-ıncı';
5256            }
5257            var a = number % 10,
5258                b = number % 100 - a,
5259                c = number >= 100 ? 100 : null;
5260            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
5261        },
5262        week : {
5263            dow : 1, // Monday is the first day of the week.
5264            doy : 7  // The week that contains Jan 7th is the first week of the year.
5265        }
5266    });
5267
5268    //! moment.js locale configuration
5269
5270    function plural(word, num) {
5271        var forms = word.split('_');
5272        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
5273    }
5274    function relativeTimeWithPlural(number, withoutSuffix, key) {
5275        var format = {
5276            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
5277            'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
5278            'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
5279            'dd': 'дзень_дні_дзён',
5280            'MM': 'месяц_месяцы_месяцаў',
5281            'yy': 'год_гады_гадоў'
5282        };
5283        if (key === 'm') {
5284            return withoutSuffix ? 'хвіліна' : 'хвіліну';
5285        }
5286        else if (key === 'h') {
5287            return withoutSuffix ? 'гадзіна' : 'гадзіну';
5288        }
5289        else {
5290            return number + ' ' + plural(format[key], +number);
5291        }
5292    }
5293
5294    hooks.defineLocale('be', {
5295        months : {
5296            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
5297            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
5298        },
5299        monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
5300        weekdays : {
5301            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
5302            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
5303            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/
5304        },
5305        weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
5306        weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
5307        longDateFormat : {
5308            LT : 'HH:mm',
5309            LTS : 'HH:mm:ss',
5310            L : 'DD.MM.YYYY',
5311            LL : 'D MMMM YYYY г.',
5312            LLL : 'D MMMM YYYY г., HH:mm',
5313            LLLL : 'dddd, D MMMM YYYY г., HH:mm'
5314        },
5315        calendar : {
5316            sameDay: '[Сёння ў] LT',
5317            nextDay: '[Заўтра ў] LT',
5318            lastDay: '[Учора ў] LT',
5319            nextWeek: function () {
5320                return '[У] dddd [ў] LT';
5321            },
5322            lastWeek: function () {
5323                switch (this.day()) {
5324                    case 0:
5325                    case 3:
5326                    case 5:
5327                    case 6:
5328                        return '[У мінулую] dddd [ў] LT';
5329                    case 1:
5330                    case 2:
5331                    case 4:
5332                        return '[У мінулы] dddd [ў] LT';
5333                }
5334            },
5335            sameElse: 'L'
5336        },
5337        relativeTime : {
5338            future : 'праз %s',
5339            past : '%s таму',
5340            s : 'некалькі секунд',
5341            m : relativeTimeWithPlural,
5342            mm : relativeTimeWithPlural,
5343            h : relativeTimeWithPlural,
5344            hh : relativeTimeWithPlural,
5345            d : 'дзень',
5346            dd : relativeTimeWithPlural,
5347            M : 'месяц',
5348            MM : relativeTimeWithPlural,
5349            y : 'год',
5350            yy : relativeTimeWithPlural
5351        },
5352        meridiemParse: /ночы|раніцы|дня|вечара/,
5353        isPM : function (input) {
5354            return /^(дня|вечара)$/.test(input);
5355        },
5356        meridiem : function (hour, minute, isLower) {
5357            if (hour < 4) {
5358                return 'ночы';
5359            } else if (hour < 12) {
5360                return 'раніцы';
5361            } else if (hour < 17) {
5362                return 'дня';
5363            } else {
5364                return 'вечара';
5365            }
5366        },
5367        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
5368        ordinal: function (number, period) {
5369            switch (period) {
5370                case 'M':
5371                case 'd':
5372                case 'DDD':
5373                case 'w':
5374                case 'W':
5375                    return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';
5376                case 'D':
5377                    return number + '-га';
5378                default:
5379                    return number;
5380            }
5381        },
5382        week : {
5383            dow : 1, // Monday is the first day of the week.
5384            doy : 7  // The week that contains Jan 7th is the first week of the year.
5385        }
5386    });
5387
5388    //! moment.js locale configuration
5389
5390    hooks.defineLocale('bg', {
5391        months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
5392        monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
5393        weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
5394        weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
5395        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
5396        longDateFormat : {
5397            LT : 'H:mm',
5398            LTS : 'H:mm:ss',
5399            L : 'D.MM.YYYY',
5400            LL : 'D MMMM YYYY',
5401            LLL : 'D MMMM YYYY H:mm',
5402            LLLL : 'dddd, D MMMM YYYY H:mm'
5403        },
5404        calendar : {
5405            sameDay : '[Днес в] LT',
5406            nextDay : '[Утре в] LT',
5407            nextWeek : 'dddd [в] LT',
5408            lastDay : '[Вчера в] LT',
5409            lastWeek : function () {
5410                switch (this.day()) {
5411                    case 0:
5412                    case 3:
5413                    case 6:
5414                        return '[В изминалата] dddd [в] LT';
5415                    case 1:
5416                    case 2:
5417                    case 4:
5418                    case 5:
5419                        return '[В изминалия] dddd [в] LT';
5420                }
5421            },
5422            sameElse : 'L'
5423        },
5424        relativeTime : {
5425            future : 'след %s',
5426            past : 'преди %s',
5427            s : 'няколко секунди',
5428            ss : '%d секунди',
5429            m : 'минута',
5430            mm : '%d минути',
5431            h : 'час',
5432            hh : '%d часа',
5433            d : 'ден',
5434            dd : '%d дни',
5435            M : 'месец',
5436            MM : '%d месеца',
5437            y : 'година',
5438            yy : '%d години'
5439        },
5440        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
5441        ordinal : function (number) {
5442            var lastDigit = number % 10,
5443                last2Digits = number % 100;
5444            if (number === 0) {
5445                return number + '-ев';
5446            } else if (last2Digits === 0) {
5447                return number + '-ен';
5448            } else if (last2Digits > 10 && last2Digits < 20) {
5449                return number + '-ти';
5450            } else if (lastDigit === 1) {
5451                return number + '-ви';
5452            } else if (lastDigit === 2) {
5453                return number + '-ри';
5454            } else if (lastDigit === 7 || lastDigit === 8) {
5455                return number + '-ми';
5456            } else {
5457                return number + '-ти';
5458            }
5459        },
5460        week : {
5461            dow : 1, // Monday is the first day of the week.
5462            doy : 7  // The week that contains Jan 7th is the first week of the year.
5463        }
5464    });
5465
5466    //! moment.js locale configuration
5467
5468    hooks.defineLocale('bm', {
5469        months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),
5470        monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
5471        weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
5472        weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
5473        weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
5474        longDateFormat : {
5475            LT : 'HH:mm',
5476            LTS : 'HH:mm:ss',
5477            L : 'DD/MM/YYYY',
5478            LL : 'MMMM [tile] D [san] YYYY',
5479            LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
5480            LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'
5481        },
5482        calendar : {
5483            sameDay : '[Bi lɛrɛ] LT',
5484            nextDay : '[Sini lɛrɛ] LT',
5485            nextWeek : 'dddd [don lɛrɛ] LT',
5486            lastDay : '[Kunu lɛrɛ] LT',
5487            lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT',
5488            sameElse : 'L'
5489        },
5490        relativeTime : {
5491            future : '%s kɔnɔ',
5492            past : 'a bɛ %s bɔ',
5493            s : 'sanga dama dama',
5494            ss : 'sekondi %d',
5495            m : 'miniti kelen',
5496            mm : 'miniti %d',
5497            h : 'lɛrɛ kelen',
5498            hh : 'lɛrɛ %d',
5499            d : 'tile kelen',
5500            dd : 'tile %d',
5501            M : 'kalo kelen',
5502            MM : 'kalo %d',
5503            y : 'san kelen',
5504            yy : 'san %d'
5505        },
5506        week : {
5507            dow : 1, // Monday is the first day of the week.
5508            doy : 4  // The week that contains Jan 4th is the first week of the year.
5509        }
5510    });
5511
5512    //! moment.js locale configuration
5513
5514    var symbolMap$3 = {
5515        '1': 'à§§',
5516        '2': '২',
5517        '3': 'à§©',
5518        '4': '৪',
5519        '5': 'à§«',
5520        '6': '৬',
5521        '7': 'à§­',
5522        '8': 'à§®',
5523        '9': '৯',
5524        '0': '০'
5525    },
5526    numberMap$2 = {
5527        'à§§': '1',
5528        '২': '2',
5529        'à§©': '3',
5530        '৪': '4',
5531        'à§«': '5',
5532        '৬': '6',
5533        'à§­': '7',
5534        'à§®': '8',
5535        '৯': '9',
5536        '০': '0'
5537    };
5538
5539    hooks.defineLocale('bn', {
5540        months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
5541        monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
5542        weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
5543        weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
5544        weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
5545        longDateFormat : {
5546            LT : 'A h:mm সময়',
5547            LTS : 'A h:mm:ss সময়',
5548            L : 'DD/MM/YYYY',
5549            LL : 'D MMMM YYYY',
5550            LLL : 'D MMMM YYYY, A h:mm সময়',
5551            LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'
5552        },
5553        calendar : {
5554            sameDay : '[আজ] LT',
5555            nextDay : '[আগামীকাল] LT',
5556            nextWeek : 'dddd, LT',
5557            lastDay : '[গতকাল] LT',
5558            lastWeek : '[গত] dddd, LT',
5559            sameElse : 'L'
5560        },
5561        relativeTime : {
5562            future : '%s পরে',
5563            past : '%s আগে',
5564            s : 'কয়েক সেকেন্ড',
5565            ss : '%d সেকেন্ড',
5566            m : 'এক মিনিট',
5567            mm : '%d মিনিট',
5568            h : 'এক ঘন্টা',
5569            hh : '%d ঘন্টা',
5570            d : 'এক দিন',
5571            dd : '%d দিন',
5572            M : 'এক মাস',
5573            MM : '%d মাস',
5574            y : 'এক বছর',
5575            yy : '%d বছর'
5576        },
5577        preparse: function (string) {
5578            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
5579                return numberMap$2[match];
5580            });
5581        },
5582        postformat: function (string) {
5583            return string.replace(/\d/g, function (match) {
5584                return symbolMap$3[match];
5585            });
5586        },
5587        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
5588        meridiemHour : function (hour, meridiem) {
5589            if (hour === 12) {
5590                hour = 0;
5591            }
5592            if ((meridiem === 'রাত' && hour >= 4) ||
5593                    (meridiem === 'দুপুর' && hour < 5) ||
5594                    meridiem === 'বিকাল') {
5595                return hour + 12;
5596            } else {
5597                return hour;
5598            }
5599        },
5600        meridiem : function (hour, minute, isLower) {
5601            if (hour < 4) {
5602                return 'রাত';
5603            } else if (hour < 10) {
5604                return 'সকাল';
5605            } else if (hour < 17) {
5606                return 'দুপুর';
5607            } else if (hour < 20) {
5608                return 'বিকাল';
5609            } else {
5610                return 'রাত';
5611            }
5612        },
5613        week : {
5614            dow : 0, // Sunday is the first day of the week.
5615            doy : 6  // The week that contains Jan 6th is the first week of the year.
5616        }
5617    });
5618
5619    //! moment.js locale configuration
5620
5621    var symbolMap$4 = {
5622        '1': '༡',
5623        '2': '༢',
5624        '3': '༣',
5625        '4': '༤',
5626        '5': '༥',
5627        '6': '༦',
5628        '7': '༧',
5629        '8': '༨',
5630        '9': '༩',
5631        '0': '༠'
5632    },
5633    numberMap$3 = {
5634        '༡': '1',
5635        '༢': '2',
5636        '༣': '3',
5637        '༤': '4',
5638        '༥': '5',
5639        '༦': '6',
5640        '༧': '7',
5641        '༨': '8',
5642        '༩': '9',
5643        '༠': '0'
5644    };
5645
5646    hooks.defineLocale('bo', {
5647        months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5648        monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5649        weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
5650        weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5651        weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5652        longDateFormat : {
5653            LT : 'A h:mm',
5654            LTS : 'A h:mm:ss',
5655            L : 'DD/MM/YYYY',
5656            LL : 'D MMMM YYYY',
5657            LLL : 'D MMMM YYYY, A h:mm',
5658            LLLL : 'dddd, D MMMM YYYY, A h:mm'
5659        },
5660        calendar : {
5661            sameDay : '[དི་རིང] LT',
5662            nextDay : '[སང་ཉིན] LT',
5663            nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',
5664            lastDay : '[ཁ་སང] LT',
5665            lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
5666            sameElse : 'L'
5667        },
5668        relativeTime : {
5669            future : '%s ལ་',
5670            past : '%s སྔན་ལ',
5671            s : 'ལམ་སང',
5672            ss : '%d སྐར་ཆ།',
5673            m : 'སྐར་མ་གཅིག',
5674            mm : '%d སྐར་མ',
5675            h : 'ཆུ་ཚོད་གཅིག',
5676            hh : '%d ཆུ་ཚོད',
5677            d : 'ཉིན་གཅིག',
5678            dd : '%d ཉིན་',
5679            M : 'ཟླ་བ་གཅིག',
5680            MM : '%d ཟླ་བ',
5681            y : 'ལོ་གཅིག',
5682            yy : '%d ལོ'
5683        },
5684        preparse: function (string) {
5685            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
5686                return numberMap$3[match];
5687            });
5688        },
5689        postformat: function (string) {
5690            return string.replace(/\d/g, function (match) {
5691                return symbolMap$4[match];
5692            });
5693        },
5694        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
5695        meridiemHour : function (hour, meridiem) {
5696            if (hour === 12) {
5697                hour = 0;
5698            }
5699            if ((meridiem === 'མཚན་མོ' && hour >= 4) ||
5700                    (meridiem === 'ཉིན་གུང' && hour < 5) ||
5701                    meridiem === 'དགོང་དག') {
5702                return hour + 12;
5703            } else {
5704                return hour;
5705            }
5706        },
5707        meridiem : function (hour, minute, isLower) {
5708            if (hour < 4) {
5709                return 'མཚན་མོ';
5710            } else if (hour < 10) {
5711                return 'ཞོགས་ཀས';
5712            } else if (hour < 17) {
5713                return 'ཉིན་གུང';
5714            } else if (hour < 20) {
5715                return 'དགོང་དག';
5716            } else {
5717                return 'མཚན་མོ';
5718            }
5719        },
5720        week : {
5721            dow : 0, // Sunday is the first day of the week.
5722            doy : 6  // The week that contains Jan 6th is the first week of the year.
5723        }
5724    });
5725
5726    //! moment.js locale configuration
5727
5728    function relativeTimeWithMutation(number, withoutSuffix, key) {
5729        var format = {
5730            'mm': 'munutenn',
5731            'MM': 'miz',
5732            'dd': 'devezh'
5733        };
5734        return number + ' ' + mutation(format[key], number);
5735    }
5736    function specialMutationForYears(number) {
5737        switch (lastNumber(number)) {
5738            case 1:
5739            case 3:
5740            case 4:
5741            case 5:
5742            case 9:
5743                return number + ' bloaz';
5744            default:
5745                return number + ' vloaz';
5746        }
5747    }
5748    function lastNumber(number) {
5749        if (number > 9) {
5750            return lastNumber(number % 10);
5751        }
5752        return number;
5753    }
5754    function mutation(text, number) {
5755        if (number === 2) {
5756            return softMutation(text);
5757        }
5758        return text;
5759    }
5760    function softMutation(text) {
5761        var mutationTable = {
5762            'm': 'v',
5763            'b': 'v',
5764            'd': 'z'
5765        };
5766        if (mutationTable[text.charAt(0)] === undefined) {
5767            return text;
5768        }
5769        return mutationTable[text.charAt(0)] + text.substring(1);
5770    }
5771
5772    hooks.defineLocale('br', {
5773        months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
5774        monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
5775        weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
5776        weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
5777        weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
5778        weekdaysParseExact : true,
5779        longDateFormat : {
5780            LT : 'h[e]mm A',
5781            LTS : 'h[e]mm:ss A',
5782            L : 'DD/MM/YYYY',
5783            LL : 'D [a viz] MMMM YYYY',
5784            LLL : 'D [a viz] MMMM YYYY h[e]mm A',
5785            LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'
5786        },
5787        calendar : {
5788            sameDay : '[Hiziv da] LT',
5789            nextDay : '[Warc\'hoazh da] LT',
5790            nextWeek : 'dddd [da] LT',
5791            lastDay : '[Dec\'h da] LT',
5792            lastWeek : 'dddd [paset da] LT',
5793            sameElse : 'L'
5794        },
5795        relativeTime : {
5796            future : 'a-benn %s',
5797            past : '%s \'zo',
5798            s : 'un nebeud segondennoù',
5799            ss : '%d eilenn',
5800            m : 'ur vunutenn',
5801            mm : relativeTimeWithMutation,
5802            h : 'un eur',
5803            hh : '%d eur',
5804            d : 'un devezh',
5805            dd : relativeTimeWithMutation,
5806            M : 'ur miz',
5807            MM : relativeTimeWithMutation,
5808            y : 'ur bloaz',
5809            yy : specialMutationForYears
5810        },
5811        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
5812        ordinal : function (number) {
5813            var output = (number === 1) ? 'añ' : 'vet';
5814            return number + output;
5815        },
5816        week : {
5817            dow : 1, // Monday is the first day of the week.
5818            doy : 4  // The week that contains Jan 4th is the first week of the year.
5819        }
5820    });
5821
5822    //! moment.js locale configuration
5823
5824    function translate(number, withoutSuffix, key) {
5825        var result = number + ' ';
5826        switch (key) {
5827            case 'ss':
5828                if (number === 1) {
5829                    result += 'sekunda';
5830                } else if (number === 2 || number === 3 || number === 4) {
5831                    result += 'sekunde';
5832                } else {
5833                    result += 'sekundi';
5834                }
5835                return result;
5836            case 'm':
5837                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
5838            case 'mm':
5839                if (number === 1) {
5840                    result += 'minuta';
5841                } else if (number === 2 || number === 3 || number === 4) {
5842                    result += 'minute';
5843                } else {
5844                    result += 'minuta';
5845                }
5846                return result;
5847            case 'h':
5848                return withoutSuffix ? 'jedan sat' : 'jednog sata';
5849            case 'hh':
5850                if (number === 1) {
5851                    result += 'sat';
5852                } else if (number === 2 || number === 3 || number === 4) {
5853                    result += 'sata';
5854                } else {
5855                    result += 'sati';
5856                }
5857                return result;
5858            case 'dd':
5859                if (number === 1) {
5860                    result += 'dan';
5861                } else {
5862                    result += 'dana';
5863                }
5864                return result;
5865            case 'MM':
5866                if (number === 1) {
5867                    result += 'mjesec';
5868                } else if (number === 2 || number === 3 || number === 4) {
5869                    result += 'mjeseca';
5870                } else {
5871                    result += 'mjeseci';
5872                }
5873                return result;
5874            case 'yy':
5875                if (number === 1) {
5876                    result += 'godina';
5877                } else if (number === 2 || number === 3 || number === 4) {
5878                    result += 'godine';
5879                } else {
5880                    result += 'godina';
5881                }
5882                return result;
5883        }
5884    }
5885
5886    hooks.defineLocale('bs', {
5887        months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
5888        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
5889        monthsParseExact: true,
5890        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
5891        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
5892        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
5893        weekdaysParseExact : true,
5894        longDateFormat : {
5895            LT : 'H:mm',
5896            LTS : 'H:mm:ss',
5897            L : 'DD.MM.YYYY',
5898            LL : 'D. MMMM YYYY',
5899            LLL : 'D. MMMM YYYY H:mm',
5900            LLLL : 'dddd, D. MMMM YYYY H:mm'
5901        },
5902        calendar : {
5903            sameDay  : '[danas u] LT',
5904            nextDay  : '[sutra u] LT',
5905            nextWeek : function () {
5906                switch (this.day()) {
5907                    case 0:
5908                        return '[u] [nedjelju] [u] LT';
5909                    case 3:
5910                        return '[u] [srijedu] [u] LT';
5911                    case 6:
5912                        return '[u] [subotu] [u] LT';
5913                    case 1:
5914                    case 2:
5915                    case 4:
5916                    case 5:
5917                        return '[u] dddd [u] LT';
5918                }
5919            },
5920            lastDay  : '[jučer u] LT',
5921            lastWeek : function () {
5922                switch (this.day()) {
5923                    case 0:
5924                    case 3:
5925                        return '[prošlu] dddd [u] LT';
5926                    case 6:
5927                        return '[prošle] [subote] [u] LT';
5928                    case 1:
5929                    case 2:
5930                    case 4:
5931                    case 5:
5932                        return '[prošli] dddd [u] LT';
5933                }
5934            },
5935            sameElse : 'L'
5936        },
5937        relativeTime : {
5938            future : 'za %s',
5939            past   : 'prije %s',
5940            s      : 'par sekundi',
5941            ss     : translate,
5942            m      : translate,
5943            mm     : translate,
5944            h      : translate,
5945            hh     : translate,
5946            d      : 'dan',
5947            dd     : translate,
5948            M      : 'mjesec',
5949            MM     : translate,
5950            y      : 'godinu',
5951            yy     : translate
5952        },
5953        dayOfMonthOrdinalParse: /\d{1,2}\./,
5954        ordinal : '%d.',
5955        week : {
5956            dow : 1, // Monday is the first day of the week.
5957            doy : 7  // The week that contains Jan 7th is the first week of the year.
5958        }
5959    });
5960
5961    //! moment.js locale configuration
5962
5963    hooks.defineLocale('ca', {
5964        months : {
5965            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
5966            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('_'),
5967            isFormat: /D[oD]?(\s)+MMMM/
5968        },
5969        monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),
5970        monthsParseExact : true,
5971        weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
5972        weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
5973        weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
5974        weekdaysParseExact : true,
5975        longDateFormat : {
5976            LT : 'H:mm',
5977            LTS : 'H:mm:ss',
5978            L : 'DD/MM/YYYY',
5979            LL : 'D MMMM [de] YYYY',
5980            ll : 'D MMM YYYY',
5981            LLL : 'D MMMM [de] YYYY [a les] H:mm',
5982            lll : 'D MMM YYYY, H:mm',
5983            LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm',
5984            llll : 'ddd D MMM YYYY, H:mm'
5985        },
5986        calendar : {
5987            sameDay : function () {
5988                return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5989            },
5990            nextDay : function () {
5991                return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5992            },
5993            nextWeek : function () {
5994                return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5995            },
5996            lastDay : function () {
5997                return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5998            },
5999            lastWeek : function () {
6000                return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
6001            },
6002            sameElse : 'L'
6003        },
6004        relativeTime : {
6005            future : 'd\'aquí %s',
6006            past : 'fa %s',
6007            s : 'uns segons',
6008            ss : '%d segons',
6009            m : 'un minut',
6010            mm : '%d minuts',
6011            h : 'una hora',
6012            hh : '%d hores',
6013            d : 'un dia',
6014            dd : '%d dies',
6015            M : 'un mes',
6016            MM : '%d mesos',
6017            y : 'un any',
6018            yy : '%d anys'
6019        },
6020        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
6021        ordinal : function (number, period) {
6022            var output = (number === 1) ? 'r' :
6023                (number === 2) ? 'n' :
6024                (number === 3) ? 'r' :
6025                (number === 4) ? 't' : 'è';
6026            if (period === 'w' || period === 'W') {
6027                output = 'a';
6028            }
6029            return number + output;
6030        },
6031        week : {
6032            dow : 1, // Monday is the first day of the week.
6033            doy : 4  // The week that contains Jan 4th is the first week of the year.
6034        }
6035    });
6036
6037    //! moment.js locale configuration
6038
6039    var months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),
6040        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
6041
6042    var monthsParse = [/^led/i, /^úno/i, /^bře/i, /^dub/i, /^kvě/i, /^(čvn|červen$|června)/i, /^(čvc|červenec|července)/i, /^srp/i, /^zář/i, /^říj/i, /^lis/i, /^pro/i];
6043    // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
6044    // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
6045    var monthsRegex$1 = /^(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;
6046
6047    function plural$1(n) {
6048        return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
6049    }
6050    function translate$1(number, withoutSuffix, key, isFuture) {
6051        var result = number + ' ';
6052        switch (key) {
6053            case 's':  // a few seconds / in a few seconds / a few seconds ago
6054                return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
6055            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
6056                if (withoutSuffix || isFuture) {
6057                    return result + (plural$1(number) ? 'sekundy' : 'sekund');
6058                } else {
6059                    return result + 'sekundami';
6060                }
6061                break;
6062            case 'm':  // a minute / in a minute / a minute ago
6063                return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
6064            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
6065                if (withoutSuffix || isFuture) {
6066                    return result + (plural$1(number) ? 'minuty' : 'minut');
6067                } else {
6068                    return result + 'minutami';
6069                }
6070                break;
6071            case 'h':  // an hour / in an hour / an hour ago
6072                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
6073            case 'hh': // 9 hours / in 9 hours / 9 hours ago
6074                if (withoutSuffix || isFuture) {
6075                    return result + (plural$1(number) ? 'hodiny' : 'hodin');
6076                } else {
6077                    return result + 'hodinami';
6078                }
6079                break;
6080            case 'd':  // a day / in a day / a day ago
6081                return (withoutSuffix || isFuture) ? 'den' : 'dnem';
6082            case 'dd': // 9 days / in 9 days / 9 days ago
6083                if (withoutSuffix || isFuture) {
6084                    return result + (plural$1(number) ? 'dny' : 'dní');
6085                } else {
6086                    return result + 'dny';
6087                }
6088                break;
6089            case 'M':  // a month / in a month / a month ago
6090                return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
6091            case 'MM': // 9 months / in 9 months / 9 months ago
6092                if (withoutSuffix || isFuture) {
6093                    return result + (plural$1(number) ? 'měsíce' : 'měsíců');
6094                } else {
6095                    return result + 'měsíci';
6096                }
6097                break;
6098            case 'y':  // a year / in a year / a year ago
6099                return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
6100            case 'yy': // 9 years / in 9 years / 9 years ago
6101                if (withoutSuffix || isFuture) {
6102                    return result + (plural$1(number) ? 'roky' : 'let');
6103                } else {
6104                    return result + 'lety';
6105                }
6106                break;
6107        }
6108    }
6109
6110    hooks.defineLocale('cs', {
6111        months : months$3,
6112        monthsShort : monthsShort,
6113        monthsRegex : monthsRegex$1,
6114        monthsShortRegex : monthsRegex$1,
6115        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
6116        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
6117        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,
6118        monthsShortStrictRegex : /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
6119        monthsParse : monthsParse,
6120        longMonthsParse : monthsParse,
6121        shortMonthsParse : monthsParse,
6122        weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
6123        weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
6124        weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
6125        longDateFormat : {
6126            LT: 'H:mm',
6127            LTS : 'H:mm:ss',
6128            L : 'DD.MM.YYYY',
6129            LL : 'D. MMMM YYYY',
6130            LLL : 'D. MMMM YYYY H:mm',
6131            LLLL : 'dddd D. MMMM YYYY H:mm',
6132            l : 'D. M. YYYY'
6133        },
6134        calendar : {
6135            sameDay: '[dnes v] LT',
6136            nextDay: '[zítra v] LT',
6137            nextWeek: function () {
6138                switch (this.day()) {
6139                    case 0:
6140                        return '[v neděli v] LT';
6141                    case 1:
6142                    case 2:
6143                        return '[v] dddd [v] LT';
6144                    case 3:
6145                        return '[ve středu v] LT';
6146                    case 4:
6147                        return '[ve čtvrtek v] LT';
6148                    case 5:
6149                        return '[v pátek v] LT';
6150                    case 6:
6151                        return '[v sobotu v] LT';
6152                }
6153            },
6154            lastDay: '[včera v] LT',
6155            lastWeek: function () {
6156                switch (this.day()) {
6157                    case 0:
6158                        return '[minulou neděli v] LT';
6159                    case 1:
6160                    case 2:
6161                        return '[minulé] dddd [v] LT';
6162                    case 3:
6163                        return '[minulou středu v] LT';
6164                    case 4:
6165                    case 5:
6166                        return '[minulý] dddd [v] LT';
6167                    case 6:
6168                        return '[minulou sobotu v] LT';
6169                }
6170            },
6171            sameElse: 'L'
6172        },
6173        relativeTime : {
6174            future : 'za %s',
6175            past : 'před %s',
6176            s : translate$1,
6177            ss : translate$1,
6178            m : translate$1,
6179            mm : translate$1,
6180            h : translate$1,
6181            hh : translate$1,
6182            d : translate$1,
6183            dd : translate$1,
6184            M : translate$1,
6185            MM : translate$1,
6186            y : translate$1,
6187            yy : translate$1
6188        },
6189        dayOfMonthOrdinalParse : /\d{1,2}\./,
6190        ordinal : '%d.',
6191        week : {
6192            dow : 1, // Monday is the first day of the week.
6193            doy : 4  // The week that contains Jan 4th is the first week of the year.
6194        }
6195    });
6196
6197    //! moment.js locale configuration
6198
6199    hooks.defineLocale('cv', {
6200        months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
6201        monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
6202        weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
6203        weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
6204        weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
6205        longDateFormat : {
6206            LT : 'HH:mm',
6207            LTS : 'HH:mm:ss',
6208            L : 'DD-MM-YYYY',
6209            LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
6210            LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
6211            LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
6212        },
6213        calendar : {
6214            sameDay: '[Паян] LT [сехетре]',
6215            nextDay: '[Ыран] LT [сехетре]',
6216            lastDay: '[Ӗнер] LT [сехетре]',
6217            nextWeek: '[Ҫитес] dddd LT [сехетре]',
6218            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
6219            sameElse: 'L'
6220        },
6221        relativeTime : {
6222            future : function (output) {
vendor: 2,677 bytes, lines 6223-6295
6223                var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
6224                return output + affix;
6225            },
6226            past : '%s каялла',
6227            s : 'пӗр-ик ҫеккунт',
6228            ss : '%d ҫеккунт',
6229            m : 'пӗр минут',
6230            mm : '%d минут',
6231            h : 'пӗр сехет',
6232            hh : '%d сехет',
6233            d : 'пӗр кун',
6234            dd : '%d кун',
6235            M : 'пӗр уйӑх',
6236            MM : '%d уйӑх',
6237            y : 'пӗр ҫул',
6238            yy : '%d ҫул'
6239        },
6240        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
6241        ordinal : '%d-мӗш',
6242        week : {
6243            dow : 1, // Monday is the first day of the week.
6244            doy : 7  // The week that contains Jan 7th is the first week of the year.
6245        }
6246    });
6247
6248    //! moment.js locale configuration
6249
6250    hooks.defineLocale('cy', {
6251        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
6252        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
6253        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
6254        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
6255        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
6256        weekdaysParseExact : true,
6257        // time formats are the same as en-gb
6258        longDateFormat: {
6259            LT: 'HH:mm',
6260            LTS : 'HH:mm:ss',
6261            L: 'DD/MM/YYYY',
6262            LL: 'D MMMM YYYY',
6263            LLL: 'D MMMM YYYY HH:mm',
6264            LLLL: 'dddd, D MMMM YYYY HH:mm'
6265        },
6266        calendar: {
6267            sameDay: '[Heddiw am] LT',
6268            nextDay: '[Yfory am] LT',
6269            nextWeek: 'dddd [am] LT',
6270            lastDay: '[Ddoe am] LT',
6271            lastWeek: 'dddd [diwethaf am] LT',
6272            sameElse: 'L'
6273        },
6274        relativeTime: {
6275            future: 'mewn %s',
6276            past: '%s yn ôl',
6277            s: 'ychydig eiliadau',
6278            ss: '%d eiliad',
6279            m: 'munud',
6280            mm: '%d munud',
6281            h: 'awr',
6282            hh: '%d awr',
6283            d: 'diwrnod',
6284            dd: '%d diwrnod',
6285            M: 'mis',
6286            MM: '%d mis',
6287            y: 'blwyddyn',
6288            yy: '%d flynedd'
6289        },
6290        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
6291        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
6292        ordinal: function (number) {
6293            var b = number,
6294                output = '',
6295                lookup = [
vendor: 64,190 bytes, lines 6296-7994
6296                    '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
6297                    'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
6298                ];
6299            if (b > 20) {
6300                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
6301                    output = 'fed'; // not 30ain, 70ain or 90ain
6302                } else {
6303                    output = 'ain';
6304                }
6305            } else if (b > 0) {
6306                output = lookup[b];
6307            }
6308            return number + output;
6309        },
6310        week : {
6311            dow : 1, // Monday is the first day of the week.
6312            doy : 4  // The week that contains Jan 4th is the first week of the year.
6313        }
6314    });
6315
6316    //! moment.js locale configuration
6317
6318    hooks.defineLocale('da', {
6319        months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
6320        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
6321        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
6322        weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
6323        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
6324        longDateFormat : {
6325            LT : 'HH:mm',
6326            LTS : 'HH:mm:ss',
6327            L : 'DD.MM.YYYY',
6328            LL : 'D. MMMM YYYY',
6329            LLL : 'D. MMMM YYYY HH:mm',
6330            LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'
6331        },
6332        calendar : {
6333            sameDay : '[i dag kl.] LT',
6334            nextDay : '[i morgen kl.] LT',
6335            nextWeek : 'på dddd [kl.] LT',
6336            lastDay : '[i går kl.] LT',
6337            lastWeek : '[i] dddd[s kl.] LT',
6338            sameElse : 'L'
6339        },
6340        relativeTime : {
6341            future : 'om %s',
6342            past : '%s siden',
6343            s : 'få sekunder',
6344            ss : '%d sekunder',
6345            m : 'et minut',
6346            mm : '%d minutter',
6347            h : 'en time',
6348            hh : '%d timer',
6349            d : 'en dag',
6350            dd : '%d dage',
6351            M : 'en måned',
6352            MM : '%d måneder',
6353            y : 'et år',
6354            yy : '%d år'
6355        },
6356        dayOfMonthOrdinalParse: /\d{1,2}\./,
6357        ordinal : '%d.',
6358        week : {
6359            dow : 1, // Monday is the first day of the week.
6360            doy : 4  // The week that contains Jan 4th is the first week of the year.
6361        }
6362    });
6363
6364    //! moment.js locale configuration
6365
6366    function processRelativeTime(number, withoutSuffix, key, isFuture) {
6367        var format = {
6368            'm': ['eine Minute', 'einer Minute'],
6369            'h': ['eine Stunde', 'einer Stunde'],
6370            'd': ['ein Tag', 'einem Tag'],
6371            'dd': [number + ' Tage', number + ' Tagen'],
6372            'M': ['ein Monat', 'einem Monat'],
6373            'MM': [number + ' Monate', number + ' Monaten'],
6374            'y': ['ein Jahr', 'einem Jahr'],
6375            'yy': [number + ' Jahre', number + ' Jahren']
6376        };
6377        return withoutSuffix ? format[key][0] : format[key][1];
6378    }
6379
6380    hooks.defineLocale('de-at', {
6381        months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6382        monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6383        monthsParseExact : true,
6384        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6385        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6386        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6387        weekdaysParseExact : true,
6388        longDateFormat : {
6389            LT: 'HH:mm',
6390            LTS: 'HH:mm:ss',
6391            L : 'DD.MM.YYYY',
6392            LL : 'D. MMMM YYYY',
6393            LLL : 'D. MMMM YYYY HH:mm',
6394            LLLL : 'dddd, D. MMMM YYYY HH:mm'
6395        },
6396        calendar : {
6397            sameDay: '[heute um] LT [Uhr]',
6398            sameElse: 'L',
6399            nextDay: '[morgen um] LT [Uhr]',
6400            nextWeek: 'dddd [um] LT [Uhr]',
6401            lastDay: '[gestern um] LT [Uhr]',
6402            lastWeek: '[letzten] dddd [um] LT [Uhr]'
6403        },
6404        relativeTime : {
6405            future : 'in %s',
6406            past : 'vor %s',
6407            s : 'ein paar Sekunden',
6408            ss : '%d Sekunden',
6409            m : processRelativeTime,
6410            mm : '%d Minuten',
6411            h : processRelativeTime,
6412            hh : '%d Stunden',
6413            d : processRelativeTime,
6414            dd : processRelativeTime,
6415            M : processRelativeTime,
6416            MM : processRelativeTime,
6417            y : processRelativeTime,
6418            yy : processRelativeTime
6419        },
6420        dayOfMonthOrdinalParse: /\d{1,2}\./,
6421        ordinal : '%d.',
6422        week : {
6423            dow : 1, // Monday is the first day of the week.
6424            doy : 4  // The week that contains Jan 4th is the first week of the year.
6425        }
6426    });
6427
6428    //! moment.js locale configuration
6429
6430    function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
6431        var format = {
6432            'm': ['eine Minute', 'einer Minute'],
6433            'h': ['eine Stunde', 'einer Stunde'],
6434            'd': ['ein Tag', 'einem Tag'],
6435            'dd': [number + ' Tage', number + ' Tagen'],
6436            'M': ['ein Monat', 'einem Monat'],
6437            'MM': [number + ' Monate', number + ' Monaten'],
6438            'y': ['ein Jahr', 'einem Jahr'],
6439            'yy': [number + ' Jahre', number + ' Jahren']
6440        };
6441        return withoutSuffix ? format[key][0] : format[key][1];
6442    }
6443
6444    hooks.defineLocale('de-ch', {
6445        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6446        monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6447        monthsParseExact : true,
6448        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6449        weekdaysShort : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6450        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6451        weekdaysParseExact : true,
6452        longDateFormat : {
6453            LT: 'HH:mm',
6454            LTS: 'HH:mm:ss',
6455            L : 'DD.MM.YYYY',
6456            LL : 'D. MMMM YYYY',
6457            LLL : 'D. MMMM YYYY HH:mm',
6458            LLLL : 'dddd, D. MMMM YYYY HH:mm'
6459        },
6460        calendar : {
6461            sameDay: '[heute um] LT [Uhr]',
6462            sameElse: 'L',
6463            nextDay: '[morgen um] LT [Uhr]',
6464            nextWeek: 'dddd [um] LT [Uhr]',
6465            lastDay: '[gestern um] LT [Uhr]',
6466            lastWeek: '[letzten] dddd [um] LT [Uhr]'
6467        },
6468        relativeTime : {
6469            future : 'in %s',
6470            past : 'vor %s',
6471            s : 'ein paar Sekunden',
6472            ss : '%d Sekunden',
6473            m : processRelativeTime$1,
6474            mm : '%d Minuten',
6475            h : processRelativeTime$1,
6476            hh : '%d Stunden',
6477            d : processRelativeTime$1,
6478            dd : processRelativeTime$1,
6479            M : processRelativeTime$1,
6480            MM : processRelativeTime$1,
6481            y : processRelativeTime$1,
6482            yy : processRelativeTime$1
6483        },
6484        dayOfMonthOrdinalParse: /\d{1,2}\./,
6485        ordinal : '%d.',
6486        week : {
6487            dow : 1, // Monday is the first day of the week.
6488            doy : 4  // The week that contains Jan 4th is the first week of the year.
6489        }
6490    });
6491
6492    //! moment.js locale configuration
6493
6494    function processRelativeTime$2(number, withoutSuffix, key, isFuture) {
6495        var format = {
6496            'm': ['eine Minute', 'einer Minute'],
6497            'h': ['eine Stunde', 'einer Stunde'],
6498            'd': ['ein Tag', 'einem Tag'],
6499            'dd': [number + ' Tage', number + ' Tagen'],
6500            'M': ['ein Monat', 'einem Monat'],
6501            'MM': [number + ' Monate', number + ' Monaten'],
6502            'y': ['ein Jahr', 'einem Jahr'],
6503            'yy': [number + ' Jahre', number + ' Jahren']
6504        };
6505        return withoutSuffix ? format[key][0] : format[key][1];
6506    }
6507
6508    hooks.defineLocale('de', {
6509        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6510        monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6511        monthsParseExact : true,
6512        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6513        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6514        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6515        weekdaysParseExact : true,
6516        longDateFormat : {
6517            LT: 'HH:mm',
6518            LTS: 'HH:mm:ss',
6519            L : 'DD.MM.YYYY',
6520            LL : 'D. MMMM YYYY',
6521            LLL : 'D. MMMM YYYY HH:mm',
6522            LLLL : 'dddd, D. MMMM YYYY HH:mm'
6523        },
6524        calendar : {
6525            sameDay: '[heute um] LT [Uhr]',
6526            sameElse: 'L',
6527            nextDay: '[morgen um] LT [Uhr]',
6528            nextWeek: 'dddd [um] LT [Uhr]',
6529            lastDay: '[gestern um] LT [Uhr]',
6530            lastWeek: '[letzten] dddd [um] LT [Uhr]'
6531        },
6532        relativeTime : {
6533            future : 'in %s',
6534            past : 'vor %s',
6535            s : 'ein paar Sekunden',
6536            ss : '%d Sekunden',
6537            m : processRelativeTime$2,
6538            mm : '%d Minuten',
6539            h : processRelativeTime$2,
6540            hh : '%d Stunden',
6541            d : processRelativeTime$2,
6542            dd : processRelativeTime$2,
6543            M : processRelativeTime$2,
6544            MM : processRelativeTime$2,
6545            y : processRelativeTime$2,
6546            yy : processRelativeTime$2
6547        },
6548        dayOfMonthOrdinalParse: /\d{1,2}\./,
6549        ordinal : '%d.',
6550        week : {
6551            dow : 1, // Monday is the first day of the week.
6552            doy : 4  // The week that contains Jan 4th is the first week of the year.
6553        }
6554    });
6555
6556    //! moment.js locale configuration
6557
6558    var months$4 = [
6559        'ޖެނުއަރީ',
6560        'ފެބްރުއަރީ',
6561        'މާރިޗު',
6562        'އޭޕްރީލު',
6563        'މޭ',
6564        'ޖޫން',
6565        'ޖުލައި',
6566        'އޯގަސްޓު',
6567        'ސެޕްޓެމްބަރު',
6568        'އޮކްޓޯބަރު',
6569        'ނޮވެމްބަރު',
6570        'ޑިސެމްބަރު'
6571    ], weekdays = [
6572        'އާދިއްތަ',
6573        'ހޯމަ',
6574        'އަންގާރަ',
6575        'ބުދަ',
6576        'ބުރާސްފަތި',
6577        'ހުކުރު',
6578        'ހޮނިހިރު'
6579    ];
6580
6581    hooks.defineLocale('dv', {
6582        months : months$4,
6583        monthsShort : months$4,
6584        weekdays : weekdays,
6585        weekdaysShort : weekdays,
6586        weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
6587        longDateFormat : {
6588
6589            LT : 'HH:mm',
6590            LTS : 'HH:mm:ss',
6591            L : 'D/M/YYYY',
6592            LL : 'D MMMM YYYY',
6593            LLL : 'D MMMM YYYY HH:mm',
6594            LLLL : 'dddd D MMMM YYYY HH:mm'
6595        },
6596        meridiemParse: /މކ|މފ/,
6597        isPM : function (input) {
6598            return 'މފ' === input;
6599        },
6600        meridiem : function (hour, minute, isLower) {
6601            if (hour < 12) {
6602                return 'މކ';
6603            } else {
6604                return 'މފ';
6605            }
6606        },
6607        calendar : {
6608            sameDay : '[މިއަދު] LT',
6609            nextDay : '[މާދަމާ] LT',
6610            nextWeek : 'dddd LT',
6611            lastDay : '[އިއްޔެ] LT',
6612            lastWeek : '[ފާއިތުވި] dddd LT',
6613            sameElse : 'L'
6614        },
6615        relativeTime : {
6616            future : 'ތެރޭގައި %s',
6617            past : 'ކުރިން %s',
6618            s : 'ސިކުންތުކޮޅެއް',
6619            ss : 'd% ސިކުންތު',
6620            m : 'މިނިޓެއް',
6621            mm : 'މިނިޓު %d',
6622            h : 'ގަޑިއިރެއް',
6623            hh : 'ގަޑިއިރު %d',
6624            d : 'ދުވަހެއް',
6625            dd : 'ދުވަސް %d',
6626            M : 'މަހެއް',
6627            MM : 'މަސް %d',
6628            y : 'އަހަރެއް',
6629            yy : 'އަހަރު %d'
6630        },
6631        preparse: function (string) {
6632            return string.replace(/،/g, ',');
6633        },
6634        postformat: function (string) {
6635            return string.replace(/,/g, '،');
6636        },
6637        week : {
6638            dow : 7,  // Sunday is the first day of the week.
6639            doy : 12  // The week that contains Jan 12th is the first week of the year.
6640        }
6641    });
6642
6643    //! moment.js locale configuration
6644
6645    hooks.defineLocale('el', {
6646        monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
6647        monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
6648        months : function (momentToFormat, format) {
6649            if (!momentToFormat) {
6650                return this._monthsNominativeEl;
6651            } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
6652                return this._monthsGenitiveEl[momentToFormat.month()];
6653            } else {
6654                return this._monthsNominativeEl[momentToFormat.month()];
6655            }
6656        },
6657        monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
6658        weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
6659        weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
6660        weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
6661        meridiem : function (hours, minutes, isLower) {
6662            if (hours > 11) {
6663                return isLower ? 'μμ' : 'ΜΜ';
6664            } else {
6665                return isLower ? 'πμ' : 'ΠΜ';
6666            }
6667        },
6668        isPM : function (input) {
6669            return ((input + '').toLowerCase()[0] === 'μ');
6670        },
6671        meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
6672        longDateFormat : {
6673            LT : 'h:mm A',
6674            LTS : 'h:mm:ss A',
6675            L : 'DD/MM/YYYY',
6676            LL : 'D MMMM YYYY',
6677            LLL : 'D MMMM YYYY h:mm A',
6678            LLLL : 'dddd, D MMMM YYYY h:mm A'
6679        },
6680        calendarEl : {
6681            sameDay : '[Σήμερα {}] LT',
6682            nextDay : '[Αύριο {}] LT',
6683            nextWeek : 'dddd [{}] LT',
6684            lastDay : '[Χθες {}] LT',
6685            lastWeek : function () {
6686                switch (this.day()) {
6687                    case 6:
6688                        return '[το προηγούμενο] dddd [{}] LT';
6689                    default:
6690                        return '[την προηγούμενη] dddd [{}] LT';
6691                }
6692            },
6693            sameElse : 'L'
6694        },
6695        calendar : function (key, mom) {
6696            var output = this._calendarEl[key],
6697                hours = mom && mom.hours();
6698            if (isFunction(output)) {
6699                output = output.apply(mom);
6700            }
6701            return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
6702        },
6703        relativeTime : {
6704            future : 'σε %s',
6705            past : '%s πριν',
6706            s : 'λίγα δευτερόλεπτα',
6707            ss : '%d δευτερόλεπτα',
6708            m : 'ένα λεπτό',
6709            mm : '%d λεπτά',
6710            h : 'μία ώρα',
6711            hh : '%d ώρες',
6712            d : 'μία μέρα',
6713            dd : '%d μέρες',
6714            M : 'ένας μήνας',
6715            MM : '%d μήνες',
6716            y : 'ένας χρόνος',
6717            yy : '%d χρόνια'
6718        },
6719        dayOfMonthOrdinalParse: /\d{1,2}η/,
6720        ordinal: '%dη',
6721        week : {
6722            dow : 1, // Monday is the first day of the week.
6723            doy : 4  // The week that contains Jan 4st is the first week of the year.
6724        }
6725    });
6726
6727    //! moment.js locale configuration
6728
6729    hooks.defineLocale('en-SG', {
6730        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6731        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6732        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6733        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6734        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6735        longDateFormat : {
6736            LT : 'HH:mm',
6737            LTS : 'HH:mm:ss',
6738            L : 'DD/MM/YYYY',
6739            LL : 'D MMMM YYYY',
6740            LLL : 'D MMMM YYYY HH:mm',
6741            LLLL : 'dddd, D MMMM YYYY HH:mm'
6742        },
6743        calendar : {
6744            sameDay : '[Today at] LT',
6745            nextDay : '[Tomorrow at] LT',
6746            nextWeek : 'dddd [at] LT',
6747            lastDay : '[Yesterday at] LT',
6748            lastWeek : '[Last] dddd [at] LT',
6749            sameElse : 'L'
6750        },
6751        relativeTime : {
6752            future : 'in %s',
6753            past : '%s ago',
6754            s : 'a few seconds',
6755            ss : '%d seconds',
6756            m : 'a minute',
6757            mm : '%d minutes',
6758            h : 'an hour',
6759            hh : '%d hours',
6760            d : 'a day',
6761            dd : '%d days',
6762            M : 'a month',
6763            MM : '%d months',
6764            y : 'a year',
6765            yy : '%d years'
6766        },
6767        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6768        ordinal : function (number) {
6769            var b = number % 10,
6770                output = (~~(number % 100 / 10) === 1) ? 'th' :
6771                (b === 1) ? 'st' :
6772                (b === 2) ? 'nd' :
6773                (b === 3) ? 'rd' : 'th';
6774            return number + output;
6775        },
6776        week : {
6777            dow : 1, // Monday is the first day of the week.
6778            doy : 4  // The week that contains Jan 4th is the first week of the year.
6779        }
6780    });
6781
6782    //! moment.js locale configuration
6783
6784    hooks.defineLocale('en-au', {
6785        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6786        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6787        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6788        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6789        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6790        longDateFormat : {
6791            LT : 'h:mm A',
6792            LTS : 'h:mm:ss A',
6793            L : 'DD/MM/YYYY',
6794            LL : 'D MMMM YYYY',
6795            LLL : 'D MMMM YYYY h:mm A',
6796            LLLL : 'dddd, D MMMM YYYY h:mm A'
6797        },
6798        calendar : {
6799            sameDay : '[Today at] LT',
6800            nextDay : '[Tomorrow at] LT',
6801            nextWeek : 'dddd [at] LT',
6802            lastDay : '[Yesterday at] LT',
6803            lastWeek : '[Last] dddd [at] LT',
6804            sameElse : 'L'
6805        },
6806        relativeTime : {
6807            future : 'in %s',
6808            past : '%s ago',
6809            s : 'a few seconds',
6810            ss : '%d seconds',
6811            m : 'a minute',
6812            mm : '%d minutes',
6813            h : 'an hour',
6814            hh : '%d hours',
6815            d : 'a day',
6816            dd : '%d days',
6817            M : 'a month',
6818            MM : '%d months',
6819            y : 'a year',
6820            yy : '%d years'
6821        },
6822        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6823        ordinal : function (number) {
6824            var b = number % 10,
6825                output = (~~(number % 100 / 10) === 1) ? 'th' :
6826                (b === 1) ? 'st' :
6827                (b === 2) ? 'nd' :
6828                (b === 3) ? 'rd' : 'th';
6829            return number + output;
6830        },
6831        week : {
6832            dow : 1, // Monday is the first day of the week.
6833            doy : 4  // The week that contains Jan 4th is the first week of the year.
6834        }
6835    });
6836
6837    //! moment.js locale configuration
6838
6839    hooks.defineLocale('en-ca', {
6840        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6841        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6842        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6843        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6844        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6845        longDateFormat : {
6846            LT : 'h:mm A',
6847            LTS : 'h:mm:ss A',
6848            L : 'YYYY-MM-DD',
6849            LL : 'MMMM D, YYYY',
6850            LLL : 'MMMM D, YYYY h:mm A',
6851            LLLL : 'dddd, MMMM D, YYYY h:mm A'
6852        },
6853        calendar : {
6854            sameDay : '[Today at] LT',
6855            nextDay : '[Tomorrow at] LT',
6856            nextWeek : 'dddd [at] LT',
6857            lastDay : '[Yesterday at] LT',
6858            lastWeek : '[Last] dddd [at] LT',
6859            sameElse : 'L'
6860        },
6861        relativeTime : {
6862            future : 'in %s',
6863            past : '%s ago',
6864            s : 'a few seconds',
6865            ss : '%d seconds',
6866            m : 'a minute',
6867            mm : '%d minutes',
6868            h : 'an hour',
6869            hh : '%d hours',
6870            d : 'a day',
6871            dd : '%d days',
6872            M : 'a month',
6873            MM : '%d months',
6874            y : 'a year',
6875            yy : '%d years'
6876        },
6877        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6878        ordinal : function (number) {
6879            var b = number % 10,
6880                output = (~~(number % 100 / 10) === 1) ? 'th' :
6881                (b === 1) ? 'st' :
6882                (b === 2) ? 'nd' :
6883                (b === 3) ? 'rd' : 'th';
6884            return number + output;
6885        }
6886    });
6887
6888    //! moment.js locale configuration
6889
6890    hooks.defineLocale('en-gb', {
6891        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6892        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6893        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6894        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6895        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6896        longDateFormat : {
6897            LT : 'HH:mm',
6898            LTS : 'HH:mm:ss',
6899            L : 'DD/MM/YYYY',
6900            LL : 'D MMMM YYYY',
6901            LLL : 'D MMMM YYYY HH:mm',
6902            LLLL : 'dddd, D MMMM YYYY HH:mm'
6903        },
6904        calendar : {
6905            sameDay : '[Today at] LT',
6906            nextDay : '[Tomorrow at] LT',
6907            nextWeek : 'dddd [at] LT',
6908            lastDay : '[Yesterday at] LT',
6909            lastWeek : '[Last] dddd [at] LT',
6910            sameElse : 'L'
6911        },
6912        relativeTime : {
6913            future : 'in %s',
6914            past : '%s ago',
6915            s : 'a few seconds',
6916            ss : '%d seconds',
6917            m : 'a minute',
6918            mm : '%d minutes',
6919            h : 'an hour',
6920            hh : '%d hours',
6921            d : 'a day',
6922            dd : '%d days',
6923            M : 'a month',
6924            MM : '%d months',
6925            y : 'a year',
6926            yy : '%d years'
6927        },
6928        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6929        ordinal : function (number) {
6930            var b = number % 10,
6931                output = (~~(number % 100 / 10) === 1) ? 'th' :
6932                (b === 1) ? 'st' :
6933                (b === 2) ? 'nd' :
6934                (b === 3) ? 'rd' : 'th';
6935            return number + output;
6936        },
6937        week : {
6938            dow : 1, // Monday is the first day of the week.
6939            doy : 4  // The week that contains Jan 4th is the first week of the year.
6940        }
6941    });
6942
6943    //! moment.js locale configuration
6944
6945    hooks.defineLocale('en-ie', {
6946        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6947        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6948        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6949        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6950        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6951        longDateFormat : {
6952            LT : 'HH:mm',
6953            LTS : 'HH:mm:ss',
6954            L : 'DD/MM/YYYY',
6955            LL : 'D MMMM YYYY',
6956            LLL : 'D MMMM YYYY HH:mm',
6957            LLLL : 'dddd D MMMM YYYY HH:mm'
6958        },
6959        calendar : {
6960            sameDay : '[Today at] LT',
6961            nextDay : '[Tomorrow at] LT',
6962            nextWeek : 'dddd [at] LT',
6963            lastDay : '[Yesterday at] LT',
6964            lastWeek : '[Last] dddd [at] LT',
6965            sameElse : 'L'
6966        },
6967        relativeTime : {
6968            future : 'in %s',
6969            past : '%s ago',
6970            s : 'a few seconds',
6971            ss : '%d seconds',
6972            m : 'a minute',
6973            mm : '%d minutes',
6974            h : 'an hour',
6975            hh : '%d hours',
6976            d : 'a day',
6977            dd : '%d days',
6978            M : 'a month',
6979            MM : '%d months',
6980            y : 'a year',
6981            yy : '%d years'
6982        },
6983        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6984        ordinal : function (number) {
6985            var b = number % 10,
6986                output = (~~(number % 100 / 10) === 1) ? 'th' :
6987                (b === 1) ? 'st' :
6988                (b === 2) ? 'nd' :
6989                (b === 3) ? 'rd' : 'th';
6990            return number + output;
6991        },
6992        week : {
6993            dow : 1, // Monday is the first day of the week.
6994            doy : 4  // The week that contains Jan 4th is the first week of the year.
6995        }
6996    });
6997
6998    //! moment.js locale configuration
6999
7000    hooks.defineLocale('en-il', {
7001        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
7002        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
7003        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
7004        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
7005        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
7006        longDateFormat : {
7007            LT : 'HH:mm',
7008            LTS : 'HH:mm:ss',
7009            L : 'DD/MM/YYYY',
7010            LL : 'D MMMM YYYY',
7011            LLL : 'D MMMM YYYY HH:mm',
7012            LLLL : 'dddd, D MMMM YYYY HH:mm'
7013        },
7014        calendar : {
7015            sameDay : '[Today at] LT',
7016            nextDay : '[Tomorrow at] LT',
7017            nextWeek : 'dddd [at] LT',
7018            lastDay : '[Yesterday at] LT',
7019            lastWeek : '[Last] dddd [at] LT',
7020            sameElse : 'L'
7021        },
7022        relativeTime : {
7023            future : 'in %s',
7024            past : '%s ago',
7025            s : 'a few seconds',
7026            m : 'a minute',
7027            mm : '%d minutes',
7028            h : 'an hour',
7029            hh : '%d hours',
7030            d : 'a day',
7031            dd : '%d days',
7032            M : 'a month',
7033            MM : '%d months',
7034            y : 'a year',
7035            yy : '%d years'
7036        },
7037        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
7038        ordinal : function (number) {
7039            var b = number % 10,
7040                output = (~~(number % 100 / 10) === 1) ? 'th' :
7041                (b === 1) ? 'st' :
7042                (b === 2) ? 'nd' :
7043                (b === 3) ? 'rd' : 'th';
7044            return number + output;
7045        }
7046    });
7047
7048    //! moment.js locale configuration
7049
7050    hooks.defineLocale('en-nz', {
7051        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
7052        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
7053        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
7054        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
7055        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
7056        longDateFormat : {
7057            LT : 'h:mm A',
7058            LTS : 'h:mm:ss A',
7059            L : 'DD/MM/YYYY',
7060            LL : 'D MMMM YYYY',
7061            LLL : 'D MMMM YYYY h:mm A',
7062            LLLL : 'dddd, D MMMM YYYY h:mm A'
7063        },
7064        calendar : {
7065            sameDay : '[Today at] LT',
7066            nextDay : '[Tomorrow at] LT',
7067            nextWeek : 'dddd [at] LT',
7068            lastDay : '[Yesterday at] LT',
7069            lastWeek : '[Last] dddd [at] LT',
7070            sameElse : 'L'
7071        },
7072        relativeTime : {
7073            future : 'in %s',
7074            past : '%s ago',
7075            s : 'a few seconds',
7076            ss : '%d seconds',
7077            m : 'a minute',
7078            mm : '%d minutes',
7079            h : 'an hour',
7080            hh : '%d hours',
7081            d : 'a day',
7082            dd : '%d days',
7083            M : 'a month',
7084            MM : '%d months',
7085            y : 'a year',
7086            yy : '%d years'
7087        },
7088        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
7089        ordinal : function (number) {
7090            var b = number % 10,
7091                output = (~~(number % 100 / 10) === 1) ? 'th' :
7092                (b === 1) ? 'st' :
7093                (b === 2) ? 'nd' :
7094                (b === 3) ? 'rd' : 'th';
7095            return number + output;
7096        },
7097        week : {
7098            dow : 1, // Monday is the first day of the week.
7099            doy : 4  // The week that contains Jan 4th is the first week of the year.
7100        }
7101    });
7102
7103    //! moment.js locale configuration
7104
7105    hooks.defineLocale('eo', {
7106        months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split('_'),
7107        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aÅ­g_sep_okt_nov_dec'.split('_'),
7108        weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
7109        weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
7110        weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
7111        longDateFormat : {
7112            LT : 'HH:mm',
7113            LTS : 'HH:mm:ss',
7114            L : 'YYYY-MM-DD',
7115            LL : 'D[-a de] MMMM, YYYY',
7116            LLL : 'D[-a de] MMMM, YYYY HH:mm',
7117            LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'
7118        },
7119        meridiemParse: /[ap]\.t\.m/i,
7120        isPM: function (input) {
7121            return input.charAt(0).toLowerCase() === 'p';
7122        },
7123        meridiem : function (hours, minutes, isLower) {
7124            if (hours > 11) {
7125                return isLower ? 'p.t.m.' : 'P.T.M.';
7126            } else {
7127                return isLower ? 'a.t.m.' : 'A.T.M.';
7128            }
7129        },
7130        calendar : {
7131            sameDay : '[HodiaÅ­ je] LT',
7132            nextDay : '[MorgaÅ­ je] LT',
7133            nextWeek : 'dddd [je] LT',
7134            lastDay : '[HieraÅ­ je] LT',
7135            lastWeek : '[pasinta] dddd [je] LT',
7136            sameElse : 'L'
7137        },
7138        relativeTime : {
7139            future : 'post %s',
7140            past : 'antaÅ­ %s',
7141            s : 'sekundoj',
7142            ss : '%d sekundoj',
7143            m : 'minuto',
7144            mm : '%d minutoj',
7145            h : 'horo',
7146            hh : '%d horoj',
7147            d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
7148            dd : '%d tagoj',
7149            M : 'monato',
7150            MM : '%d monatoj',
7151            y : 'jaro',
7152            yy : '%d jaroj'
7153        },
7154        dayOfMonthOrdinalParse: /\d{1,2}a/,
7155        ordinal : '%da',
7156        week : {
7157            dow : 1, // Monday is the first day of the week.
7158            doy : 7  // The week that contains Jan 7th is the first week of the year.
7159        }
7160    });
7161
7162    //! moment.js locale configuration
7163
7164    var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7165        monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7166
7167    var monthsParse$1 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];
7168    var monthsRegex$2 = /^(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;
7169
7170    hooks.defineLocale('es-do', {
7171        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7172        monthsShort : function (m, format) {
7173            if (!m) {
7174                return monthsShortDot;
7175            } else if (/-MMM-/.test(format)) {
7176                return monthsShort$1[m.month()];
7177            } else {
7178                return monthsShortDot[m.month()];
7179            }
7180        },
7181        monthsRegex: monthsRegex$2,
7182        monthsShortRegex: monthsRegex$2,
7183        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7184        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7185        monthsParse: monthsParse$1,
7186        longMonthsParse: monthsParse$1,
7187        shortMonthsParse: monthsParse$1,
7188        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7189        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7190        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7191        weekdaysParseExact : true,
7192        longDateFormat : {
7193            LT : 'h:mm A',
7194            LTS : 'h:mm:ss A',
7195            L : 'DD/MM/YYYY',
7196            LL : 'D [de] MMMM [de] YYYY',
7197            LLL : 'D [de] MMMM [de] YYYY h:mm A',
7198            LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'
7199        },
7200        calendar : {
7201            sameDay : function () {
7202                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7203            },
7204            nextDay : function () {
7205                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7206            },
7207            nextWeek : function () {
7208                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7209            },
7210            lastDay : function () {
7211                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7212            },
7213            lastWeek : function () {
7214                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7215            },
7216            sameElse : 'L'
7217        },
7218        relativeTime : {
7219            future : 'en %s',
7220            past : 'hace %s',
7221            s : 'unos segundos',
7222            ss : '%d segundos',
7223            m : 'un minuto',
7224            mm : '%d minutos',
7225            h : 'una hora',
7226            hh : '%d horas',
7227            d : 'un día',
7228            dd : '%d días',
7229            M : 'un mes',
7230            MM : '%d meses',
7231            y : 'un año',
7232            yy : '%d años'
7233        },
7234        dayOfMonthOrdinalParse : /\d{1,2}º/,
7235        ordinal : '%dº',
7236        week : {
7237            dow : 1, // Monday is the first day of the week.
7238            doy : 4  // The week that contains Jan 4th is the first week of the year.
7239        }
7240    });
7241
7242    //! moment.js locale configuration
7243
7244    var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7245        monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7246
7247    var monthsParse$2 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];
7248    var 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;
7249
7250    hooks.defineLocale('es-us', {
7251        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7252        monthsShort : function (m, format) {
7253            if (!m) {
7254                return monthsShortDot$1;
7255            } else if (/-MMM-/.test(format)) {
7256                return monthsShort$2[m.month()];
7257            } else {
7258                return monthsShortDot$1[m.month()];
7259            }
7260        },
7261        monthsRegex: monthsRegex$3,
7262        monthsShortRegex: monthsRegex$3,
7263        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7264        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7265        monthsParse: monthsParse$2,
7266        longMonthsParse: monthsParse$2,
7267        shortMonthsParse: monthsParse$2,
7268        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7269        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7270        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7271        weekdaysParseExact : true,
7272        longDateFormat : {
7273            LT : 'h:mm A',
7274            LTS : 'h:mm:ss A',
7275            L : 'MM/DD/YYYY',
7276            LL : 'D [de] MMMM [de] YYYY',
7277            LLL : 'D [de] MMMM [de] YYYY h:mm A',
7278            LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'
7279        },
7280        calendar : {
7281            sameDay : function () {
7282                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7283            },
7284            nextDay : function () {
7285                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7286            },
7287            nextWeek : function () {
7288                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7289            },
7290            lastDay : function () {
7291                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7292            },
7293            lastWeek : function () {
7294                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7295            },
7296            sameElse : 'L'
7297        },
7298        relativeTime : {
7299            future : 'en %s',
7300            past : 'hace %s',
7301            s : 'unos segundos',
7302            ss : '%d segundos',
7303            m : 'un minuto',
7304            mm : '%d minutos',
7305            h : 'una hora',
7306            hh : '%d horas',
7307            d : 'un día',
7308            dd : '%d días',
7309            M : 'un mes',
7310            MM : '%d meses',
7311            y : 'un año',
7312            yy : '%d años'
7313        },
7314        dayOfMonthOrdinalParse : /\d{1,2}º/,
7315        ordinal : '%dº',
7316        week : {
7317            dow : 0, // Sunday is the first day of the week.
7318            doy : 6  // The week that contains Jan 6th is the first week of the year.
7319        }
7320    });
7321
7322    //! moment.js locale configuration
7323
7324    var monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7325        monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7326
7327    var monthsParse$3 = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];
7328    var 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;
7329
7330    hooks.defineLocale('es', {
7331        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7332        monthsShort : function (m, format) {
7333            if (!m) {
7334                return monthsShortDot$2;
7335            } else if (/-MMM-/.test(format)) {
7336                return monthsShort$3[m.month()];
7337            } else {
7338                return monthsShortDot$2[m.month()];
7339            }
7340        },
7341        monthsRegex : monthsRegex$4,
7342        monthsShortRegex : monthsRegex$4,
7343        monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7344        monthsShortStrictRegex : /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7345        monthsParse : monthsParse$3,
7346        longMonthsParse : monthsParse$3,
7347        shortMonthsParse : monthsParse$3,
7348        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7349        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7350        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7351        weekdaysParseExact : true,
7352        longDateFormat : {
7353            LT : 'H:mm',
7354            LTS : 'H:mm:ss',
7355            L : 'DD/MM/YYYY',
7356            LL : 'D [de] MMMM [de] YYYY',
7357            LLL : 'D [de] MMMM [de] YYYY H:mm',
7358            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
7359        },
7360        calendar : {
7361            sameDay : function () {
7362                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7363            },
7364            nextDay : function () {
7365                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7366            },
7367            nextWeek : function () {
7368                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7369            },
7370            lastDay : function () {
7371                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7372            },
7373            lastWeek : function () {
7374                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7375            },
7376            sameElse : 'L'
7377        },
7378        relativeTime : {
7379            future : 'en %s',
7380            past : 'hace %s',
7381            s : 'unos segundos',
7382            ss : '%d segundos',
7383            m : 'un minuto',
7384            mm : '%d minutos',
7385            h : 'una hora',
7386            hh : '%d horas',
7387            d : 'un día',
7388            dd : '%d días',
7389            M : 'un mes',
7390            MM : '%d meses',
7391            y : 'un año',
7392            yy : '%d años'
7393        },
7394        dayOfMonthOrdinalParse : /\d{1,2}º/,
7395        ordinal : '%dº',
7396        week : {
7397            dow : 1, // Monday is the first day of the week.
7398            doy : 4  // The week that contains Jan 4th is the first week of the year.
7399        }
7400    });
7401
7402    //! moment.js locale configuration
7403
7404    function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
7405        var format = {
7406            's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
7407            'ss': [number + 'sekundi', number + 'sekundit'],
7408            'm' : ['ühe minuti', 'üks minut'],
7409            'mm': [number + ' minuti', number + ' minutit'],
7410            'h' : ['ühe tunni', 'tund aega', 'üks tund'],
7411            'hh': [number + ' tunni', number + ' tundi'],
7412            'd' : ['ühe päeva', 'üks päev'],
7413            'M' : ['kuu aja', 'kuu aega', 'üks kuu'],
7414            'MM': [number + ' kuu', number + ' kuud'],
7415            'y' : ['ühe aasta', 'aasta', 'üks aasta'],
7416            'yy': [number + ' aasta', number + ' aastat']
7417        };
7418        if (withoutSuffix) {
7419            return format[key][2] ? format[key][2] : format[key][1];
7420        }
7421        return isFuture ? format[key][0] : format[key][1];
7422    }
7423
7424    hooks.defineLocale('et', {
7425        months        : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
7426        monthsShort   : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
7427        weekdays      : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
7428        weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),
7429        weekdaysMin   : 'P_E_T_K_N_R_L'.split('_'),
7430        longDateFormat : {
7431            LT   : 'H:mm',
7432            LTS : 'H:mm:ss',
7433            L    : 'DD.MM.YYYY',
7434            LL   : 'D. MMMM YYYY',
7435            LLL  : 'D. MMMM YYYY H:mm',
7436            LLLL : 'dddd, D. MMMM YYYY H:mm'
7437        },
7438        calendar : {
7439            sameDay  : '[Täna,] LT',
7440            nextDay  : '[Homme,] LT',
7441            nextWeek : '[Järgmine] dddd LT',
7442            lastDay  : '[Eile,] LT',
7443            lastWeek : '[Eelmine] dddd LT',
7444            sameElse : 'L'
7445        },
7446        relativeTime : {
7447            future : '%s pärast',
7448            past   : '%s tagasi',
7449            s      : processRelativeTime$3,
7450            ss     : processRelativeTime$3,
7451            m      : processRelativeTime$3,
7452            mm     : processRelativeTime$3,
7453            h      : processRelativeTime$3,
7454            hh     : processRelativeTime$3,
7455            d      : processRelativeTime$3,
7456            dd     : '%d päeva',
7457            M      : processRelativeTime$3,
7458            MM     : processRelativeTime$3,
7459            y      : processRelativeTime$3,
7460            yy     : processRelativeTime$3
7461        },
7462        dayOfMonthOrdinalParse: /\d{1,2}\./,
7463        ordinal : '%d.',
7464        week : {
7465            dow : 1, // Monday is the first day of the week.
7466            doy : 4  // The week that contains Jan 4th is the first week of the year.
7467        }
7468    });
7469
7470    //! moment.js locale configuration
7471
7472    hooks.defineLocale('eu', {
7473        months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
7474        monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
7475        monthsParseExact : true,
7476        weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
7477        weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),
7478        weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
7479        weekdaysParseExact : true,
7480        longDateFormat : {
7481            LT : 'HH:mm',
7482            LTS : 'HH:mm:ss',
7483            L : 'YYYY-MM-DD',
7484            LL : 'YYYY[ko] MMMM[ren] D[a]',
7485            LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',
7486            LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
7487            l : 'YYYY-M-D',
7488            ll : 'YYYY[ko] MMM D[a]',
7489            lll : 'YYYY[ko] MMM D[a] HH:mm',
7490            llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'
7491        },
7492        calendar : {
7493            sameDay : '[gaur] LT[etan]',
7494            nextDay : '[bihar] LT[etan]',
7495            nextWeek : 'dddd LT[etan]',
7496            lastDay : '[atzo] LT[etan]',
7497            lastWeek : '[aurreko] dddd LT[etan]',
7498            sameElse : 'L'
7499        },
7500        relativeTime : {
7501            future : '%s barru',
7502            past : 'duela %s',
7503            s : 'segundo batzuk',
7504            ss : '%d segundo',
7505            m : 'minutu bat',
7506            mm : '%d minutu',
7507            h : 'ordu bat',
7508            hh : '%d ordu',
7509            d : 'egun bat',
7510            dd : '%d egun',
7511            M : 'hilabete bat',
7512            MM : '%d hilabete',
7513            y : 'urte bat',
7514            yy : '%d urte'
7515        },
7516        dayOfMonthOrdinalParse: /\d{1,2}\./,
7517        ordinal : '%d.',
7518        week : {
7519            dow : 1, // Monday is the first day of the week.
7520            doy : 7  // The week that contains Jan 7th is the first week of the year.
7521        }
7522    });
7523
7524    //! moment.js locale configuration
7525
7526    var symbolMap$5 = {
7527        '1': 'Û±',
7528        '2': 'Û²',
7529        '3': 'Û³',
7530        '4': 'Û´',
7531        '5': 'Ûµ',
7532        '6': 'Û¶',
7533        '7': 'Û·',
7534        '8': 'Û¸',
7535        '9': 'Û¹',
7536        '0': 'Û°'
7537    }, numberMap$4 = {
7538        'Û±': '1',
7539        'Û²': '2',
7540        'Û³': '3',
7541        'Û´': '4',
7542        'Ûµ': '5',
7543        'Û¶': '6',
7544        'Û·': '7',
7545        'Û¸': '8',
7546        'Û¹': '9',
7547        'Û°': '0'
7548    };
7549
7550    hooks.defineLocale('fa', {
7551        months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
7552        monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
7553        weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
7554        weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
7555        weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
7556        weekdaysParseExact : true,
7557        longDateFormat : {
7558            LT : 'HH:mm',
7559            LTS : 'HH:mm:ss',
7560            L : 'DD/MM/YYYY',
7561            LL : 'D MMMM YYYY',
7562            LLL : 'D MMMM YYYY HH:mm',
7563            LLLL : 'dddd, D MMMM YYYY HH:mm'
7564        },
7565        meridiemParse: /قبل از ظهر|بعد از ظهر/,
7566        isPM: function (input) {
7567            return /بعد از ظهر/.test(input);
7568        },
7569        meridiem : function (hour, minute, isLower) {
7570            if (hour < 12) {
7571                return 'قبل از ظهر';
7572            } else {
7573                return 'بعد از ظهر';
7574            }
7575        },
7576        calendar : {
7577            sameDay : '[امروز ساعت] LT',
7578            nextDay : '[فردا ساعت] LT',
7579            nextWeek : 'dddd [ساعت] LT',
7580            lastDay : '[دیروز ساعت] LT',
7581            lastWeek : 'dddd [پیش] [ساعت] LT',
7582            sameElse : 'L'
7583        },
7584        relativeTime : {
7585            future : 'در %s',
7586            past : '%s پیش',
7587            s : 'چند ثانیه',
7588            ss : 'ثانیه d%',
7589            m : 'یک دقیقه',
7590            mm : '%d دقیقه',
7591            h : 'یک ساعت',
7592            hh : '%d ساعت',
7593            d : 'یک روز',
7594            dd : '%d روز',
7595            M : 'یک ماه',
7596            MM : '%d ماه',
7597            y : 'یک سال',
7598            yy : '%d سال'
7599        },
7600        preparse: function (string) {
7601            return string.replace(/[Û°-Û¹]/g, function (match) {
7602                return numberMap$4[match];
7603            }).replace(/،/g, ',');
7604        },
7605        postformat: function (string) {
7606            return string.replace(/\d/g, function (match) {
7607                return symbolMap$5[match];
7608            }).replace(/,/g, '،');
7609        },
7610        dayOfMonthOrdinalParse: /\d{1,2}م/,
7611        ordinal : '%dم',
7612        week : {
7613            dow : 6, // Saturday is the first day of the week.
7614            doy : 12 // The week that contains Jan 12th is the first week of the year.
7615        }
7616    });
7617
7618    //! moment.js locale configuration
7619
7620    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
7621        numbersFuture = [
7622            'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
7623            numbersPast[7], numbersPast[8], numbersPast[9]
7624        ];
7625    function translate$2(number, withoutSuffix, key, isFuture) {
7626        var result = '';
7627        switch (key) {
7628            case 's':
7629                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
7630            case 'ss':
7631                return isFuture ? 'sekunnin' : 'sekuntia';
7632            case 'm':
7633                return isFuture ? 'minuutin' : 'minuutti';
7634            case 'mm':
7635                result = isFuture ? 'minuutin' : 'minuuttia';
7636                break;
7637            case 'h':
7638                return isFuture ? 'tunnin' : 'tunti';
7639            case 'hh':
7640                result = isFuture ? 'tunnin' : 'tuntia';
7641                break;
7642            case 'd':
7643                return isFuture ? 'päivän' : 'päivä';
7644            case 'dd':
7645                result = isFuture ? 'päivän' : 'päivää';
7646                break;
7647            case 'M':
7648                return isFuture ? 'kuukauden' : 'kuukausi';
7649            case 'MM':
7650                result = isFuture ? 'kuukauden' : 'kuukautta';
7651                break;
7652            case 'y':
7653                return isFuture ? 'vuoden' : 'vuosi';
7654            case 'yy':
7655                result = isFuture ? 'vuoden' : 'vuotta';
7656                break;
7657        }
7658        result = verbalNumber(number, isFuture) + ' ' + result;
7659        return result;
7660    }
7661    function verbalNumber(number, isFuture) {
7662        return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
7663    }
7664
7665    hooks.defineLocale('fi', {
7666        months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
7667        monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
7668        weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
7669        weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
7670        weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
7671        longDateFormat : {
7672            LT : 'HH.mm',
7673            LTS : 'HH.mm.ss',
7674            L : 'DD.MM.YYYY',
7675            LL : 'Do MMMM[ta] YYYY',
7676            LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
7677            LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
7678            l : 'D.M.YYYY',
7679            ll : 'Do MMM YYYY',
7680            lll : 'Do MMM YYYY, [klo] HH.mm',
7681            llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
7682        },
7683        calendar : {
7684            sameDay : '[tänään] [klo] LT',
7685            nextDay : '[huomenna] [klo] LT',
7686            nextWeek : 'dddd [klo] LT',
7687            lastDay : '[eilen] [klo] LT',
7688            lastWeek : '[viime] dddd[na] [klo] LT',
7689            sameElse : 'L'
7690        },
7691        relativeTime : {
7692            future : '%s päästä',
7693            past : '%s sitten',
7694            s : translate$2,
7695            ss : translate$2,
7696            m : translate$2,
7697            mm : translate$2,
7698            h : translate$2,
7699            hh : translate$2,
7700            d : translate$2,
7701            dd : translate$2,
7702            M : translate$2,
7703            MM : translate$2,
7704            y : translate$2,
7705            yy : translate$2
7706        },
7707        dayOfMonthOrdinalParse: /\d{1,2}\./,
7708        ordinal : '%d.',
7709        week : {
7710            dow : 1, // Monday is the first day of the week.
7711            doy : 4  // The week that contains Jan 4th is the first week of the year.
7712        }
7713    });
7714
7715    //! moment.js locale configuration
7716
7717    hooks.defineLocale('fo', {
7718        months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
7719        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
7720        weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
7721        weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
7722        weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
7723        longDateFormat : {
7724            LT : 'HH:mm',
7725            LTS : 'HH:mm:ss',
7726            L : 'DD/MM/YYYY',
7727            LL : 'D MMMM YYYY',
7728            LLL : 'D MMMM YYYY HH:mm',
7729            LLLL : 'dddd D. MMMM, YYYY HH:mm'
7730        },
7731        calendar : {
7732            sameDay : '[Í dag kl.] LT',
7733            nextDay : '[Í morgin kl.] LT',
7734            nextWeek : 'dddd [kl.] LT',
7735            lastDay : '[Í gjár kl.] LT',
7736            lastWeek : '[síðstu] dddd [kl] LT',
7737            sameElse : 'L'
7738        },
7739        relativeTime : {
7740            future : 'um %s',
7741            past : '%s síðani',
7742            s : 'fá sekund',
7743            ss : '%d sekundir',
7744            m : 'ein minuttur',
7745            mm : '%d minuttir',
7746            h : 'ein tími',
7747            hh : '%d tímar',
7748            d : 'ein dagur',
7749            dd : '%d dagar',
7750            M : 'ein mánaður',
7751            MM : '%d mánaðir',
7752            y : 'eitt ár',
7753            yy : '%d ár'
7754        },
7755        dayOfMonthOrdinalParse: /\d{1,2}\./,
7756        ordinal : '%d.',
7757        week : {
7758            dow : 1, // Monday is the first day of the week.
7759            doy : 4  // The week that contains Jan 4th is the first week of the year.
7760        }
7761    });
7762
7763    //! moment.js locale configuration
7764
7765    hooks.defineLocale('fr-ca', {
7766        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7767        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7768        monthsParseExact : true,
7769        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7770        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7771        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),
7772        weekdaysParseExact : true,
7773        longDateFormat : {
7774            LT : 'HH:mm',
7775            LTS : 'HH:mm:ss',
7776            L : 'YYYY-MM-DD',
7777            LL : 'D MMMM YYYY',
7778            LLL : 'D MMMM YYYY HH:mm',
7779            LLLL : 'dddd D MMMM YYYY HH:mm'
7780        },
7781        calendar : {
7782            sameDay : '[Aujourd’hui à] LT',
7783            nextDay : '[Demain à] LT',
7784            nextWeek : 'dddd [à] LT',
7785            lastDay : '[Hier à] LT',
7786            lastWeek : 'dddd [dernier à] LT',
7787            sameElse : 'L'
7788        },
7789        relativeTime : {
7790            future : 'dans %s',
7791            past : 'il y a %s',
7792            s : 'quelques secondes',
7793            ss : '%d secondes',
7794            m : 'une minute',
7795            mm : '%d minutes',
7796            h : 'une heure',
7797            hh : '%d heures',
7798            d : 'un jour',
7799            dd : '%d jours',
7800            M : 'un mois',
7801            MM : '%d mois',
7802            y : 'un an',
7803            yy : '%d ans'
7804        },
7805        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
7806        ordinal : function (number, period) {
7807            switch (period) {
7808                // Words with masculine grammatical gender: mois, trimestre, jour
7809                default:
7810                case 'M':
7811                case 'Q':
7812                case 'D':
7813                case 'DDD':
7814                case 'd':
7815                    return number + (number === 1 ? 'er' : 'e');
7816
7817                // Words with feminine grammatical gender: semaine
7818                case 'w':
7819                case 'W':
7820                    return number + (number === 1 ? 're' : 'e');
7821            }
7822        }
7823    });
7824
7825    //! moment.js locale configuration
7826
7827    hooks.defineLocale('fr-ch', {
7828        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7829        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7830        monthsParseExact : true,
7831        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7832        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7833        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),
7834        weekdaysParseExact : true,
7835        longDateFormat : {
7836            LT : 'HH:mm',
7837            LTS : 'HH:mm:ss',
7838            L : 'DD.MM.YYYY',
7839            LL : 'D MMMM YYYY',
7840            LLL : 'D MMMM YYYY HH:mm',
7841            LLLL : 'dddd D MMMM YYYY HH:mm'
7842        },
7843        calendar : {
7844            sameDay : '[Aujourd’hui à] LT',
7845            nextDay : '[Demain à] LT',
7846            nextWeek : 'dddd [à] LT',
7847            lastDay : '[Hier à] LT',
7848            lastWeek : 'dddd [dernier à] LT',
7849            sameElse : 'L'
7850        },
7851        relativeTime : {
7852            future : 'dans %s',
7853            past : 'il y a %s',
7854            s : 'quelques secondes',
7855            ss : '%d secondes',
7856            m : 'une minute',
7857            mm : '%d minutes',
7858            h : 'une heure',
7859            hh : '%d heures',
7860            d : 'un jour',
7861            dd : '%d jours',
7862            M : 'un mois',
7863            MM : '%d mois',
7864            y : 'un an',
7865            yy : '%d ans'
7866        },
7867        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
7868        ordinal : function (number, period) {
7869            switch (period) {
7870                // Words with masculine grammatical gender: mois, trimestre, jour
7871                default:
7872                case 'M':
7873                case 'Q':
7874                case 'D':
7875                case 'DDD':
7876                case 'd':
7877                    return number + (number === 1 ? 'er' : 'e');
7878
7879                // Words with feminine grammatical gender: semaine
7880                case 'w':
7881                case 'W':
7882                    return number + (number === 1 ? 're' : 'e');
7883            }
7884        },
7885        week : {
7886            dow : 1, // Monday is the first day of the week.
7887            doy : 4  // The week that contains Jan 4th is the first week of the year.
7888        }
7889    });
7890
7891    //! moment.js locale configuration
7892
7893    hooks.defineLocale('fr', {
7894        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7895        monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
7896        monthsParseExact : true,
7897        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7898        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7899        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),
7900        weekdaysParseExact : true,
7901        longDateFormat : {
7902            LT : 'HH:mm',
7903            LTS : 'HH:mm:ss',
7904            L : 'DD/MM/YYYY',
7905            LL : 'D MMMM YYYY',
7906            LLL : 'D MMMM YYYY HH:mm',
7907            LLLL : 'dddd D MMMM YYYY HH:mm'
7908        },
7909        calendar : {
7910            sameDay : '[Aujourd’hui à] LT',
7911            nextDay : '[Demain à] LT',
7912            nextWeek : 'dddd [à] LT',
7913            lastDay : '[Hier à] LT',
7914            lastWeek : 'dddd [dernier à] LT',
7915            sameElse : 'L'
7916        },
7917        relativeTime : {
7918            future : 'dans %s',
7919            past : 'il y a %s',
7920            s : 'quelques secondes',
7921            ss : '%d secondes',
7922            m : 'une minute',
7923            mm : '%d minutes',
7924            h : 'une heure',
7925            hh : '%d heures',
7926            d : 'un jour',
7927            dd : '%d jours',
7928            M : 'un mois',
7929            MM : '%d mois',
7930            y : 'un an',
7931            yy : '%d ans'
7932        },
7933        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
7934        ordinal : function (number, period) {
7935            switch (period) {
7936                // TODO: Return 'e' when day of month > 1. Move this case inside
7937                // block for masculine words below.
7938                // See https://github.com/moment/moment/issues/3375
7939                case 'D':
7940                    return number + (number === 1 ? 'er' : '');
7941
7942                // Words with masculine grammatical gender: mois, trimestre, jour
7943                default:
7944                case 'M':
7945                case 'Q':
7946                case 'DDD':
7947                case 'd':
7948                    return number + (number === 1 ? 'er' : 'e');
7949
7950                // Words with feminine grammatical gender: semaine
7951                case 'w':
7952                case 'W':
7953                    return number + (number === 1 ? 're' : 'e');
7954            }
7955        },
7956        week : {
7957            dow : 1, // Monday is the first day of the week.
7958            doy : 4  // The week that contains Jan 4th is the first week of the year.
7959        }
7960    });
7961
7962    //! moment.js locale configuration
7963
7964    var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
7965        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
7966
7967    hooks.defineLocale('fy', {
7968        months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
7969        monthsShort : function (m, format) {
7970            if (!m) {
7971                return monthsShortWithDots;
7972            } else if (/-MMM-/.test(format)) {
7973                return monthsShortWithoutDots[m.month()];
7974            } else {
7975                return monthsShortWithDots[m.month()];
7976            }
7977        },
7978        monthsParseExact : true,
7979        weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
7980        weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
7981        weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
7982        weekdaysParseExact : true,
7983        longDateFormat : {
7984            LT : 'HH:mm',
7985            LTS : 'HH:mm:ss',
7986            L : 'DD-MM-YYYY',
7987            LL : 'D MMMM YYYY',
7988            LLL : 'D MMMM YYYY HH:mm',
7989            LLLL : 'dddd D MMMM YYYY HH:mm'
7990        },
7991        calendar : {
7992            sameDay: '[hjoed om] LT',
7993            nextDay: '[moarn om] LT',
7994     
7994       nextWeek: 'dddd [om] LT',
7995            lastDay: '[juster om] LT',
7996            lastWeek: '[ôfrûne] dddd [om] LT',
7997            sameElse: 'L'
7998        },
7999        relativeTime : {
8000            future : 'oer %s',
8001            past : '%s lyn',
8002            s : 'in pear sekonden',
8003            ss : '%d sekonden',
8004            m : 'ien minút',
8005            mm : '%d minuten',
8006            h : 'ien oere',
8007            hh : '%d oeren',
8008            d : 'ien dei',
8009            dd : '%d dagen',
8010            M : 'ien moanne',
8011            MM : '%d moannen',
8012            y : 'ien jier',
8013            yy : '%d jierren'
8014        },
8015        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
8016        ordinal : function (number) {
8017            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
8018        },
8019        week : {
8020            dow : 1, // Monday is the first day of the week.
8021            doy : 4  // The week that contains Jan 4th is the first week of the year.
8022        }
8023    });
8024
8025    //! moment.js locale configuration
8026
8027
8028    var months$5 = [
8029        'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig'
8030    ];
8031
8032    var monthsShort$4 = ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll'];
8033
8034    var weekdays$1 = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn'];
8035
8036    var weekdaysShort = ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat'];
8037
8038    var weekdaysMin = ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa'];
8039
8040    hooks.defineLocale('ga', {
8041        months: months$5,
8042        monthsShort: monthsShort$4,
8043        monthsParseExact: true,
8044        weekdays: weekdays$1,
8045        weekdaysShort: weekdaysShort,
8046        weekdaysMin: weekdaysMin,
8047        longDateFormat: {
8048            LT: 'HH:mm',
8049            LTS: 'HH:mm:ss',
8050            L: 'DD/MM/YYYY',
8051            LL: 'D MMMM YYYY',
8052            LLL: 'D MMMM YYYY HH:mm',
8053            LLLL: 'dddd, D MMMM YYYY HH:mm'
8054        },
8055        calendar: {
8056            sameDay: '[Inniu ag] LT',
8057            nextDay: '[Amárach ag] LT',
8058            nextWeek: 'dddd [ag] LT',
8059            lastDay: '[Inné aig] LT',
8060            lastWeek: 'dddd [seo caite] [ag] LT',
8061            sameElse: 'L'
8062        },
8063        relativeTime: {
8064            future: 'i %s',
8065            past: '%s ó shin',
8066            s: 'cúpla soicind',
8067            ss: '%d soicind',
8068            m: 'nóiméad',
8069            mm: '%d nóiméad',
8070            h: 'uair an chloig',
8071            hh: '%d uair an chloig',
8072            d: 'lá',
8073            dd: '%d lá',
8074            M: 'mí',
8075            MM: '%d mí',
8076            y: 'bliain',
8077            yy: '%d bliain'
8078        },
8079        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
8080        ordinal: function (number) {
8081            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
8082            return number + output;
8083        },
8084        week: {
8085            dow: 1, // Monday is the first day of the week.
8086            doy: 4  // The week that contains Jan 4th is the first week of the year.
8087        }
8088    });
8089
8090    //! moment.js locale configuration
8091
8092    var months$6 = [
8093        'Am Faoilleach', 'An Gearran', 'Am Màrt', 'An Giblean', 'An Cèitean', 'An t-Ògmhios', 'An t-Iuchar', 'An Lùnastal', 'An t-Sultain', 'An Dàmhair', 'An t-Samhain', 'An Dùbhlachd'
8094    ];
8095
8096    var monthsShort$5 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];
8097
8098    var weekdays$2 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];
8099
8100    var weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];
8101
8102    var weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
8103
8104    hooks.defineLocale('gd', {
8105        months : months$6,
8106        monthsShort : monthsShort$5,
8107        monthsParseExact : true,
8108        weekdays : weekdays$2,
8109        weekdaysShort : weekdaysShort$1,
8110        weekdaysMin : weekdaysMin$1,
8111        longDateFormat : {
8112            LT : 'HH:mm',
8113            LTS : 'HH:mm:ss',
8114            L : 'DD/MM/YYYY',
8115            LL : 'D MMMM YYYY',
8116            LLL : 'D MMMM YYYY HH:mm',
8117            LLLL : 'dddd, D MMMM YYYY HH:mm'
8118        },
8119        calendar : {
8120            sameDay : '[An-diugh aig] LT',
8121            nextDay : '[A-màireach aig] LT',
8122            nextWeek : 'dddd [aig] LT',
vendor: 112,567 bytes, lines 8123-11073
8123            lastDay : '[An-dè aig] LT',
8124            lastWeek : 'dddd [seo chaidh] [aig] LT',
8125            sameElse : 'L'
8126        },
8127        relativeTime : {
8128            future : 'ann an %s',
8129            past : 'bho chionn %s',
8130            s : 'beagan diogan',
8131            ss : '%d diogan',
8132            m : 'mionaid',
8133            mm : '%d mionaidean',
8134            h : 'uair',
8135            hh : '%d uairean',
8136            d : 'latha',
8137            dd : '%d latha',
8138            M : 'mìos',
8139            MM : '%d mìosan',
8140            y : 'bliadhna',
8141            yy : '%d bliadhna'
8142        },
8143        dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/,
8144        ordinal : function (number) {
8145            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
8146            return number + output;
8147        },
8148        week : {
8149            dow : 1, // Monday is the first day of the week.
8150            doy : 4  // The week that contains Jan 4th is the first week of the year.
8151        }
8152    });
8153
8154    //! moment.js locale configuration
8155
8156    hooks.defineLocale('gl', {
8157        months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),
8158        monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),
8159        monthsParseExact: true,
8160        weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
8161        weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
8162        weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),
8163        weekdaysParseExact : true,
8164        longDateFormat : {
8165            LT : 'H:mm',
8166            LTS : 'H:mm:ss',
8167            L : 'DD/MM/YYYY',
8168            LL : 'D [de] MMMM [de] YYYY',
8169            LLL : 'D [de] MMMM [de] YYYY H:mm',
8170            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
8171        },
8172        calendar : {
8173            sameDay : function () {
8174                return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
8175            },
8176            nextDay : function () {
8177                return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
8178            },
8179            nextWeek : function () {
8180                return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
8181            },
8182            lastDay : function () {
8183                return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
8184            },
8185            lastWeek : function () {
8186                return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
8187            },
8188            sameElse : 'L'
8189        },
8190        relativeTime : {
8191            future : function (str) {
8192                if (str.indexOf('un') === 0) {
8193                    return 'n' + str;
8194                }
8195                return 'en ' + str;
8196            },
8197            past : 'hai %s',
8198            s : 'uns segundos',
8199            ss : '%d segundos',
8200            m : 'un minuto',
8201            mm : '%d minutos',
8202            h : 'unha hora',
8203            hh : '%d horas',
8204            d : 'un día',
8205            dd : '%d días',
8206            M : 'un mes',
8207            MM : '%d meses',
8208            y : 'un ano',
8209            yy : '%d anos'
8210        },
8211        dayOfMonthOrdinalParse : /\d{1,2}º/,
8212        ordinal : '%dº',
8213        week : {
8214            dow : 1, // Monday is the first day of the week.
8215            doy : 4  // The week that contains Jan 4th is the first week of the year.
8216        }
8217    });
8218
8219    //! moment.js locale configuration
8220
8221    function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
8222        var format = {
8223            's': ['thodde secondanim', 'thodde second'],
8224            'ss': [number + ' secondanim', number + ' second'],
8225            'm': ['eka mintan', 'ek minute'],
8226            'mm': [number + ' mintanim', number + ' mintam'],
8227            'h': ['eka voran', 'ek vor'],
8228            'hh': [number + ' voranim', number + ' voram'],
8229            'd': ['eka disan', 'ek dis'],
8230            'dd': [number + ' disanim', number + ' dis'],
8231            'M': ['eka mhoinean', 'ek mhoino'],
8232            'MM': [number + ' mhoineanim', number + ' mhoine'],
8233            'y': ['eka vorsan', 'ek voros'],
8234            'yy': [number + ' vorsanim', number + ' vorsam']
8235        };
8236        return withoutSuffix ? format[key][0] : format[key][1];
8237    }
8238
8239    hooks.defineLocale('gom-latn', {
8240        months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),
8241        monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
8242        monthsParseExact : true,
8243        weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'),
8244        weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
8245        weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
8246        weekdaysParseExact : true,
8247        longDateFormat : {
8248            LT : 'A h:mm [vazta]',
8249            LTS : 'A h:mm:ss [vazta]',
8250            L : 'DD-MM-YYYY',
8251            LL : 'D MMMM YYYY',
8252            LLL : 'D MMMM YYYY A h:mm [vazta]',
8253            LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',
8254            llll: 'ddd, D MMM YYYY, A h:mm [vazta]'
8255        },
8256        calendar : {
8257            sameDay: '[Aiz] LT',
8258            nextDay: '[Faleam] LT',
8259            nextWeek: '[Ieta to] dddd[,] LT',
8260            lastDay: '[Kal] LT',
8261            lastWeek: '[Fatlo] dddd[,] LT',
8262            sameElse: 'L'
8263        },
8264        relativeTime : {
8265            future : '%s',
8266            past : '%s adim',
8267            s : processRelativeTime$4,
8268            ss : processRelativeTime$4,
8269            m : processRelativeTime$4,
8270            mm : processRelativeTime$4,
8271            h : processRelativeTime$4,
8272            hh : processRelativeTime$4,
8273            d : processRelativeTime$4,
8274            dd : processRelativeTime$4,
8275            M : processRelativeTime$4,
8276            MM : processRelativeTime$4,
8277            y : processRelativeTime$4,
8278            yy : processRelativeTime$4
8279        },
8280        dayOfMonthOrdinalParse : /\d{1,2}(er)/,
8281        ordinal : function (number, period) {
8282            switch (period) {
8283                // the ordinal 'er' only applies to day of the month
8284                case 'D':
8285                    return number + 'er';
8286                default:
8287                case 'M':
8288                case 'Q':
8289                case 'DDD':
8290                case 'd':
8291                case 'w':
8292                case 'W':
8293                    return number;
8294            }
8295        },
8296        week : {
8297            dow : 1, // Monday is the first day of the week.
8298            doy : 4  // The week that contains Jan 4th is the first week of the year.
8299        },
8300        meridiemParse: /rati|sokalli|donparam|sanje/,
8301        meridiemHour : function (hour, meridiem) {
8302            if (hour === 12) {
8303                hour = 0;
8304            }
8305            if (meridiem === 'rati') {
8306                return hour < 4 ? hour : hour + 12;
8307            } else if (meridiem === 'sokalli') {
8308                return hour;
8309            } else if (meridiem === 'donparam') {
8310                return hour > 12 ? hour : hour + 12;
8311            } else if (meridiem === 'sanje') {
8312                return hour + 12;
8313            }
8314        },
8315        meridiem : function (hour, minute, isLower) {
8316            if (hour < 4) {
8317                return 'rati';
8318            } else if (hour < 12) {
8319                return 'sokalli';
8320            } else if (hour < 16) {
8321                return 'donparam';
8322            } else if (hour < 20) {
8323                return 'sanje';
8324            } else {
8325                return 'rati';
8326            }
8327        }
8328    });
8329
8330    //! moment.js locale configuration
8331
8332    var symbolMap$6 = {
8333            '1': 'à«§',
8334            '2': '૨',
8335            '3': 'à«©',
8336            '4': '૪',
8337            '5': 'à««',
8338            '6': '૬',
8339            '7': 'à«­',
8340            '8': 'à«®',
8341            '9': '૯',
8342            '0': '૦'
8343        },
8344        numberMap$5 = {
8345            'à«§': '1',
8346            '૨': '2',
8347            'à«©': '3',
8348            '૪': '4',
8349            'à««': '5',
8350            '૬': '6',
8351            'à«­': '7',
8352            'à«®': '8',
8353            '૯': '9',
8354            '૦': '0'
8355        };
8356
8357    hooks.defineLocale('gu', {
8358        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),
8359        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),
8360        monthsParseExact: true,
8361        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),
8362        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
8363        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
8364        longDateFormat: {
8365            LT: 'A h:mm વાગ્યે',
8366            LTS: 'A h:mm:ss વાગ્યે',
8367            L: 'DD/MM/YYYY',
8368            LL: 'D MMMM YYYY',
8369            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
8370            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'
8371        },
8372        calendar: {
8373            sameDay: '[આજ] LT',
8374            nextDay: '[કાલે] LT',
8375            nextWeek: 'dddd, LT',
8376            lastDay: '[ગઇકાલે] LT',
8377            lastWeek: '[પાછલા] dddd, LT',
8378            sameElse: 'L'
8379        },
8380        relativeTime: {
8381            future: '%s મા',
8382            past: '%s પેહલા',
8383            s: 'અમુક પળો',
8384            ss: '%d સેકંડ',
8385            m: 'એક મિનિટ',
8386            mm: '%d મિનિટ',
8387            h: 'એક કલાક',
8388            hh: '%d કલાક',
8389            d: 'એક દિવસ',
8390            dd: '%d દિવસ',
8391            M: 'એક મહિનો',
8392            MM: '%d મહિનો',
8393            y: 'એક વર્ષ',
8394            yy: '%d વર્ષ'
8395        },
8396        preparse: function (string) {
8397            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
8398                return numberMap$5[match];
8399            });
8400        },
8401        postformat: function (string) {
8402            return string.replace(/\d/g, function (match) {
8403                return symbolMap$6[match];
8404            });
8405        },
8406        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
8407        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
8408        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
8409        meridiemHour: function (hour, meridiem) {
8410            if (hour === 12) {
8411                hour = 0;
8412            }
8413            if (meridiem === 'રાત') {
8414                return hour < 4 ? hour : hour + 12;
8415            } else if (meridiem === 'સવાર') {
8416                return hour;
8417            } else if (meridiem === 'બપોર') {
8418                return hour >= 10 ? hour : hour + 12;
8419            } else if (meridiem === 'સાંજ') {
8420                return hour + 12;
8421            }
8422        },
8423        meridiem: function (hour, minute, isLower) {
8424            if (hour < 4) {
8425                return 'રાત';
8426            } else if (hour < 10) {
8427                return 'સવાર';
8428            } else if (hour < 17) {
8429                return 'બપોર';
8430            } else if (hour < 20) {
8431                return 'સાંજ';
8432            } else {
8433                return 'રાત';
8434            }
8435        },
8436        week: {
8437            dow: 0, // Sunday is the first day of the week.
8438            doy: 6 // The week that contains Jan 6th is the first week of the year.
8439        }
8440    });
8441
8442    //! moment.js locale configuration
8443
8444    hooks.defineLocale('he', {
8445        months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
8446        monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
8447        weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
8448        weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
8449        weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
8450        longDateFormat : {
8451            LT : 'HH:mm',
8452            LTS : 'HH:mm:ss',
8453            L : 'DD/MM/YYYY',
8454            LL : 'D [ב]MMMM YYYY',
8455            LLL : 'D [ב]MMMM YYYY HH:mm',
8456            LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',
8457            l : 'D/M/YYYY',
8458            ll : 'D MMM YYYY',
8459            lll : 'D MMM YYYY HH:mm',
8460            llll : 'ddd, D MMM YYYY HH:mm'
8461        },
8462        calendar : {
8463            sameDay : '[היום ב־]LT',
8464            nextDay : '[מחר ב־]LT',
8465            nextWeek : 'dddd [בשעה] LT',
8466            lastDay : '[אתמול ב־]LT',
8467            lastWeek : '[ביום] dddd [האחרון בשעה] LT',
8468            sameElse : 'L'
8469        },
8470        relativeTime : {
8471            future : 'בעוד %s',
8472            past : 'לפני %s',
8473            s : 'מספר שניות',
8474            ss : '%d שניות',
8475            m : 'דקה',
8476            mm : '%d דקות',
8477            h : 'שעה',
8478            hh : function (number) {
8479                if (number === 2) {
8480                    return 'שעתיים';
8481                }
8482                return number + ' שעות';
8483            },
8484            d : 'יום',
8485            dd : function (number) {
8486                if (number === 2) {
8487                    return 'יומיים';
8488                }
8489                return number + ' ימים';
8490            },
8491            M : 'חודש',
8492            MM : function (number) {
8493                if (number === 2) {
8494                    return 'חודשיים';
8495                }
8496                return number + ' חודשים';
8497            },
8498            y : 'שנה',
8499            yy : function (number) {
8500                if (number === 2) {
8501                    return 'שנתיים';
8502                } else if (number % 10 === 0 && number !== 10) {
8503                    return number + ' שנה';
8504                }
8505                return number + ' שנים';
8506            }
8507        },
8508        meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
8509        isPM : function (input) {
8510            return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
8511        },
8512        meridiem : function (hour, minute, isLower) {
8513            if (hour < 5) {
8514                return 'לפנות בוקר';
8515            } else if (hour < 10) {
8516                return 'בבוקר';
8517            } else if (hour < 12) {
8518                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
8519            } else if (hour < 18) {
8520                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
8521            } else {
8522                return 'בערב';
8523            }
8524        }
8525    });
8526
8527    //! moment.js locale configuration
8528
8529    var symbolMap$7 = {
8530        '1': '१',
8531        '2': '२',
8532        '3': '३',
8533        '4': '४',
8534        '5': '५',
8535        '6': '६',
8536        '7': '७',
8537        '8': '८',
8538        '9': '९',
8539        '0': '०'
8540    },
8541    numberMap$6 = {
8542        '१': '1',
8543        '२': '2',
8544        '३': '3',
8545        '४': '4',
8546        '५': '5',
8547        '६': '6',
8548        '७': '7',
8549        '८': '8',
8550        '९': '9',
8551        '०': '0'
8552    };
8553
8554    hooks.defineLocale('hi', {
8555        months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
8556        monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
8557        monthsParseExact: true,
8558        weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
8559        weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
8560        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
8561        longDateFormat : {
8562            LT : 'A h:mm बजे',
8563            LTS : 'A h:mm:ss बजे',
8564            L : 'DD/MM/YYYY',
8565            LL : 'D MMMM YYYY',
8566            LLL : 'D MMMM YYYY, A h:mm बजे',
8567            LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'
8568        },
8569        calendar : {
8570            sameDay : '[आज] LT',
8571            nextDay : '[कल] LT',
8572            nextWeek : 'dddd, LT',
8573            lastDay : '[कल] LT',
8574            lastWeek : '[पिछले] dddd, LT',
8575            sameElse : 'L'
8576        },
8577        relativeTime : {
8578            future : '%s में',
8579            past : '%s पहले',
8580            s : 'कुछ ही क्षण',
8581            ss : '%d सेकंड',
8582            m : 'एक मिनट',
8583            mm : '%d मिनट',
8584            h : 'एक घंटा',
8585            hh : '%d घंटे',
8586            d : 'एक दिन',
8587            dd : '%d दिन',
8588            M : 'एक महीने',
8589            MM : '%d महीने',
8590            y : 'एक वर्ष',
8591            yy : '%d वर्ष'
8592        },
8593        preparse: function (string) {
8594            return string.replace(/[१२३४५६७८९०]/g, function (match) {
8595                return numberMap$6[match];
8596            });
8597        },
8598        postformat: function (string) {
8599            return string.replace(/\d/g, function (match) {
8600                return symbolMap$7[match];
8601            });
8602        },
8603        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
8604        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
8605        meridiemParse: /रात|सुबह|दोपहर|शाम/,
8606        meridiemHour : function (hour, meridiem) {
8607            if (hour === 12) {
8608                hour = 0;
8609            }
8610            if (meridiem === 'रात') {
8611                return hour < 4 ? hour : hour + 12;
8612            } else if (meridiem === 'सुबह') {
8613                return hour;
8614            } else if (meridiem === 'दोपहर') {
8615                return hour >= 10 ? hour : hour + 12;
8616            } else if (meridiem === 'शाम') {
8617                return hour + 12;
8618            }
8619        },
8620        meridiem : function (hour, minute, isLower) {
8621            if (hour < 4) {
8622                return 'रात';
8623            } else if (hour < 10) {
8624                return 'सुबह';
8625            } else if (hour < 17) {
8626                return 'दोपहर';
8627            } else if (hour < 20) {
8628                return 'शाम';
8629            } else {
8630                return 'रात';
8631            }
8632        },
8633        week : {
8634            dow : 0, // Sunday is the first day of the week.
8635            doy : 6  // The week that contains Jan 6th is the first week of the year.
8636        }
8637    });
8638
8639    //! moment.js locale configuration
8640
8641    function translate$3(number, withoutSuffix, key) {
8642        var result = number + ' ';
8643        switch (key) {
8644            case 'ss':
8645                if (number === 1) {
8646                    result += 'sekunda';
8647                } else if (number === 2 || number === 3 || number === 4) {
8648                    result += 'sekunde';
8649                } else {
8650                    result += 'sekundi';
8651                }
8652                return result;
8653            case 'm':
8654                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
8655            case 'mm':
8656                if (number === 1) {
8657                    result += 'minuta';
8658                } else if (number === 2 || number === 3 || number === 4) {
8659                    result += 'minute';
8660                } else {
8661                    result += 'minuta';
8662                }
8663                return result;
8664            case 'h':
8665                return withoutSuffix ? 'jedan sat' : 'jednog sata';
8666            case 'hh':
8667                if (number === 1) {
8668                    result += 'sat';
8669                } else if (number === 2 || number === 3 || number === 4) {
8670                    result += 'sata';
8671                } else {
8672                    result += 'sati';
8673                }
8674                return result;
8675            case 'dd':
8676                if (number === 1) {
8677                    result += 'dan';
8678                } else {
8679                    result += 'dana';
8680                }
8681                return result;
8682            case 'MM':
8683                if (number === 1) {
8684                    result += 'mjesec';
8685                } else if (number === 2 || number === 3 || number === 4) {
8686                    result += 'mjeseca';
8687                } else {
8688                    result += 'mjeseci';
8689                }
8690                return result;
8691            case 'yy':
8692                if (number === 1) {
8693                    result += 'godina';
8694                } else if (number === 2 || number === 3 || number === 4) {
8695                    result += 'godine';
8696                } else {
8697                    result += 'godina';
8698                }
8699                return result;
8700        }
8701    }
8702
8703    hooks.defineLocale('hr', {
8704        months : {
8705            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
8706            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
8707        },
8708        monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
8709        monthsParseExact: true,
8710        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
8711        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
8712        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
8713        weekdaysParseExact : true,
8714        longDateFormat : {
8715            LT : 'H:mm',
8716            LTS : 'H:mm:ss',
8717            L : 'DD.MM.YYYY',
8718            LL : 'D. MMMM YYYY',
8719            LLL : 'D. MMMM YYYY H:mm',
8720            LLLL : 'dddd, D. MMMM YYYY H:mm'
8721        },
8722        calendar : {
8723            sameDay  : '[danas u] LT',
8724            nextDay  : '[sutra u] LT',
8725            nextWeek : function () {
8726                switch (this.day()) {
8727                    case 0:
8728                        return '[u] [nedjelju] [u] LT';
8729                    case 3:
8730                        return '[u] [srijedu] [u] LT';
8731                    case 6:
8732                        return '[u] [subotu] [u] LT';
8733                    case 1:
8734                    case 2:
8735                    case 4:
8736                    case 5:
8737                        return '[u] dddd [u] LT';
8738                }
8739            },
8740            lastDay  : '[jučer u] LT',
8741            lastWeek : function () {
8742                switch (this.day()) {
8743                    case 0:
8744                    case 3:
8745                        return '[prošlu] dddd [u] LT';
8746                    case 6:
8747                        return '[prošle] [subote] [u] LT';
8748                    case 1:
8749                    case 2:
8750                    case 4:
8751                    case 5:
8752                        return '[prošli] dddd [u] LT';
8753                }
8754            },
8755            sameElse : 'L'
8756        },
8757        relativeTime : {
8758            future : 'za %s',
8759            past   : 'prije %s',
8760            s      : 'par sekundi',
8761            ss     : translate$3,
8762            m      : translate$3,
8763            mm     : translate$3,
8764            h      : translate$3,
8765            hh     : translate$3,
8766            d      : 'dan',
8767            dd     : translate$3,
8768            M      : 'mjesec',
8769            MM     : translate$3,
8770            y      : 'godinu',
8771            yy     : translate$3
8772        },
8773        dayOfMonthOrdinalParse: /\d{1,2}\./,
8774        ordinal : '%d.',
8775        week : {
8776            dow : 1, // Monday is the first day of the week.
8777            doy : 7  // The week that contains Jan 7th is the first week of the year.
8778        }
8779    });
8780
8781    //! moment.js locale configuration
8782
8783    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
8784    function translate$4(number, withoutSuffix, key, isFuture) {
8785        var num = number;
8786        switch (key) {
8787            case 's':
8788                return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
8789            case 'ss':
8790                return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';
8791            case 'm':
8792                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
8793            case 'mm':
8794                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
8795            case 'h':
8796                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
8797            case 'hh':
8798                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
8799            case 'd':
8800                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
8801            case 'dd':
8802                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
8803            case 'M':
8804                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
8805            case 'MM':
8806                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
8807            case 'y':
8808                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
8809            case 'yy':
8810                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
8811        }
8812        return '';
8813    }
8814    function week(isFuture) {
8815        return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
8816    }
8817
8818    hooks.defineLocale('hu', {
8819        months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
8820        monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
8821        weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
8822        weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
8823        weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
8824        longDateFormat : {
8825            LT : 'H:mm',
8826            LTS : 'H:mm:ss',
8827            L : 'YYYY.MM.DD.',
8828            LL : 'YYYY. MMMM D.',
8829            LLL : 'YYYY. MMMM D. H:mm',
8830            LLLL : 'YYYY. MMMM D., dddd H:mm'
8831        },
8832        meridiemParse: /de|du/i,
8833        isPM: function (input) {
8834            return input.charAt(1).toLowerCase() === 'u';
8835        },
8836        meridiem : function (hours, minutes, isLower) {
8837            if (hours < 12) {
8838                return isLower === true ? 'de' : 'DE';
8839            } else {
8840                return isLower === true ? 'du' : 'DU';
8841            }
8842        },
8843        calendar : {
8844            sameDay : '[ma] LT[-kor]',
8845            nextDay : '[holnap] LT[-kor]',
8846            nextWeek : function () {
8847                return week.call(this, true);
8848            },
8849            lastDay : '[tegnap] LT[-kor]',
8850            lastWeek : function () {
8851                return week.call(this, false);
8852            },
8853            sameElse : 'L'
8854        },
8855        relativeTime : {
8856            future : '%s múlva',
8857            past : '%s',
8858            s : translate$4,
8859            ss : translate$4,
8860            m : translate$4,
8861            mm : translate$4,
8862            h : translate$4,
8863            hh : translate$4,
8864            d : translate$4,
8865            dd : translate$4,
8866            M : translate$4,
8867            MM : translate$4,
8868            y : translate$4,
8869            yy : translate$4
8870        },
8871        dayOfMonthOrdinalParse: /\d{1,2}\./,
8872        ordinal : '%d.',
8873        week : {
8874            dow : 1, // Monday is the first day of the week.
8875            doy : 4  // The week that contains Jan 4th is the first week of the year.
8876        }
8877    });
8878
8879    //! moment.js locale configuration
8880
8881    hooks.defineLocale('hy-am', {
8882        months : {
8883            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
8884            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
8885        },
8886        monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
8887        weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
8888        weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
8889        weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
8890        longDateFormat : {
8891            LT : 'HH:mm',
8892            LTS : 'HH:mm:ss',
8893            L : 'DD.MM.YYYY',
8894            LL : 'D MMMM YYYY Õ©.',
8895            LLL : 'D MMMM YYYY Õ©., HH:mm',
8896            LLLL : 'dddd, D MMMM YYYY Õ©., HH:mm'
8897        },
8898        calendar : {
8899            sameDay: '[այսօր] LT',
8900            nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
8901            lastDay: '[երեկ] LT',
8902            nextWeek: function () {
8903                return 'dddd [օրը ժամը] LT';
8904            },
8905            lastWeek: function () {
8906                return '[անցած] dddd [օրը ժամը] LT';
8907            },
8908            sameElse: 'L'
8909        },
8910        relativeTime : {
8911            future : '%s Õ°Õ¥Õ¿Õ¸',
8912            past : '%s Õ¡Õ¼Õ¡Õ»',
8913            s : 'մի քանի վայրկյան',
8914            ss : '%d վայրկյան',
8915            m : 'րոպե',
8916            mm : '%d րոպե',
8917            h : 'ÕªÕ¡Õ´',
8918            hh : '%d ÕªÕ¡Õ´',
8919            d : 'օր',
8920            dd : '%d օր',
8921            M : 'Õ¡Õ´Õ«Õ½',
8922            MM : '%d Õ¡Õ´Õ«Õ½',
8923            y : 'տարի',
8924            yy : '%d տարի'
8925        },
8926        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
8927        isPM: function (input) {
8928            return /^(ցերեկվա|երեկոյան)$/.test(input);
8929        },
8930        meridiem : function (hour) {
8931            if (hour < 4) {
8932                return 'գիշերվա';
8933            } else if (hour < 12) {
8934                return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
8935            } else if (hour < 17) {
8936                return 'ցերեկվա';
8937            } else {
8938                return 'երեկոյան';
8939            }
8940        },
8941        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
8942        ordinal: function (number, period) {
8943            switch (period) {
8944                case 'DDD':
8945                case 'w':
8946                case 'W':
8947                case 'DDDo':
8948                    if (number === 1) {
8949                        return number + '-Õ«Õ¶';
8950                    }
8951                    return number + '-րդ';
8952                default:
8953                    return number;
8954            }
8955        },
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    hooks.defineLocale('id', {
8965        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
8966        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
8967        weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
8968        weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
8969        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
8970        longDateFormat : {
8971            LT : 'HH.mm',
8972            LTS : 'HH.mm.ss',
8973            L : 'DD/MM/YYYY',
8974            LL : 'D MMMM YYYY',
8975            LLL : 'D MMMM YYYY [pukul] HH.mm',
8976            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
8977        },
8978        meridiemParse: /pagi|siang|sore|malam/,
8979        meridiemHour : function (hour, meridiem) {
8980            if (hour === 12) {
8981                hour = 0;
8982            }
8983            if (meridiem === 'pagi') {
8984                return hour;
8985            } else if (meridiem === 'siang') {
8986                return hour >= 11 ? hour : hour + 12;
8987            } else if (meridiem === 'sore' || meridiem === 'malam') {
8988                return hour + 12;
8989            }
8990        },
8991        meridiem : function (hours, minutes, isLower) {
8992            if (hours < 11) {
8993                return 'pagi';
8994            } else if (hours < 15) {
8995                return 'siang';
8996            } else if (hours < 19) {
8997                return 'sore';
8998            } else {
8999                return 'malam';
9000            }
9001        },
9002        calendar : {
9003            sameDay : '[Hari ini pukul] LT',
9004            nextDay : '[Besok pukul] LT',
9005            nextWeek : 'dddd [pukul] LT',
9006            lastDay : '[Kemarin pukul] LT',
9007            lastWeek : 'dddd [lalu pukul] LT',
9008            sameElse : 'L'
9009        },
9010        relativeTime : {
9011            future : 'dalam %s',
9012            past : '%s yang lalu',
9013            s : 'beberapa detik',
9014            ss : '%d detik',
9015            m : 'semenit',
9016            mm : '%d menit',
9017            h : 'sejam',
9018            hh : '%d jam',
9019            d : 'sehari',
9020            dd : '%d hari',
9021            M : 'sebulan',
9022            MM : '%d bulan',
9023            y : 'setahun',
9024            yy : '%d tahun'
9025        },
9026        week : {
9027            dow : 1, // Monday is the first day of the week.
9028            doy : 7  // The week that contains Jan 7th is the first week of the year.
9029        }
9030    });
9031
9032    //! moment.js locale configuration
9033
9034    function plural$2(n) {
9035        if (n % 100 === 11) {
9036            return true;
9037        } else if (n % 10 === 1) {
9038            return false;
9039        }
9040        return true;
9041    }
9042    function translate$5(number, withoutSuffix, key, isFuture) {
9043        var result = number + ' ';
9044        switch (key) {
9045            case 's':
9046                return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
9047            case 'ss':
9048                if (plural$2(number)) {
9049                    return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');
9050                }
9051                return result + 'sekúnda';
9052            case 'm':
9053                return withoutSuffix ? 'mínúta' : 'mínútu';
9054            case 'mm':
9055                if (plural$2(number)) {
9056                    return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
9057                } else if (withoutSuffix) {
9058                    return result + 'mínúta';
9059                }
9060                return result + 'mínútu';
9061            case 'hh':
9062                if (plural$2(number)) {
9063                    return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
9064                }
9065                return result + 'klukkustund';
9066            case 'd':
9067                if (withoutSuffix) {
9068                    return 'dagur';
9069                }
9070                return isFuture ? 'dag' : 'degi';
9071            case 'dd':
9072                if (plural$2(number)) {
9073                    if (withoutSuffix) {
9074                        return result + 'dagar';
9075                    }
9076                    return result + (isFuture ? 'daga' : 'dögum');
9077                } else if (withoutSuffix) {
9078                    return result + 'dagur';
9079                }
9080                return result + (isFuture ? 'dag' : 'degi');
9081            case 'M':
9082                if (withoutSuffix) {
9083                    return 'mánuður';
9084                }
9085                return isFuture ? 'mánuð' : 'mánuði';
9086            case 'MM':
9087                if (plural$2(number)) {
9088                    if (withoutSuffix) {
9089                        return result + 'mánuðir';
9090                    }
9091                    return result + (isFuture ? 'mánuði' : 'mánuðum');
9092                } else if (withoutSuffix) {
9093                    return result + 'mánuður';
9094                }
9095                return result + (isFuture ? 'mánuð' : 'mánuði');
9096            case 'y':
9097                return withoutSuffix || isFuture ? 'ár' : 'ári';
9098            case 'yy':
9099                if (plural$2(number)) {
9100                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
9101                }
9102                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
9103        }
9104    }
9105
9106    hooks.defineLocale('is', {
9107        months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
9108        monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
9109        weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
9110        weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
9111        weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
9112        longDateFormat : {
9113            LT : 'H:mm',
9114            LTS : 'H:mm:ss',
9115            L : 'DD.MM.YYYY',
9116            LL : 'D. MMMM YYYY',
9117            LLL : 'D. MMMM YYYY [kl.] H:mm',
9118            LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'
9119        },
9120        calendar : {
9121            sameDay : '[í dag kl.] LT',
9122            nextDay : '[á morgun kl.] LT',
9123            nextWeek : 'dddd [kl.] LT',
9124            lastDay : '[í gær kl.] LT',
9125            lastWeek : '[síðasta] dddd [kl.] LT',
9126            sameElse : 'L'
9127        },
9128        relativeTime : {
9129            future : 'eftir %s',
9130            past : 'fyrir %s síðan',
9131            s : translate$5,
9132            ss : translate$5,
9133            m : translate$5,
9134            mm : translate$5,
9135            h : 'klukkustund',
9136            hh : translate$5,
9137            d : translate$5,
9138            dd : translate$5,
9139            M : translate$5,
9140            MM : translate$5,
9141            y : translate$5,
9142            yy : translate$5
9143        },
9144        dayOfMonthOrdinalParse: /\d{1,2}\./,
9145        ordinal : '%d.',
9146        week : {
9147            dow : 1, // Monday is the first day of the week.
9148            doy : 4  // The week that contains Jan 4th is the first week of the year.
9149        }
9150    });
9151
9152    //! moment.js locale configuration
9153
9154    hooks.defineLocale('it-ch', {
9155        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
9156        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
9157        weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
9158        weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
9159        weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),
9160        longDateFormat : {
9161            LT : 'HH:mm',
9162            LTS : 'HH:mm:ss',
9163            L : 'DD.MM.YYYY',
9164            LL : 'D MMMM YYYY',
9165            LLL : 'D MMMM YYYY HH:mm',
9166            LLLL : 'dddd D MMMM YYYY HH:mm'
9167        },
9168        calendar : {
9169            sameDay: '[Oggi alle] LT',
9170            nextDay: '[Domani alle] LT',
9171            nextWeek: 'dddd [alle] LT',
9172            lastDay: '[Ieri alle] LT',
9173            lastWeek: function () {
9174                switch (this.day()) {
9175                    case 0:
9176                        return '[la scorsa] dddd [alle] LT';
9177                    default:
9178                        return '[lo scorso] dddd [alle] LT';
9179                }
9180            },
9181            sameElse: 'L'
9182        },
9183        relativeTime : {
9184            future : function (s) {
9185                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
9186            },
9187            past : '%s fa',
9188            s : 'alcuni secondi',
9189            ss : '%d secondi',
9190            m : 'un minuto',
9191            mm : '%d minuti',
9192            h : 'un\'ora',
9193            hh : '%d ore',
9194            d : 'un giorno',
9195            dd : '%d giorni',
9196            M : 'un mese',
9197            MM : '%d mesi',
9198            y : 'un anno',
9199            yy : '%d anni'
9200        },
9201        dayOfMonthOrdinalParse : /\d{1,2}º/,
9202        ordinal: '%dº',
9203        week : {
9204            dow : 1, // Monday is the first day of the week.
9205            doy : 4  // The week that contains Jan 4th is the first week of the year.
9206        }
9207    });
9208
9209    //! moment.js locale configuration
9210
9211    hooks.defineLocale('it', {
9212        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
9213        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
9214        weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
9215        weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
9216        weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),
9217        longDateFormat : {
9218            LT : 'HH:mm',
9219            LTS : 'HH:mm:ss',
9220            L : 'DD/MM/YYYY',
9221            LL : 'D MMMM YYYY',
9222            LLL : 'D MMMM YYYY HH:mm',
9223            LLLL : 'dddd D MMMM YYYY HH:mm'
9224        },
9225        calendar : {
9226            sameDay: '[Oggi alle] LT',
9227            nextDay: '[Domani alle] LT',
9228            nextWeek: 'dddd [alle] LT',
9229            lastDay: '[Ieri alle] LT',
9230            lastWeek: function () {
9231                switch (this.day()) {
9232                    case 0:
9233                        return '[la scorsa] dddd [alle] LT';
9234                    default:
9235                        return '[lo scorso] dddd [alle] LT';
9236                }
9237            },
9238            sameElse: 'L'
9239        },
9240        relativeTime : {
9241            future : function (s) {
9242                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
9243            },
9244            past : '%s fa',
9245            s : 'alcuni secondi',
9246            ss : '%d secondi',
9247            m : 'un minuto',
9248            mm : '%d minuti',
9249            h : 'un\'ora',
9250            hh : '%d ore',
9251            d : 'un giorno',
9252            dd : '%d giorni',
9253            M : 'un mese',
9254            MM : '%d mesi',
9255            y : 'un anno',
9256            yy : '%d anni'
9257        },
9258        dayOfMonthOrdinalParse : /\d{1,2}º/,
9259        ordinal: '%dº',
9260        week : {
9261            dow : 1, // Monday is the first day of the week.
9262            doy : 4  // The week that contains Jan 4th is the first week of the year.
9263        }
9264    });
9265
9266    //! moment.js locale configuration
9267
9268    hooks.defineLocale('ja', {
9269        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
9270        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
9271        weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
9272        weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
9273        weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
9274        longDateFormat : {
9275            LT : 'HH:mm',
9276            LTS : 'HH:mm:ss',
9277            L : 'YYYY/MM/DD',
9278            LL : 'YYYY年M月D日',
9279            LLL : 'YYYY年M月D日 HH:mm',
9280            LLLL : 'YYYY年M月D日 dddd HH:mm',
9281            l : 'YYYY/MM/DD',
9282            ll : 'YYYY年M月D日',
9283            lll : 'YYYY年M月D日 HH:mm',
9284            llll : 'YYYY年M月D日(ddd) HH:mm'
9285        },
9286        meridiemParse: /午前|午後/i,
9287        isPM : function (input) {
9288            return input === '午後';
9289        },
9290        meridiem : function (hour, minute, isLower) {
9291            if (hour < 12) {
9292                return '午前';
9293            } else {
9294                return '午後';
9295            }
9296        },
9297        calendar : {
9298            sameDay : '[今日] LT',
9299            nextDay : '[明日] LT',
9300            nextWeek : function (now) {
9301                if (now.week() < this.week()) {
9302                    return '[来週]dddd LT';
9303                } else {
9304                    return 'dddd LT';
9305                }
9306            },
9307            lastDay : '[昨日] LT',
9308            lastWeek : function (now) {
9309                if (this.week() < now.week()) {
9310                    return '[先週]dddd LT';
9311                } else {
9312                    return 'dddd LT';
9313                }
9314            },
9315            sameElse : 'L'
9316        },
9317        dayOfMonthOrdinalParse : /\d{1,2}日/,
9318        ordinal : function (number, period) {
9319            switch (period) {
9320                case 'd':
9321                case 'D':
9322                case 'DDD':
9323                    return number + '日';
9324                default:
9325                    return number;
9326            }
9327        },
9328        relativeTime : {
9329            future : '%s後',
9330            past : '%s前',
9331            s : '数秒',
9332            ss : '%d秒',
9333            m : '1分',
9334            mm : '%d分',
9335            h : '1時間',
9336            hh : '%d時間',
9337            d : '1日',
9338            dd : '%d日',
9339            M : '1ヶ月',
9340            MM : '%dヶ月',
9341            y : '1å¹´',
9342            yy : '%då¹´'
9343        }
9344    });
9345
9346    //! moment.js locale configuration
9347
9348    hooks.defineLocale('jv', {
9349        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
9350        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
9351        weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
9352        weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
9353        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
9354        longDateFormat : {
9355            LT : 'HH.mm',
9356            LTS : 'HH.mm.ss',
9357            L : 'DD/MM/YYYY',
9358            LL : 'D MMMM YYYY',
9359            LLL : 'D MMMM YYYY [pukul] HH.mm',
9360            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
9361        },
9362        meridiemParse: /enjing|siyang|sonten|ndalu/,
9363        meridiemHour : function (hour, meridiem) {
9364            if (hour === 12) {
9365                hour = 0;
9366            }
9367            if (meridiem === 'enjing') {
9368                return hour;
9369            } else if (meridiem === 'siyang') {
9370                return hour >= 11 ? hour : hour + 12;
9371            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
9372                return hour + 12;
9373            }
9374        },
9375        meridiem : function (hours, minutes, isLower) {
9376            if (hours < 11) {
9377                return 'enjing';
9378            } else if (hours < 15) {
9379                return 'siyang';
9380            } else if (hours < 19) {
9381                return 'sonten';
9382            } else {
9383                return 'ndalu';
9384            }
9385        },
9386        calendar : {
9387            sameDay : '[Dinten puniko pukul] LT',
9388            nextDay : '[Mbenjang pukul] LT',
9389            nextWeek : 'dddd [pukul] LT',
9390            lastDay : '[Kala wingi pukul] LT',
9391            lastWeek : 'dddd [kepengker pukul] LT',
9392            sameElse : 'L'
9393        },
9394        relativeTime : {
9395            future : 'wonten ing %s',
9396            past : '%s ingkang kepengker',
9397            s : 'sawetawis detik',
9398            ss : '%d detik',
9399            m : 'setunggal menit',
9400            mm : '%d menit',
9401            h : 'setunggal jam',
9402            hh : '%d jam',
9403            d : 'sedinten',
9404            dd : '%d dinten',
9405            M : 'sewulan',
9406            MM : '%d wulan',
9407            y : 'setaun',
9408            yy : '%d taun'
9409        },
9410        week : {
9411            dow : 1, // Monday is the first day of the week.
9412            doy : 7  // The week that contains Jan 7th is the first week of the year.
9413        }
9414    });
9415
9416    //! moment.js locale configuration
9417
9418    hooks.defineLocale('ka', {
9419        months : {
9420            standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
9421            format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
9422        },
9423        monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
9424        weekdays : {
9425            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
9426            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
9427            isFormat: /(წინა|შემდეგ)/
9428        },
9429        weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
9430        weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
9431        longDateFormat : {
9432            LT : 'h:mm A',
9433            LTS : 'h:mm:ss A',
9434            L : 'DD/MM/YYYY',
9435            LL : 'D MMMM YYYY',
9436            LLL : 'D MMMM YYYY h:mm A',
9437            LLLL : 'dddd, D MMMM YYYY h:mm A'
9438        },
9439        calendar : {
9440            sameDay : '[დღეს] LT[-ზე]',
9441            nextDay : '[ხვალ] LT[-ზე]',
9442            lastDay : '[გუშინ] LT[-ზე]',
9443            nextWeek : '[შემდეგ] dddd LT[-ზე]',
9444            lastWeek : '[წინა] dddd LT-ზე',
9445            sameElse : 'L'
9446        },
9447        relativeTime : {
9448            future : function (s) {
9449                return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
9450                    s.replace(/ი$/, 'ში') :
9451                    s + 'ში';
9452            },
9453            past : function (s) {
9454                if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
9455                    return s.replace(/(ი|ე)$/, 'ის წინ');
9456                }
9457                if ((/წელი/).test(s)) {
9458                    return s.replace(/წელი$/, 'წლის წინ');
9459                }
9460            },
9461            s : 'რამდენიმე წამი',
9462            ss : '%d წამი',
9463            m : 'წუთი',
9464            mm : '%d წუთი',
9465            h : 'საათი',
9466            hh : '%d საათი',
9467            d : 'დღე',
9468            dd : '%d დღე',
9469            M : 'თვე',
9470            MM : '%d თვე',
9471            y : 'წელი',
9472            yy : '%d წელი'
9473        },
9474        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
9475        ordinal : function (number) {
9476            if (number === 0) {
9477                return number;
9478            }
9479            if (number === 1) {
9480                return number + '-ლი';
9481            }
9482            if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
9483                return 'მე-' + number;
9484            }
9485            return number + '-ე';
9486        },
9487        week : {
9488            dow : 1,
9489            doy : 7
9490        }
9491    });
9492
9493    //! moment.js locale configuration
9494
9495    var suffixes$1 = {
9496        0: '-ші',
9497        1: '-ші',
9498        2: '-ші',
9499        3: '-ші',
9500        4: '-ші',
9501        5: '-ші',
9502        6: '-шы',
9503        7: '-ші',
9504        8: '-ші',
9505        9: '-шы',
9506        10: '-шы',
9507        20: '-шы',
9508        30: '-шы',
9509        40: '-шы',
9510        50: '-ші',
9511        60: '-шы',
9512        70: '-ші',
9513        80: '-ші',
9514        90: '-шы',
9515        100: '-ші'
9516    };
9517
9518    hooks.defineLocale('kk', {
9519        months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
9520        monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
9521        weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
9522        weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
9523        weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
9524        longDateFormat : {
9525            LT : 'HH:mm',
9526            LTS : 'HH:mm:ss',
9527            L : 'DD.MM.YYYY',
9528            LL : 'D MMMM YYYY',
9529            LLL : 'D MMMM YYYY HH:mm',
9530            LLLL : 'dddd, D MMMM YYYY HH:mm'
9531        },
9532        calendar : {
9533            sameDay : '[Бүгін сағат] LT',
9534            nextDay : '[Ертең сағат] LT',
9535            nextWeek : 'dddd [сағат] LT',
9536            lastDay : '[Кеше сағат] LT',
9537            lastWeek : '[Өткен аптаның] dddd [сағат] LT',
9538            sameElse : 'L'
9539        },
9540        relativeTime : {
9541            future : '%s ішінде',
9542            past : '%s бұрын',
9543            s : 'бірнеше секунд',
9544            ss : '%d секунд',
9545            m : 'бір минут',
9546            mm : '%d минут',
9547            h : 'бір сағат',
9548            hh : '%d сағат',
9549            d : 'бір күн',
9550            dd : '%d күн',
9551            M : 'бір ай',
9552            MM : '%d ай',
9553            y : 'бір жыл',
9554            yy : '%d жыл'
9555        },
9556        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
9557        ordinal : function (number) {
9558            var a = number % 10,
9559                b = number >= 100 ? 100 : null;
9560            return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
9561        },
9562        week : {
9563            dow : 1, // Monday is the first day of the week.
9564            doy : 7  // The week that contains Jan 7th is the first week of the year.
9565        }
9566    });
9567
9568    //! moment.js locale configuration
9569
9570    var symbolMap$8 = {
9571        '1': '១',
9572        '2': '២',
9573        '3': '៣',
9574        '4': '៤',
9575        '5': '៥',
9576        '6': '៦',
9577        '7': '៧',
9578        '8': '៨',
9579        '9': '៩',
9580        '0': '០'
9581    }, numberMap$7 = {
9582        '១': '1',
9583        '២': '2',
9584        '៣': '3',
9585        '៤': '4',
9586        '៥': '5',
9587        '៦': '6',
9588        '៧': '7',
9589        '៨': '8',
9590        '៩': '9',
9591        '០': '0'
9592    };
9593
9594    hooks.defineLocale('km', {
9595        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
9596            '_'
9597        ),
9598        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
9599            '_'
9600        ),
9601        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
9602        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
9603        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
9604        weekdaysParseExact: true,
9605        longDateFormat: {
9606            LT: 'HH:mm',
9607            LTS: 'HH:mm:ss',
9608            L: 'DD/MM/YYYY',
9609            LL: 'D MMMM YYYY',
9610            LLL: 'D MMMM YYYY HH:mm',
9611            LLLL: 'dddd, D MMMM YYYY HH:mm'
9612        },
9613        meridiemParse: /ព្រឹក|ល្ងាច/,
9614        isPM: function (input) {
9615            return input === 'ល្ងាច';
9616        },
9617        meridiem: function (hour, minute, isLower) {
9618            if (hour < 12) {
9619                return 'ព្រឹក';
9620            } else {
9621                return 'ល្ងាច';
9622            }
9623        },
9624        calendar: {
9625            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
9626            nextDay: '[ស្អែក ម៉ោង] LT',
9627            nextWeek: 'dddd [ម៉ោង] LT',
9628            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
9629            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
9630            sameElse: 'L'
9631        },
9632        relativeTime: {
9633            future: '%sទៀត',
9634            past: '%sមុន',
9635            s: 'ប៉ុន្មានវិនាទី',
9636            ss: '%d វិនាទី',
9637            m: 'មួយនាទី',
9638            mm: '%d នាទី',
9639            h: 'មួយម៉ោង',
9640            hh: '%d ម៉ោង',
9641            d: 'មួយថ្ងៃ',
9642            dd: '%d ថ្ងៃ',
9643            M: 'មួយខែ',
9644            MM: '%d ខែ',
9645            y: 'មួយឆ្នាំ',
9646            yy: '%d ឆ្នាំ'
9647        },
9648        dayOfMonthOrdinalParse : /ទី\d{1,2}/,
9649        ordinal : 'ទី%d',
9650        preparse: function (string) {
9651            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
9652                return numberMap$7[match];
9653            });
9654        },
9655        postformat: function (string) {
9656            return string.replace(/\d/g, function (match) {
9657                return symbolMap$8[match];
9658            });
9659        },
9660        week: {
9661            dow: 1, // Monday is the first day of the week.
9662            doy: 4 // The week that contains Jan 4th is the first week of the year.
9663        }
9664    });
9665
9666    //! moment.js locale configuration
9667
9668    var symbolMap$9 = {
9669        '1': 'à³§',
9670        '2': '೨',
9671        '3': '೩',
9672        '4': '೪',
9673        '5': '೫',
9674        '6': '೬',
9675        '7': 'à³­',
9676        '8': 'à³®',
9677        '9': '೯',
9678        '0': '೦'
9679    },
9680    numberMap$8 = {
9681        'à³§': '1',
9682        '೨': '2',
9683        '೩': '3',
9684        '೪': '4',
9685        '೫': '5',
9686        '೬': '6',
9687        'à³­': '7',
9688        'à³®': '8',
9689        '೯': '9',
9690        '೦': '0'
9691    };
9692
9693    hooks.defineLocale('kn', {
9694        months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),
9695        monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),
9696        monthsParseExact: true,
9697        weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),
9698        weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
9699        weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
9700        longDateFormat : {
9701            LT : 'A h:mm',
9702            LTS : 'A h:mm:ss',
9703            L : 'DD/MM/YYYY',
9704            LL : 'D MMMM YYYY',
9705            LLL : 'D MMMM YYYY, A h:mm',
9706            LLLL : 'dddd, D MMMM YYYY, A h:mm'
9707        },
9708        calendar : {
9709            sameDay : '[ಇಂದು] LT',
9710            nextDay : '[ನಾಳೆ] LT',
9711            nextWeek : 'dddd, LT',
9712            lastDay : '[ನಿನ್ನೆ] LT',
9713            lastWeek : '[ಕೊನೆಯ] dddd, LT',
9714            sameElse : 'L'
9715        },
9716        relativeTime : {
9717            future : '%s ನಂತರ',
9718            past : '%s ಹಿಂದೆ',
9719            s : 'ಕೆಲವು ಕ್ಷಣಗಳು',
9720            ss : '%d ಸೆಕೆಂಡುಗಳು',
9721            m : 'ಒಂದು ನಿಮಿಷ',
9722            mm : '%d ನಿಮಿಷ',
9723            h : 'ಒಂದು ಗಂಟೆ',
9724            hh : '%d ಗಂಟೆ',
9725            d : 'ಒಂದು ದಿನ',
9726            dd : '%d ದಿನ',
9727            M : 'ಒಂದು ತಿಂಗಳು',
9728            MM : '%d ತಿಂಗಳು',
9729            y : 'ಒಂದು ವರ್ಷ',
9730            yy : '%d ವರ್ಷ'
9731        },
9732        preparse: function (string) {
9733            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
9734                return numberMap$8[match];
9735            });
9736        },
9737        postformat: function (string) {
9738            return string.replace(/\d/g, function (match) {
9739                return symbolMap$9[match];
9740            });
9741        },
9742        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
9743        meridiemHour : function (hour, meridiem) {
9744            if (hour === 12) {
9745                hour = 0;
9746            }
9747            if (meridiem === 'ರಾತ್ರಿ') {
9748                return hour < 4 ? hour : hour + 12;
9749            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
9750                return hour;
9751            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
9752                return hour >= 10 ? hour : hour + 12;
9753            } else if (meridiem === 'ಸಂಜೆ') {
9754                return hour + 12;
9755            }
9756        },
9757        meridiem : function (hour, minute, isLower) {
9758            if (hour < 4) {
9759                return 'ರಾತ್ರಿ';
9760            } else if (hour < 10) {
9761                return 'ಬೆಳಿಗ್ಗೆ';
9762            } else if (hour < 17) {
9763                return 'ಮಧ್ಯಾಹ್ನ';
9764            } else if (hour < 20) {
9765                return 'ಸಂಜೆ';
9766            } else {
9767                return 'ರಾತ್ರಿ';
9768            }
9769        },
9770        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
9771        ordinal : function (number) {
9772            return number + 'ನೇ';
9773        },
9774        week : {
9775            dow : 0, // Sunday is the first day of the week.
9776            doy : 6  // The week that contains Jan 6th is the first week of the year.
9777        }
9778    });
9779
9780    //! moment.js locale configuration
9781
9782    hooks.defineLocale('ko', {
9783        months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
9784        monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
9785        weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
9786        weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
9787        weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
9788        longDateFormat : {
9789            LT : 'A h:mm',
9790            LTS : 'A h:mm:ss',
9791            L : 'YYYY.MM.DD.',
9792            LL : 'YYYY년 MMMM D일',
9793            LLL : 'YYYY년 MMMM D일 A h:mm',
9794            LLLL : 'YYYY년 MMMM D일 dddd A h:mm',
9795            l : 'YYYY.MM.DD.',
9796            ll : 'YYYY년 MMMM D일',
9797            lll : 'YYYY년 MMMM D일 A h:mm',
9798            llll : 'YYYY년 MMMM D일 dddd A h:mm'
9799        },
9800        calendar : {
9801            sameDay : '오늘 LT',
9802            nextDay : '내일 LT',
9803            nextWeek : 'dddd LT',
9804            lastDay : '어제 LT',
9805            lastWeek : '지난주 dddd LT',
9806            sameElse : 'L'
9807        },
9808        relativeTime : {
9809            future : '%s 후',
9810            past : '%s 전',
9811            s : '몇 초',
9812            ss : '%d초',
9813            m : '1분',
9814            mm : '%d분',
9815            h : '한 시간',
9816            hh : '%d시간',
9817            d : '하루',
9818            dd : '%d일',
9819            M : '한 달',
9820            MM : '%d달',
9821            y : '일 년',
9822            yy : '%d년'
9823        },
9824        dayOfMonthOrdinalParse : /\d{1,2}(일|월|주)/,
9825        ordinal : function (number, period) {
9826            switch (period) {
9827                case 'd':
9828                case 'D':
9829                case 'DDD':
9830                    return number + '일';
9831                case 'M':
9832                    return number + '월';
9833                case 'w':
9834                case 'W':
9835                    return number + '주';
9836                default:
9837                    return number;
9838            }
9839        },
9840        meridiemParse : /오전|오후/,
9841        isPM : function (token) {
9842            return token === '오후';
9843        },
9844        meridiem : function (hour, minute, isUpper) {
9845            return hour < 12 ? '오전' : '오후';
9846        }
9847    });
9848
9849    //! moment.js locale configuration
9850
9851    var symbolMap$a = {
9852        '1': 'Ù¡',
9853        '2': 'Ù¢',
9854        '3': 'Ù£',
9855        '4': 'Ù¤',
9856        '5': 'Ù¥',
9857        '6': 'Ù¦',
9858        '7': 'Ù§',
9859        '8': 'Ù¨',
9860        '9': 'Ù©',
9861        '0': 'Ù '
9862    }, numberMap$9 = {
9863        'Ù¡': '1',
9864        'Ù¢': '2',
9865        'Ù£': '3',
9866        'Ù¤': '4',
9867        'Ù¥': '5',
9868        'Ù¦': '6',
9869        'Ù§': '7',
9870        'Ù¨': '8',
9871        'Ù©': '9',
9872        'Ù ': '0'
9873    },
9874    months$7 = [
9875        'کانونی دووەم',
9876        'شوبات',
9877        'ئازار',
9878        'نیسان',
9879        'ئایار',
9880        'حوزەیران',
9881        'تەمموز',
9882        'ئاب',
9883        'ئەیلوول',
9884        'تشرینی یەكەم',
9885        'تشرینی دووەم',
9886        'كانونی یەکەم'
9887    ];
9888
9889
9890    hooks.defineLocale('ku', {
9891        months : months$7,
9892        monthsShort : months$7,
9893        weekdays : 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split('_'),
9894        weekdaysShort : 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),
9895        weekdaysMin : 'ی_د_س_چ_پ_ه_ش'.split('_'),
9896        weekdaysParseExact : true,
9897        longDateFormat : {
9898            LT : 'HH:mm',
9899            LTS : 'HH:mm:ss',
9900            L : 'DD/MM/YYYY',
9901            LL : 'D MMMM YYYY',
9902            LLL : 'D MMMM YYYY HH:mm',
9903            LLLL : 'dddd, D MMMM YYYY HH:mm'
9904        },
9905        meridiemParse: /ئێواره‌|به‌یانی/,
9906        isPM: function (input) {
9907            return /ئێواره‌/.test(input);
9908        },
9909        meridiem : function (hour, minute, isLower) {
9910            if (hour < 12) {
9911                return 'به‌یانی';
9912            } else {
9913                return 'ئێواره‌';
9914            }
9915        },
9916        calendar : {
9917            sameDay : '[ئه‌مرۆ كاتژمێر] LT',
9918            nextDay : '[به‌یانی كاتژمێر] LT',
9919            nextWeek : 'dddd [كاتژمێر] LT',
9920            lastDay : '[دوێنێ كاتژمێر] LT',
9921            lastWeek : 'dddd [كاتژمێر] LT',
9922            sameElse : 'L'
9923        },
9924        relativeTime : {
9925            future : 'له‌ %s',
9926            past : '%s',
9927            s : 'چه‌ند چركه‌یه‌ك',
9928            ss : 'چركه‌ %d',
9929            m : 'یه‌ك خوله‌ك',
9930            mm : '%d خوله‌ك',
9931            h : 'یه‌ك كاتژمێر',
9932            hh : '%d كاتژمێر',
9933            d : 'یه‌ك ڕۆژ',
9934            dd : '%d ڕۆژ',
9935            M : 'یه‌ك مانگ',
9936            MM : '%d مانگ',
9937            y : 'یه‌ك ساڵ',
9938            yy : '%d ساڵ'
9939        },
9940        preparse: function (string) {
9941            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
9942                return numberMap$9[match];
9943            }).replace(/،/g, ',');
9944        },
9945        postformat: function (string) {
9946            return string.replace(/\d/g, function (match) {
9947                return symbolMap$a[match];
9948            }).replace(/,/g, '،');
9949        },
9950        week : {
9951            dow : 6, // Saturday is the first day of the week.
9952            doy : 12 // The week that contains Jan 12th is the first week of the year.
9953        }
9954    });
9955
9956    //! moment.js locale configuration
9957
9958    var suffixes$2 = {
9959        0: '-чү',
9960        1: '-чи',
9961        2: '-чи',
9962        3: '-чү',
9963        4: '-чү',
9964        5: '-чи',
9965        6: '-чы',
9966        7: '-чи',
9967        8: '-чи',
9968        9: '-чу',
9969        10: '-чу',
9970        20: '-чы',
9971        30: '-чу',
9972        40: '-чы',
9973        50: '-чү',
9974        60: '-чы',
9975        70: '-чи',
9976        80: '-чи',
9977        90: '-чу',
9978        100: '-чү'
9979    };
9980
9981    hooks.defineLocale('ky', {
9982        months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
9983        monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
9984        weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
9985        weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
9986        weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
9987        longDateFormat : {
9988            LT : 'HH:mm',
9989            LTS : 'HH:mm:ss',
9990            L : 'DD.MM.YYYY',
9991            LL : 'D MMMM YYYY',
9992            LLL : 'D MMMM YYYY HH:mm',
9993            LLLL : 'dddd, D MMMM YYYY HH:mm'
9994        },
9995        calendar : {
9996            sameDay : '[Бүгүн саат] LT',
9997            nextDay : '[Эртең саат] LT',
9998            nextWeek : 'dddd [саат] LT',
9999            lastDay : '[Кечээ саат] LT',
10000            lastWeek : '[Өткөн аптанын] dddd [күнү] [саат] LT',
10001            sameElse : 'L'
10002        },
10003        relativeTime : {
10004            future : '%s ичинде',
10005            past : '%s мурун',
10006            s : 'бирнече секунд',
10007            ss : '%d секунд',
10008            m : 'бир мүнөт',
10009            mm : '%d мүнөт',
10010            h : 'бир саат',
10011            hh : '%d саат',
10012            d : 'бир күн',
10013            dd : '%d күн',
10014            M : 'бир ай',
10015            MM : '%d ай',
10016            y : 'бир жыл',
10017            yy : '%d жыл'
10018        },
10019        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
10020        ordinal : function (number) {
10021            var a = number % 10,
10022                b = number >= 100 ? 100 : null;
10023            return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
10024        },
10025        week : {
10026            dow : 1, // Monday is the first day of the week.
10027            doy : 7  // The week that contains Jan 7th is the first week of the year.
10028        }
10029    });
10030
10031    //! moment.js locale configuration
10032
10033    function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
10034        var format = {
10035            'm': ['eng Minutt', 'enger Minutt'],
10036            'h': ['eng Stonn', 'enger Stonn'],
10037            'd': ['een Dag', 'engem Dag'],
10038            'M': ['ee Mount', 'engem Mount'],
10039            'y': ['ee Joer', 'engem Joer']
10040        };
10041        return withoutSuffix ? format[key][0] : format[key][1];
10042    }
10043    function processFutureTime(string) {
10044        var number = string.substr(0, string.indexOf(' '));
10045        if (eifelerRegelAppliesToNumber(number)) {
10046            return 'a ' + string;
10047        }
10048        return 'an ' + string;
10049    }
10050    function processPastTime(string) {
10051        var number = string.substr(0, string.indexOf(' '));
10052        if (eifelerRegelAppliesToNumber(number)) {
10053            return 'viru ' + string;
10054        }
10055        return 'virun ' + string;
10056    }
10057    /**
10058     * Returns true if the word before the given number loses the '-n' ending.
10059     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
10060     *
10061     * @param number {integer}
10062     * @returns {boolean}
10063     */
10064    function eifelerRegelAppliesToNumber(number) {
10065        number = parseInt(number, 10);
10066        if (isNaN(number)) {
10067            return false;
10068        }
10069        if (number < 0) {
10070            // Negative Number --> always true
10071            return true;
10072        } else if (number < 10) {
10073            // Only 1 digit
10074            if (4 <= number && number <= 7) {
10075                return true;
10076            }
10077            return false;
10078        } else if (number < 100) {
10079            // 2 digits
10080            var lastDigit = number % 10, firstDigit = number / 10;
10081            if (lastDigit === 0) {
10082                return eifelerRegelAppliesToNumber(firstDigit);
10083            }
10084            return eifelerRegelAppliesToNumber(lastDigit);
10085        } else if (number < 10000) {
10086            // 3 or 4 digits --> recursively check first digit
10087            while (number >= 10) {
10088                number = number / 10;
10089            }
10090            return eifelerRegelAppliesToNumber(number);
10091        } else {
10092            // Anything larger than 4 digits: recursively check first n-3 digits
10093            number = number / 1000;
10094            return eifelerRegelAppliesToNumber(number);
10095        }
10096    }
10097
10098    hooks.defineLocale('lb', {
10099        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
10100        monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
10101        monthsParseExact : true,
10102        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
10103        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
10104        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
10105        weekdaysParseExact : true,
10106        longDateFormat: {
10107            LT: 'H:mm [Auer]',
10108            LTS: 'H:mm:ss [Auer]',
10109            L: 'DD.MM.YYYY',
10110            LL: 'D. MMMM YYYY',
10111            LLL: 'D. MMMM YYYY H:mm [Auer]',
10112            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
10113        },
10114        calendar: {
10115            sameDay: '[Haut um] LT',
10116            sameElse: 'L',
10117            nextDay: '[Muer um] LT',
10118            nextWeek: 'dddd [um] LT',
10119            lastDay: '[Gëschter um] LT',
10120            lastWeek: function () {
10121                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
10122                switch (this.day()) {
10123                    case 2:
10124                    case 4:
10125                        return '[Leschten] dddd [um] LT';
10126                    default:
10127                        return '[Leschte] dddd [um] LT';
10128                }
10129            }
10130        },
10131        relativeTime : {
10132            future : processFutureTime,
10133            past : processPastTime,
10134            s : 'e puer Sekonnen',
10135            ss : '%d Sekonnen',
10136            m : processRelativeTime$5,
10137            mm : '%d Minutten',
10138            h : processRelativeTime$5,
10139            hh : '%d Stonnen',
10140            d : processRelativeTime$5,
10141            dd : '%d Deeg',
10142            M : processRelativeTime$5,
10143            MM : '%d Méint',
10144            y : processRelativeTime$5,
10145            yy : '%d Joer'
10146        },
10147        dayOfMonthOrdinalParse: /\d{1,2}\./,
10148        ordinal: '%d.',
10149        week: {
10150            dow: 1, // Monday is the first day of the week.
10151            doy: 4  // The week that contains Jan 4th is the first week of the year.
10152        }
10153    });
10154
10155    //! moment.js locale configuration
10156
10157    hooks.defineLocale('lo', {
10158        months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
10159        monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
10160        weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
10161        weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
10162        weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
10163        weekdaysParseExact : true,
10164        longDateFormat : {
10165            LT : 'HH:mm',
10166            LTS : 'HH:mm:ss',
10167            L : 'DD/MM/YYYY',
10168            LL : 'D MMMM YYYY',
10169            LLL : 'D MMMM YYYY HH:mm',
10170            LLLL : 'ວັນdddd D MMMM YYYY HH:mm'
10171        },
10172        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
10173        isPM: function (input) {
10174            return input === 'ຕອນແລງ';
10175        },
10176        meridiem : function (hour, minute, isLower) {
10177            if (hour < 12) {
10178                return 'ຕອນເຊົ້າ';
10179            } else {
10180                return 'ຕອນແລງ';
10181            }
10182        },
10183        calendar : {
10184            sameDay : '[ມື້ນີ້ເວລາ] LT',
10185            nextDay : '[ມື້ອື່ນເວລາ] LT',
10186            nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',
10187            lastDay : '[ມື້ວານນີ້ເວລາ] LT',
10188            lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
10189            sameElse : 'L'
10190        },
10191        relativeTime : {
10192            future : 'ອີກ %s',
10193            past : '%sຜ່ານມາ',
10194            s : 'ບໍ່ເທົ່າໃດວິນາທີ',
10195            ss : '%d ວິນາທີ' ,
10196            m : '1 ນາທີ',
10197            mm : '%d ນາທີ',
10198            h : '1 ຊົ່ວໂມງ',
10199            hh : '%d ຊົ່ວໂມງ',
10200            d : '1 ມື້',
10201            dd : '%d ມື້',
10202            M : '1 ເດືອນ',
10203            MM : '%d ເດືອນ',
10204            y : '1 ປີ',
10205            yy : '%d ປີ'
10206        },
10207        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
10208        ordinal : function (number) {
10209            return 'ທີ່' + number;
10210        }
10211    });
10212
10213    //! moment.js locale configuration
10214
10215    var units = {
10216        'ss' : 'sekundė_sekundžių_sekundes',
10217        'm' : 'minutė_minutės_minutę',
10218        'mm': 'minutės_minučių_minutes',
10219        'h' : 'valanda_valandos_valandą',
10220        'hh': 'valandos_valandų_valandas',
10221        'd' : 'diena_dienos_dieną',
10222        'dd': 'dienos_dienų_dienas',
10223        'M' : 'mėnuo_mėnesio_mėnesį',
10224        'MM': 'mėnesiai_mėnesių_mėnesius',
10225        'y' : 'metai_metų_metus',
10226        'yy': 'metai_metų_metus'
10227    };
10228    function translateSeconds(number, withoutSuffix, key, isFuture) {
10229        if (withoutSuffix) {
10230            return 'kelios sekundės';
10231        } else {
10232            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
10233        }
10234    }
10235    function translateSingular(number, withoutSuffix, key, isFuture) {
10236        return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
10237    }
10238    function special(number) {
10239        return number % 10 === 0 || (number > 10 && number < 20);
10240    }
10241    function forms(key) {
10242        return units[key].split('_');
10243    }
10244    function translate$6(number, withoutSuffix, key, isFuture) {
10245        var result = number + ' ';
10246        if (number === 1) {
10247            return result + translateSingular(number, withoutSuffix, key[0], isFuture);
10248        } else if (withoutSuffix) {
10249            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
10250        } else {
10251            if (isFuture) {
10252                return result + forms(key)[1];
10253            } else {
10254                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
10255            }
10256        }
10257    }
10258    hooks.defineLocale('lt', {
10259        months : {
10260            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
10261            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),
10262            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/
10263        },
10264        monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
10265        weekdays : {
10266            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
10267            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
10268            isFormat: /dddd HH:mm/
10269        },
10270        weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
10271        weekdaysMin : 'S_P_A_T_K_Pn_Å '.split('_'),
10272        weekdaysParseExact : true,
10273        longDateFormat : {
10274            LT : 'HH:mm',
10275            LTS : 'HH:mm:ss',
10276            L : 'YYYY-MM-DD',
10277            LL : 'YYYY [m.] MMMM D [d.]',
10278            LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
10279            LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
10280            l : 'YYYY-MM-DD',
10281            ll : 'YYYY [m.] MMMM D [d.]',
10282            lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
10283            llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
10284        },
10285        calendar : {
10286            sameDay : '[Å iandien] LT',
10287            nextDay : '[Rytoj] LT',
10288            nextWeek : 'dddd LT',
10289            lastDay : '[Vakar] LT',
10290            lastWeek : '[Praėjusį] dddd LT',
10291            sameElse : 'L'
10292        },
10293        relativeTime : {
10294            future : 'po %s',
10295            past : 'prieš %s',
10296            s : translateSeconds,
10297            ss : translate$6,
10298            m : translateSingular,
10299            mm : translate$6,
10300            h : translateSingular,
10301            hh : translate$6,
10302            d : translateSingular,
10303            dd : translate$6,
10304            M : translateSingular,
10305            MM : translate$6,
10306            y : translateSingular,
10307            yy : translate$6
10308        },
10309        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
10310        ordinal : function (number) {
10311            return number + '-oji';
10312        },
10313        week : {
10314            dow : 1, // Monday is the first day of the week.
10315            doy : 4  // The week that contains Jan 4th is the first week of the year.
10316        }
10317    });
10318
10319    //! moment.js locale configuration
10320
10321    var units$1 = {
10322        'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
10323        'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
10324        'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
10325        'h': 'stundas_stundām_stunda_stundas'.split('_'),
10326        'hh': 'stundas_stundām_stunda_stundas'.split('_'),
10327        'd': 'dienas_dienām_diena_dienas'.split('_'),
10328        'dd': 'dienas_dienām_diena_dienas'.split('_'),
10329        'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
10330        'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
10331        'y': 'gada_gadiem_gads_gadi'.split('_'),
10332        'yy': 'gada_gadiem_gads_gadi'.split('_')
10333    };
10334    /**
10335     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
10336     */
10337    function format$1(forms, number, withoutSuffix) {
10338        if (withoutSuffix) {
10339            // E.g. "21 minūte", "3 minūtes".
10340            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
10341        } else {
10342            // E.g. "21 minūtes" as in "pēc 21 minūtes".
10343            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
10344            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
10345        }
10346    }
10347    function relativeTimeWithPlural$1(number, withoutSuffix, key) {
10348        return number + ' ' + format$1(units$1[key], number, withoutSuffix);
10349    }
10350    function relativeTimeWithSingular(number, withoutSuffix, key) {
10351        return format$1(units$1[key], number, withoutSuffix);
10352    }
10353    function relativeSeconds(number, withoutSuffix) {
10354        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
10355    }
10356
10357    hooks.defineLocale('lv', {
10358        months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
10359        monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
10360        weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
10361        weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),
10362        weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
10363        weekdaysParseExact : true,
10364        longDateFormat : {
10365            LT : 'HH:mm',
10366            LTS : 'HH:mm:ss',
10367            L : 'DD.MM.YYYY.',
10368            LL : 'YYYY. [gada] D. MMMM',
10369            LLL : 'YYYY. [gada] D. MMMM, HH:mm',
10370            LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'
10371        },
10372        calendar : {
10373            sameDay : '[Å odien pulksten] LT',
10374            nextDay : '[Rīt pulksten] LT',
10375            nextWeek : 'dddd [pulksten] LT',
10376            lastDay : '[Vakar pulksten] LT',
10377            lastWeek : '[Pagājušā] dddd [pulksten] LT',
10378            sameElse : 'L'
10379        },
10380        relativeTime : {
10381            future : 'pēc %s',
10382            past : 'pirms %s',
10383            s : relativeSeconds,
10384            ss : relativeTimeWithPlural$1,
10385            m : relativeTimeWithSingular,
10386            mm : relativeTimeWithPlural$1,
10387            h : relativeTimeWithSingular,
10388            hh : relativeTimeWithPlural$1,
10389            d : relativeTimeWithSingular,
10390            dd : relativeTimeWithPlural$1,
10391            M : relativeTimeWithSingular,
10392            MM : relativeTimeWithPlural$1,
10393            y : relativeTimeWithSingular,
10394            yy : relativeTimeWithPlural$1
10395        },
10396        dayOfMonthOrdinalParse: /\d{1,2}\./,
10397        ordinal : '%d.',
10398        week : {
10399            dow : 1, // Monday is the first day of the week.
10400            doy : 4  // The week that contains Jan 4th is the first week of the year.
10401        }
10402    });
10403
10404    //! moment.js locale configuration
10405
10406    var translator = {
10407        words: { //Different grammatical cases
10408            ss: ['sekund', 'sekunda', 'sekundi'],
10409            m: ['jedan minut', 'jednog minuta'],
10410            mm: ['minut', 'minuta', 'minuta'],
10411            h: ['jedan sat', 'jednog sata'],
10412            hh: ['sat', 'sata', 'sati'],
10413            dd: ['dan', 'dana', 'dana'],
10414            MM: ['mjesec', 'mjeseca', 'mjeseci'],
10415            yy: ['godina', 'godine', 'godina']
10416        },
10417        correctGrammaticalCase: function (number, wordKey) {
10418            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
10419        },
10420        translate: function (number, withoutSuffix, key) {
10421            var wordKey = translator.words[key];
10422            if (key.length === 1) {
10423                return withoutSuffix ? wordKey[0] : wordKey[1];
10424            } else {
10425                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
10426            }
10427        }
10428    };
10429
10430    hooks.defineLocale('me', {
10431        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
10432        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
10433        monthsParseExact : true,
10434        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
10435        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
10436        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
10437        weekdaysParseExact : true,
10438        longDateFormat: {
10439            LT: 'H:mm',
10440            LTS : 'H:mm:ss',
10441            L: 'DD.MM.YYYY',
10442            LL: 'D. MMMM YYYY',
10443            LLL: 'D. MMMM YYYY H:mm',
10444            LLLL: 'dddd, D. MMMM YYYY H:mm'
10445        },
10446        calendar: {
10447            sameDay: '[danas u] LT',
10448            nextDay: '[sjutra u] LT',
10449
10450            nextWeek: function () {
10451                switch (this.day()) {
10452                    case 0:
10453                        return '[u] [nedjelju] [u] LT';
10454                    case 3:
10455                        return '[u] [srijedu] [u] LT';
10456                    case 6:
10457                        return '[u] [subotu] [u] LT';
10458                    case 1:
10459                    case 2:
10460                    case 4:
10461                    case 5:
10462                        return '[u] dddd [u] LT';
10463                }
10464            },
10465            lastDay  : '[juče u] LT',
10466            lastWeek : function () {
10467                var lastWeekDays = [
10468                    '[prošle] [nedjelje] [u] LT',
10469                    '[prošlog] [ponedjeljka] [u] LT',
10470                    '[prošlog] [utorka] [u] LT',
10471                    '[prošle] [srijede] [u] LT',
10472                    '[prošlog] [četvrtka] [u] LT',
10473                    '[prošlog] [petka] [u] LT',
10474                    '[prošle] [subote] [u] LT'
10475                ];
10476                return lastWeekDays[this.day()];
10477            },
10478            sameElse : 'L'
10479        },
10480        relativeTime : {
10481            future : 'za %s',
10482            past   : 'prije %s',
10483            s      : 'nekoliko sekundi',
10484            ss     : translator.translate,
10485            m      : translator.translate,
10486            mm     : translator.translate,
10487            h      : translator.translate,
10488            hh     : translator.translate,
10489            d      : 'dan',
10490            dd     : translator.translate,
10491            M      : 'mjesec',
10492            MM     : translator.translate,
10493            y      : 'godinu',
10494            yy     : translator.translate
10495        },
10496        dayOfMonthOrdinalParse: /\d{1,2}\./,
10497        ordinal : '%d.',
10498        week : {
10499            dow : 1, // Monday is the first day of the week.
10500            doy : 7  // The week that contains Jan 7th is the first week of the year.
10501        }
10502    });
10503
10504    //! moment.js locale configuration
10505
10506    hooks.defineLocale('mi', {
10507        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('_'),
10508        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),
10509        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
10510        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
10511        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
10512        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
10513        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
10514        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
10515        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
10516        longDateFormat: {
10517            LT: 'HH:mm',
10518            LTS: 'HH:mm:ss',
10519            L: 'DD/MM/YYYY',
10520            LL: 'D MMMM YYYY',
10521            LLL: 'D MMMM YYYY [i] HH:mm',
10522            LLLL: 'dddd, D MMMM YYYY [i] HH:mm'
10523        },
10524        calendar: {
10525            sameDay: '[i teie mahana, i] LT',
10526            nextDay: '[apopo i] LT',
10527            nextWeek: 'dddd [i] LT',
10528            lastDay: '[inanahi i] LT',
10529            lastWeek: 'dddd [whakamutunga i] LT',
10530            sameElse: 'L'
10531        },
10532        relativeTime: {
10533            future: 'i roto i %s',
10534            past: '%s i mua',
10535            s: 'te hēkona ruarua',
10536            ss: '%d hēkona',
10537            m: 'he meneti',
10538            mm: '%d meneti',
10539            h: 'te haora',
10540            hh: '%d haora',
10541            d: 'he ra',
10542            dd: '%d ra',
10543            M: 'he marama',
10544            MM: '%d marama',
10545            y: 'he tau',
10546            yy: '%d tau'
10547        },
10548        dayOfMonthOrdinalParse: /\d{1,2}º/,
10549        ordinal: '%dº',
10550        week : {
10551            dow : 1, // Monday is the first day of the week.
10552            doy : 4  // The week that contains Jan 4th is the first week of the year.
10553        }
10554    });
10555
10556    //! moment.js locale configuration
10557
10558    hooks.defineLocale('mk', {
10559        months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
10560        monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
10561        weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
10562        weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
10563        weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
10564        longDateFormat : {
10565            LT : 'H:mm',
10566            LTS : 'H:mm:ss',
10567            L : 'D.MM.YYYY',
10568            LL : 'D MMMM YYYY',
10569            LLL : 'D MMMM YYYY H:mm',
10570            LLLL : 'dddd, D MMMM YYYY H:mm'
10571        },
10572        calendar : {
10573            sameDay : '[Денес во] LT',
10574            nextDay : '[Утре во] LT',
10575            nextWeek : '[Во] dddd [во] LT',
10576            lastDay : '[Вчера во] LT',
10577            lastWeek : function () {
10578                switch (this.day()) {
10579                    case 0:
10580                    case 3:
10581                    case 6:
10582                        return '[Изминатата] dddd [во] LT';
10583                    case 1:
10584                    case 2:
10585                    case 4:
10586                    case 5:
10587                        return '[Изминатиот] dddd [во] LT';
10588                }
10589            },
10590            sameElse : 'L'
10591        },
10592        relativeTime : {
10593            future : 'после %s',
10594            past : 'пред %s',
10595            s : 'неколку секунди',
10596            ss : '%d секунди',
10597            m : 'минута',
10598            mm : '%d минути',
10599            h : 'час',
10600            hh : '%d часа',
10601            d : 'ден',
10602            dd : '%d дена',
10603            M : 'месец',
10604            MM : '%d месеци',
10605            y : 'година',
10606            yy : '%d години'
10607        },
10608        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
10609        ordinal : function (number) {
10610            var lastDigit = number % 10,
10611                last2Digits = number % 100;
10612            if (number === 0) {
10613                return number + '-ев';
10614            } else if (last2Digits === 0) {
10615                return number + '-ен';
10616            } else if (last2Digits > 10 && last2Digits < 20) {
10617                return number + '-ти';
10618            } else if (lastDigit === 1) {
10619                return number + '-ви';
10620            } else if (lastDigit === 2) {
10621                return number + '-ри';
10622            } else if (lastDigit === 7 || lastDigit === 8) {
10623                return number + '-ми';
10624            } else {
10625                return number + '-ти';
10626            }
10627        },
10628        week : {
10629            dow : 1, // Monday is the first day of the week.
10630            doy : 7  // The week that contains Jan 7th is the first week of the year.
10631        }
10632    });
10633
10634    //! moment.js locale configuration
10635
10636    hooks.defineLocale('ml', {
10637        months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
10638        monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
10639        monthsParseExact : true,
10640        weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
10641        weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
10642        weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
10643        longDateFormat : {
10644            LT : 'A h:mm -നു',
10645            LTS : 'A h:mm:ss -നു',
10646            L : 'DD/MM/YYYY',
10647            LL : 'D MMMM YYYY',
10648            LLL : 'D MMMM YYYY, A h:mm -നു',
10649            LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'
10650        },
10651        calendar : {
10652            sameDay : '[ഇന്ന്] LT',
10653            nextDay : '[നാളെ] LT',
10654            nextWeek : 'dddd, LT',
10655            lastDay : '[ഇന്നലെ] LT',
10656            lastWeek : '[കഴിഞ്ഞ] dddd, LT',
10657            sameElse : 'L'
10658        },
10659        relativeTime : {
10660            future : '%s കഴിഞ്ഞ്',
10661            past : '%s മുൻപ്',
10662            s : 'അൽപ നിമിഷങ്ങൾ',
10663            ss : '%d സെക്കൻഡ്',
10664            m : 'ഒരു മിനിറ്റ്',
10665            mm : '%d മിനിറ്റ്',
10666            h : 'ഒരു മണിക്കൂർ',
10667            hh : '%d മണിക്കൂർ',
10668            d : 'ഒരു ദിവസം',
10669            dd : '%d ദിവസം',
10670            M : 'ഒരു മാസം',
10671            MM : '%d മാസം',
10672            y : 'ഒരു വർഷം',
10673            yy : '%d വർഷം'
10674        },
10675        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
10676        meridiemHour : function (hour, meridiem) {
10677            if (hour === 12) {
10678                hour = 0;
10679            }
10680            if ((meridiem === 'രാത്രി' && hour >= 4) ||
10681                    meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
10682                    meridiem === 'വൈകുന്നേരം') {
10683                return hour + 12;
10684            } else {
10685                return hour;
10686            }
10687        },
10688        meridiem : function (hour, minute, isLower) {
10689            if (hour < 4) {
10690                return 'രാത്രി';
10691            } else if (hour < 12) {
10692                return 'രാവിലെ';
10693            } else if (hour < 17) {
10694                return 'ഉച്ച കഴിഞ്ഞ്';
10695            } else if (hour < 20) {
10696                return 'വൈകുന്നേരം';
10697            } else {
10698                return 'രാത്രി';
10699            }
10700        }
10701    });
10702
10703    //! moment.js locale configuration
10704
10705    function translate$7(number, withoutSuffix, key, isFuture) {
10706        switch (key) {
10707            case 's':
10708                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
10709            case 'ss':
10710                return number + (withoutSuffix ? ' секунд' : ' секундын');
10711            case 'm':
10712            case 'mm':
10713                return number + (withoutSuffix ? ' минут' : ' минутын');
10714            case 'h':
10715            case 'hh':
10716                return number + (withoutSuffix ? ' цаг' : ' цагийн');
10717            case 'd':
10718            case 'dd':
10719                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
10720            case 'M':
10721            case 'MM':
10722                return number + (withoutSuffix ? ' сар' : ' сарын');
10723            case 'y':
10724            case 'yy':
10725                return number + (withoutSuffix ? ' жил' : ' жилийн');
10726            default:
10727                return number;
10728        }
10729    }
10730
10731    hooks.defineLocale('mn', {
10732        months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),
10733        monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),
10734        monthsParseExact : true,
10735        weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
10736        weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
10737        weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
10738        weekdaysParseExact : true,
10739        longDateFormat : {
10740            LT : 'HH:mm',
10741            LTS : 'HH:mm:ss',
10742            L : 'YYYY-MM-DD',
10743            LL : 'YYYY оны MMMMын D',
10744            LLL : 'YYYY оны MMMMын D HH:mm',
10745            LLLL : 'dddd, YYYY оны MMMMын D HH:mm'
10746        },
10747        meridiemParse: /ҮӨ|ҮХ/i,
10748        isPM : function (input) {
10749            return input === 'ҮХ';
10750        },
10751        meridiem : function (hour, minute, isLower) {
10752            if (hour < 12) {
10753                return 'Ò®Ó¨';
10754            } else {
10755                return 'ҮХ';
10756            }
10757        },
10758        calendar : {
10759            sameDay : '[Өнөөдөр] LT',
10760            nextDay : '[Маргааш] LT',
10761            nextWeek : '[Ирэх] dddd LT',
10762            lastDay : '[Өчигдөр] LT',
10763            lastWeek : '[Өнгөрсөн] dddd LT',
10764            sameElse : 'L'
10765        },
10766        relativeTime : {
10767            future : '%s дараа',
10768            past : '%s өмнө',
10769            s : translate$7,
10770            ss : translate$7,
10771            m : translate$7,
10772            mm : translate$7,
10773            h : translate$7,
10774            hh : translate$7,
10775            d : translate$7,
10776            dd : translate$7,
10777            M : translate$7,
10778            MM : translate$7,
10779            y : translate$7,
10780            yy : translate$7
10781        },
10782        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
10783        ordinal : function (number, period) {
10784            switch (period) {
10785                case 'd':
10786                case 'D':
10787                case 'DDD':
10788                    return number + ' өдөр';
10789                default:
10790                    return number;
10791            }
10792        }
10793    });
10794
10795    //! moment.js locale configuration
10796
10797    var symbolMap$b = {
10798        '1': '१',
10799        '2': '२',
10800        '3': '३',
10801        '4': '४',
10802        '5': '५',
10803        '6': '६',
10804        '7': '७',
10805        '8': '८',
10806        '9': '९',
10807        '0': '०'
10808    },
10809    numberMap$a = {
10810        '१': '1',
10811        '२': '2',
10812        '३': '3',
10813        '४': '4',
10814        '५': '5',
10815        '६': '6',
10816        '७': '7',
10817        '८': '8',
10818        '९': '9',
10819        '०': '0'
10820    };
10821
10822    function relativeTimeMr(number, withoutSuffix, string, isFuture)
10823    {
10824        var output = '';
10825        if (withoutSuffix) {
10826            switch (string) {
10827                case 's': output = 'काही सेकंद'; break;
10828                case 'ss': output = '%d सेकंद'; break;
10829                case 'm': output = 'एक मिनिट'; break;
10830                case 'mm': output = '%d मिनिटे'; break;
10831                case 'h': output = 'एक तास'; break;
10832                case 'hh': output = '%d तास'; break;
10833                case 'd': output = 'एक दिवस'; break;
10834                case 'dd': output = '%d दिवस'; break;
10835                case 'M': output = 'एक महिना'; break;
10836                case 'MM': output = '%d महिने'; break;
10837                case 'y': output = 'एक वर्ष'; break;
10838                case 'yy': output = '%d वर्षे'; break;
10839            }
10840        }
10841        else {
10842            switch (string) {
10843                case 's': output = 'काही सेकंदां'; break;
10844                case 'ss': output = '%d सेकंदां'; break;
10845                case 'm': output = 'एका मिनिटा'; break;
10846                case 'mm': output = '%d मिनिटां'; break;
10847                case 'h': output = 'एका तासा'; break;
10848                case 'hh': output = '%d तासां'; break;
10849                case 'd': output = 'एका दिवसा'; break;
10850                case 'dd': output = '%d दिवसां'; break;
10851                case 'M': output = 'एका महिन्या'; break;
10852                case 'MM': output = '%d महिन्यां'; break;
10853                case 'y': output = 'एका वर्षा'; break;
10854                case 'yy': output = '%d वर्षां'; break;
10855            }
10856        }
10857        return output.replace(/%d/i, number);
10858    }
10859
10860    hooks.defineLocale('mr', {
10861        months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
10862        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
10863        monthsParseExact : true,
10864        weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
10865        weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
10866        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
10867        longDateFormat : {
10868            LT : 'A h:mm वाजता',
10869            LTS : 'A h:mm:ss वाजता',
10870            L : 'DD/MM/YYYY',
10871            LL : 'D MMMM YYYY',
10872            LLL : 'D MMMM YYYY, A h:mm वाजता',
10873            LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'
10874        },
10875        calendar : {
10876            sameDay : '[आज] LT',
10877            nextDay : '[उद्या] LT',
10878            nextWeek : 'dddd, LT',
10879            lastDay : '[काल] LT',
10880            lastWeek: '[मागील] dddd, LT',
10881            sameElse : 'L'
10882        },
10883        relativeTime : {
10884            future: '%sमध्ये',
10885            past: '%sपूर्वी',
10886            s: relativeTimeMr,
10887            ss: relativeTimeMr,
10888            m: relativeTimeMr,
10889            mm: relativeTimeMr,
10890            h: relativeTimeMr,
10891            hh: relativeTimeMr,
10892            d: relativeTimeMr,
10893            dd: relativeTimeMr,
10894            M: relativeTimeMr,
10895            MM: relativeTimeMr,
10896            y: relativeTimeMr,
10897            yy: relativeTimeMr
10898        },
10899        preparse: function (string) {
10900            return string.replace(/[१२३४५६७८९०]/g, function (match) {
10901                return numberMap$a[match];
10902            });
10903        },
10904        postformat: function (string) {
10905            return string.replace(/\d/g, function (match) {
10906                return symbolMap$b[match];
10907            });
10908        },
10909        meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
10910        meridiemHour : function (hour, meridiem) {
10911            if (hour === 12) {
10912                hour = 0;
10913            }
10914            if (meridiem === 'रात्री') {
10915                return hour < 4 ? hour : hour + 12;
10916            } else if (meridiem === 'सकाळी') {
10917                return hour;
10918            } else if (meridiem === 'दुपारी') {
10919                return hour >= 10 ? hour : hour + 12;
10920            } else if (meridiem === 'सायंकाळी') {
10921                return hour + 12;
10922            }
10923        },
10924        meridiem: function (hour, minute, isLower) {
10925            if (hour < 4) {
10926                return 'रात्री';
10927            } else if (hour < 10) {
10928                return 'सकाळी';
10929            } else if (hour < 17) {
10930                return 'दुपारी';
10931            } else if (hour < 20) {
10932                return 'सायंकाळी';
10933            } else {
10934                return 'रात्री';
10935            }
10936        },
10937        week : {
10938            dow : 0, // Sunday is the first day of the week.
10939            doy : 6  // The week that contains Jan 6th is the first week of the year.
10940        }
10941    });
10942
10943    //! moment.js locale configuration
10944
10945    hooks.defineLocale('ms-my', {
10946        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
10947        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
10948        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
10949        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
10950        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
10951        longDateFormat : {
10952            LT : 'HH.mm',
10953            LTS : 'HH.mm.ss',
10954            L : 'DD/MM/YYYY',
10955            LL : 'D MMMM YYYY',
10956            LLL : 'D MMMM YYYY [pukul] HH.mm',
10957            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
10958        },
10959        meridiemParse: /pagi|tengahari|petang|malam/,
10960        meridiemHour: function (hour, meridiem) {
10961            if (hour === 12) {
10962                hour = 0;
10963            }
10964            if (meridiem === 'pagi') {
10965                return hour;
10966            } else if (meridiem === 'tengahari') {
10967                return hour >= 11 ? hour : hour + 12;
10968            } else if (meridiem === 'petang' || meridiem === 'malam') {
10969                return hour + 12;
10970            }
10971        },
10972        meridiem : function (hours, minutes, isLower) {
10973            if (hours < 11) {
10974                return 'pagi';
10975            } else if (hours < 15) {
10976                return 'tengahari';
10977            } else if (hours < 19) {
10978                return 'petang';
10979            } else {
10980                return 'malam';
10981            }
10982        },
10983        calendar : {
10984            sameDay : '[Hari ini pukul] LT',
10985            nextDay : '[Esok pukul] LT',
10986            nextWeek : 'dddd [pukul] LT',
10987            lastDay : '[Kelmarin pukul] LT',
10988            lastWeek : 'dddd [lepas pukul] LT',
10989            sameElse : 'L'
10990        },
10991        relativeTime : {
10992            future : 'dalam %s',
10993            past : '%s yang lepas',
10994            s : 'beberapa saat',
10995            ss : '%d saat',
10996            m : 'seminit',
10997            mm : '%d minit',
10998            h : 'sejam',
10999            hh : '%d jam',
11000            d : 'sehari',
11001            dd : '%d hari',
11002            M : 'sebulan',
11003            MM : '%d bulan',
11004            y : 'setahun',
11005            yy : '%d tahun'
11006        },
11007        week : {
11008            dow : 1, // Monday is the first day of the week.
11009            doy : 7  // The week that contains Jan 7th is the first week of the year.
11010        }
11011    });
11012
11013    //! moment.js locale configuration
11014
11015    hooks.defineLocale('ms', {
11016        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
11017        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
11018        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
11019        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
11020        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
11021        longDateFormat : {
11022            LT : 'HH.mm',
11023            LTS : 'HH.mm.ss',
11024            L : 'DD/MM/YYYY',
11025            LL : 'D MMMM YYYY',
11026            LLL : 'D MMMM YYYY [pukul] HH.mm',
11027            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
11028        },
11029        meridiemParse: /pagi|tengahari|petang|malam/,
11030        meridiemHour: function (hour, meridiem) {
11031            if (hour === 12) {
11032                hour = 0;
11033            }
11034            if (meridiem === 'pagi') {
11035                return hour;
11036            } else if (meridiem === 'tengahari') {
11037                return hour >= 11 ? hour : hour + 12;
11038            } else if (meridiem === 'petang' || meridiem === 'malam') {
11039                return hour + 12;
11040            }
11041        },
11042        meridiem : function (hours, minutes, isLower) {
11043            if (hours < 11) {
11044                return 'pagi';
11045            } else if (hours < 15) {
11046                return 'tengahari';
11047            } else if (hours < 19) {
11048                return 'petang';
11049            } else {
11050                return 'malam';
11051            }
11052        },
11053        calendar : {
11054            sameDay : '[Hari ini pukul] LT',
11055            nextDay : '[Esok pukul] LT',
11056            nextWeek : 'dddd [pukul] LT',
11057            lastDay : '[Kelmarin pukul] LT',
11058            lastWeek : 'dddd [lepas pukul] LT',
11059            sameElse : 'L'
11060        },
11061        relativeTime : {
11062            future : 'dalam %s',
11063            past : '%s yang lepas',
11064            s : 'beberapa saat',
11065            ss : '%d saat',
11066            m : 'seminit',
11067            mm : '%d minit',
11068            h : 'sejam',
11069            hh : '%d jam',
11070            d : 'sehari',
11071            dd : '%d hari',
11072            M : 'sebulan',
11073            MM : '%d bulan',
11074            y : 'setahun',
11075            yy : '%d tahun'
11076        },
11077        week : {
11078            dow : 1, // Monday is the first day of the week.
11079            doy : 7  // The week that contains Jan 7th is the first week of the year.
11080        }
11081    });
11082
11083    //! moment.js locale configuration
11084
11085    hooks.defineLocale('mt', {
11086        months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),
11087        monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
11088        weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),
11089        weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
11090        weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
11091        longDateFormat : {
11092            LT : 'HH:mm',
11093            LTS : 'HH:mm:ss',
11094            L : 'DD/MM/YYYY',
11095            LL : 'D MMMM YYYY',
11096            LLL : 'D MMMM YYYY HH:mm',
11097            LLLL : 'dddd, D MMMM YYYY HH:mm'
11098        },
11099        calendar : {
11100            sameDay : '[Illum fil-]LT',
11101            nextDay : '[Għada fil-]LT',
11102            nextWeek : 'dddd [fil-]LT',
11103            lastDay : '[Il-bieraħ fil-]LT',
11104            lastWeek : 'dddd [li għadda] [fil-]LT',
11105            sameElse : 'L'
11106        },
11107        relativeTime : {
11108            future : 'f’ %s',
11109            past : '%s ilu',
11110            s : 'ftit sekondi',
11111            ss : '%d sekondi',
11112            m : 'minuta',
11113            mm : '%d minuti',
11114            h : 'siegħa',
11115            hh : '%d siegħat',
11116            d : 'ġurnata',
11117            dd : '%d ġranet',
11118            M : 'xahar',
11119            MM : '%d xhur',
11120            y : 'sena',
11121            yy : '%d sni'
11122        },
11123        dayOfMonthOrdinalParse : /\d{1,2}º/,
11124        ordinal: '%dº',
11125        week : {
11126            dow : 1, // Monday is the first day of the week.
11127            doy : 4  // The week that contains Jan 4th is the first week of the year.
11128        }
11129    });
11130
11131    //! moment.js locale configuration
11132
11133    var symbolMap$c = {
11134        '1': '၁',
11135        '2': '၂',
11136        '3': '၃',
11137        '4': '၄',
11138        '5': '၅',
11139        '6': '၆',
11140        '7': '၇',
11141        '8': '၈',
11142        '9': '၉',
11143        '0': '၀'
11144    }, numberMap$b = {
11145        '၁': '1',
11146        '၂': '2',
11147        '၃': '3',
11148        '၄': '4',
11149        '၅': '5',
11150        '၆': '6',
11151        '၇': '7',
11152        '၈': '8',
11153        '၉': '9',
11154        '၀': '0'
11155    };
11156
11157    hooks.defineLocale('my', {
11158        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
11159        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
11160        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
11161        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
11162        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
11163
11164        longDateFormat: {
11165            LT: 'HH:mm',
11166            LTS: 'HH:mm:ss',
11167            L: 'DD/MM/YYYY',
11168            LL: 'D MMMM YYYY',
11169            LLL: 'D MMMM YYYY HH:mm',
11170            LLLL: 'dddd D MMMM YYYY HH:mm'
11171        },
11172        calendar: {
11173            sameDay: '[ယနေ.] LT [မှာ]',
11174            nextDay: '[မနက်ဖြန်] LT [မှာ]',
11175            nextWeek: 'dddd LT [မှာ]',
11176            lastDay: '[မနေ.က] LT [မှာ]',
11177            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
11178            sameElse: 'L'
11179        },
11180        relativeTime: {
11181            future: 'လာမည့် %s မှာ',
11182            past: 'လွန်ခဲ့သော %s က',
11183            s: 'စက္ကန်.အနည်းငယ်',
11184            ss : '%d စက္ကန့်',
11185            m: 'တစ်မိနစ်',
11186            mm: '%d မိနစ်',
11187            h: 'တစ်နာရီ',
11188            hh: '%d နာရီ',
11189            d: 'တစ်ရက်',
11190            dd: '%d ရက်',
11191            M: 'တစ်လ',
11192            MM: '%d လ',
11193            y: 'တစ်နှစ်',
11194            yy: '%d နှစ်'
11195        },
11196        preparse: function (string) {
11197            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
11198                return numberMap$b[match];
11199            });
11200        },
11201        postformat: function (string) {
11202            return string.replace(/\d/g, function (match) {
11203                return symbolMap$c[match];
11204            });
11205        },
11206        week: {
11207            dow: 1, // Monday is the first day of the week.
11208            doy: 4 // The week that contains Jan 4th is the first week of the year.
11209        }
11210    });
11211
11212    //! moment.js locale configuration
11213
11214    hooks.defineLocale('nb', {
11215        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
11216        monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
11217        monthsParseExact : true,
11218        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
11219        weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),
11220        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
11221        weekdaysParseExact : true,
11222        longDateFormat : {
11223            LT : 'HH:mm',
11224            LTS : 'HH:mm:ss',
11225            L : 'DD.MM.YYYY',
11226            LL : 'D. MMMM YYYY',
11227            LLL : 'D. MMMM YYYY [kl.] HH:mm',
11228            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
11229        },
11230        calendar : {
11231            sameDay: '[i dag kl.] LT',
11232            nextDay: '[i morgen kl.] LT',
11233            nextWeek: 'dddd [kl.] LT',
11234            lastDay: '[i går kl.] LT',
11235            lastWeek: '[forrige] dddd [kl.] LT',
11236            sameElse: 'L'
11237        },
11238        relativeTime : {
11239            future : 'om %s',
11240            past : '%s siden',
11241            s : 'noen sekunder',
11242            ss : '%d sekunder',
11243            m : 'ett minutt',
11244            mm : '%d minutter',
11245            h : 'en time',
11246            hh : '%d timer',
11247            d : 'en dag',
11248            dd : '%d dager',
11249            M : 'en måned',
11250            MM : '%d måneder',
11251            y : 'ett år',
11252            yy : '%d år'
11253        },
11254        dayOfMonthOrdinalParse: /\d{1,2}\./,
11255        ordinal : '%d.',
11256        week : {
11257            dow : 1, // Monday is the first day of the week.
11258            doy : 4  // The week that contains Jan 4th is the first week of the year.
11259        }
11260    });
11261
11262    //! moment.js locale configuration
11263
11264    var symbolMap$d = {
11265        '1': '१',
11266        '2': '२',
11267        '3': '३',
11268        '4': '४',
11269        '5': '५',
11270        '6': '६',
11271        '7': '७',
11272        '8': '८',
11273        '9': '९',
11274        '0': '०'
11275    },
11276    numberMap$c = {
11277        '१': '1',
11278        '२': '2',
11279        '३': '3',
11280        '४': '4',
11281        '५': '5',
11282        '६': '6',
11283        '७': '7',
11284        '८': '8',
11285        '९': '9',
11286        '०': '0'
11287    };
11288
11289    hooks.defineLocale('ne', {
11290        months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
11291        monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
11292        monthsParseExact : true,
11293        weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
11294        weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
11295        weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
11296        weekdaysParseExact : true,
11297        longDateFormat : {
11298            LT : 'Aको h:mm बजे',
11299            LTS : 'Aको h:mm:ss बजे',
11300            L : 'DD/MM/YYYY',
11301            LL : 'D MMMM YYYY',
11302            LLL : 'D MMMM YYYY, Aको h:mm बजे',
11303            LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'
11304        },
11305        preparse: function (string) {
11306            return string.replace(/[१२३४५६७८९०]/g, function (match) {
11307                return numberMap$c[match];
11308            });
11309        },
11310        postformat: function (string) {
11311            return string.replace(/\d/g, function (match) {
11312                return symbolMap$d[match];
11313            });
11314        },
vendor: 97,709 bytes, lines 11315-13796
11315        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
11316        meridiemHour : function (hour, meridiem) {
11317            if (hour === 12) {
11318                hour = 0;
11319            }
11320            if (meridiem === 'राति') {
11321                return hour < 4 ? hour : hour + 12;
11322            } else if (meridiem === 'बिहान') {
11323                return hour;
11324            } else if (meridiem === 'दिउँसो') {
11325                return hour >= 10 ? hour : hour + 12;
11326            } else if (meridiem === 'साँझ') {
11327                return hour + 12;
11328            }
11329        },
11330        meridiem : function (hour, minute, isLower) {
11331            if (hour < 3) {
11332                return 'राति';
11333            } else if (hour < 12) {
11334                return 'बिहान';
11335            } else if (hour < 16) {
11336                return 'दिउँसो';
11337            } else if (hour < 20) {
11338                return 'साँझ';
11339            } else {
11340                return 'राति';
11341            }
11342        },
11343        calendar : {
11344            sameDay : '[आज] LT',
11345            nextDay : '[भोलि] LT',
11346            nextWeek : '[आउँदो] dddd[,] LT',
11347            lastDay : '[हिजो] LT',
11348            lastWeek : '[गएको] dddd[,] LT',
11349            sameElse : 'L'
11350        },
11351        relativeTime : {
11352            future : '%sमा',
11353            past : '%s अगाडि',
11354            s : 'केही क्षण',
11355            ss : '%d सेकेण्ड',
11356            m : 'एक मिनेट',
11357            mm : '%d मिनेट',
11358            h : 'एक घण्टा',
11359            hh : '%d घण्टा',
11360            d : 'एक दिन',
11361            dd : '%d दिन',
11362            M : 'एक महिना',
11363            MM : '%d महिना',
11364            y : 'एक बर्ष',
11365            yy : '%d बर्ष'
11366        },
11367        week : {
11368            dow : 0, // Sunday is the first day of the week.
11369            doy : 6  // The week that contains Jan 6th is the first week of the year.
11370        }
11371    });
11372
11373    //! moment.js locale configuration
11374
11375    var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
11376        monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
11377
11378    var monthsParse$4 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];
11379    var monthsRegex$5 = /^(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;
11380
11381    hooks.defineLocale('nl-be', {
11382        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
11383        monthsShort : function (m, format) {
11384            if (!m) {
11385                return monthsShortWithDots$1;
11386            } else if (/-MMM-/.test(format)) {
11387                return monthsShortWithoutDots$1[m.month()];
11388            } else {
11389                return monthsShortWithDots$1[m.month()];
11390            }
11391        },
11392
11393        monthsRegex: monthsRegex$5,
11394        monthsShortRegex: monthsRegex$5,
11395        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
11396        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
11397
11398        monthsParse : monthsParse$4,
11399        longMonthsParse : monthsParse$4,
11400        shortMonthsParse : monthsParse$4,
11401
11402        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
11403        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
11404        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),
11405        weekdaysParseExact : true,
11406        longDateFormat : {
11407            LT : 'HH:mm',
11408            LTS : 'HH:mm:ss',
11409            L : 'DD/MM/YYYY',
11410            LL : 'D MMMM YYYY',
11411            LLL : 'D MMMM YYYY HH:mm',
11412            LLLL : 'dddd D MMMM YYYY HH:mm'
11413        },
11414        calendar : {
11415            sameDay: '[vandaag om] LT',
11416            nextDay: '[morgen om] LT',
11417            nextWeek: 'dddd [om] LT',
11418            lastDay: '[gisteren om] LT',
11419            lastWeek: '[afgelopen] dddd [om] LT',
11420            sameElse: 'L'
11421        },
11422        relativeTime : {
11423            future : 'over %s',
11424            past : '%s geleden',
11425            s : 'een paar seconden',
11426            ss : '%d seconden',
11427            m : 'één minuut',
11428            mm : '%d minuten',
11429            h : 'één uur',
11430            hh : '%d uur',
11431            d : 'één dag',
11432            dd : '%d dagen',
11433            M : 'één maand',
11434            MM : '%d maanden',
11435            y : 'één jaar',
11436            yy : '%d jaar'
11437        },
11438        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
11439        ordinal : function (number) {
11440            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
11441        },
11442        week : {
11443            dow : 1, // Monday is the first day of the week.
11444            doy : 4  // The week that contains Jan 4th is the first week of the year.
11445        }
11446    });
11447
11448    //! moment.js locale configuration
11449
11450    var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
11451        monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
11452
11453    var monthsParse$5 = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];
11454    var monthsRegex$6 = /^(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;
11455
11456    hooks.defineLocale('nl', {
11457        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
11458        monthsShort : function (m, format) {
11459            if (!m) {
11460                return monthsShortWithDots$2;
11461            } else if (/-MMM-/.test(format)) {
11462                return monthsShortWithoutDots$2[m.month()];
11463            } else {
11464                return monthsShortWithDots$2[m.month()];
11465            }
11466        },
11467
11468        monthsRegex: monthsRegex$6,
11469        monthsShortRegex: monthsRegex$6,
11470        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
11471        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
11472
11473        monthsParse : monthsParse$5,
11474        longMonthsParse : monthsParse$5,
11475        shortMonthsParse : monthsParse$5,
11476
11477        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
11478        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
11479        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),
11480        weekdaysParseExact : true,
11481        longDateFormat : {
11482            LT : 'HH:mm',
11483            LTS : 'HH:mm:ss',
11484            L : 'DD-MM-YYYY',
11485            LL : 'D MMMM YYYY',
11486            LLL : 'D MMMM YYYY HH:mm',
11487            LLLL : 'dddd D MMMM YYYY HH:mm'
11488        },
11489        calendar : {
11490            sameDay: '[vandaag om] LT',
11491            nextDay: '[morgen om] LT',
11492            nextWeek: 'dddd [om] LT',
11493            lastDay: '[gisteren om] LT',
11494            lastWeek: '[afgelopen] dddd [om] LT',
11495            sameElse: 'L'
11496        },
11497        relativeTime : {
11498            future : 'over %s',
11499            past : '%s geleden',
11500            s : 'een paar seconden',
11501            ss : '%d seconden',
11502            m : 'één minuut',
11503            mm : '%d minuten',
11504            h : 'één uur',
11505            hh : '%d uur',
11506            d : 'één dag',
11507            dd : '%d dagen',
11508            M : 'één maand',
11509            MM : '%d maanden',
11510            y : 'één jaar',
11511            yy : '%d jaar'
11512        },
11513        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
11514        ordinal : function (number) {
11515            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
11516        },
11517        week : {
11518            dow : 1, // Monday is the first day of the week.
11519            doy : 4  // The week that contains Jan 4th is the first week of the year.
11520        }
11521    });
11522
11523    //! moment.js locale configuration
11524
11525// FIXED as we use NO For Norwegian not NN Nynors
11526    hooks.defineLocale('no', {
11527        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
11528        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
11529        weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
11530        weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
11531        weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),
11532        longDateFormat : {
11533            LT : 'HH:mm',
11534            LTS : 'HH:mm:ss',
11535            L : 'DD.MM.YYYY',
11536            LL : 'D. MMMM YYYY',
11537            LLL : 'D. MMMM YYYY [kl.] H:mm',
11538            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
11539        },
11540        calendar : {
11541            sameDay: '[I dag klokka] LT',
11542            nextDay: '[I morgon klokka] LT',
11543            nextWeek: 'dddd [klokka] LT',
11544            lastDay: '[I går klokka] LT',
11545            lastWeek: '[Føregåande] dddd [klokka] LT',
11546            sameElse: 'L'
11547        },
11548        relativeTime : {
11549            future : 'om %s',
11550            past : '%s sidan',
11551            s : 'nokre sekund',
11552            ss : '%d sekund',
11553            m : 'eit minutt',
11554            mm : '%d minutt',
11555            h : 'ein time',
11556            hh : '%d timar',
11557            d : 'ein dag',
11558            dd : '%d dagar',
11559            M : 'ein månad',
11560            MM : '%d månader',
11561            y : 'eit år',
11562            yy : '%d år'
11563        },
11564        dayOfMonthOrdinalParse: /\d{1,2}\./,
11565        ordinal : '%d.',
11566        week : {
11567            dow : 1, // Monday is the first day of the week.
11568            doy : 4  // The week that contains Jan 4th is the first week of the year.
11569        }
11570    });
11571
11572    //! moment.js locale configuration
11573
11574    var symbolMap$e = {
11575        '1': 'à©§',
11576        '2': '੨',
11577        '3': 'à©©',
11578        '4': '੪',
11579        '5': 'à©«',
11580        '6': '੬',
11581        '7': 'à©­',
11582        '8': 'à©®',
11583        '9': '੯',
11584        '0': '੦'
11585    },
11586    numberMap$d = {
11587        'à©§': '1',
11588        '੨': '2',
11589        'à©©': '3',
11590        '੪': '4',
11591        'à©«': '5',
11592        '੬': '6',
11593        'à©­': '7',
11594        'à©®': '8',
11595        '੯': '9',
11596        '੦': '0'
11597    };
11598
11599    hooks.defineLocale('pa-in', {
11600        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
11601        months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
11602        monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
11603        weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),
11604        weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
11605        weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
11606        longDateFormat : {
11607            LT : 'A h:mm ਵਜੇ',
11608            LTS : 'A h:mm:ss ਵਜੇ',
11609            L : 'DD/MM/YYYY',
11610            LL : 'D MMMM YYYY',
11611            LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',
11612            LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'
11613        },
11614        calendar : {
11615            sameDay : '[ਅਜ] LT',
11616            nextDay : '[ਕਲ] LT',
11617            nextWeek : '[ਅਗਲਾ] dddd, LT',
11618            lastDay : '[ਕਲ] LT',
11619            lastWeek : '[ਪਿਛਲੇ] dddd, LT',
11620            sameElse : 'L'
11621        },
11622        relativeTime : {
11623            future : '%s ਵਿੱਚ',
11624            past : '%s ਪਿਛਲੇ',
11625            s : 'ਕੁਝ ਸਕਿੰਟ',
11626            ss : '%d ਸਕਿੰਟ',
11627            m : 'ਇਕ ਮਿੰਟ',
11628            mm : '%d ਮਿੰਟ',
11629            h : 'ਇੱਕ ਘੰਟਾ',
11630            hh : '%d ਘੰਟੇ',
11631            d : 'ਇੱਕ ਦਿਨ',
11632            dd : '%d ਦਿਨ',
11633            M : 'ਇੱਕ ਮਹੀਨਾ',
11634            MM : '%d ਮਹੀਨੇ',
11635            y : 'ਇੱਕ ਸਾਲ',
11636            yy : '%d ਸਾਲ'
11637        },
11638        preparse: function (string) {
11639            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
11640                return numberMap$d[match];
11641            });
11642        },
11643        postformat: function (string) {
11644            return string.replace(/\d/g, function (match) {
11645                return symbolMap$e[match];
11646            });
11647        },
11648        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
11649        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
11650        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
11651        meridiemHour : function (hour, meridiem) {
11652            if (hour === 12) {
11653                hour = 0;
11654            }
11655            if (meridiem === 'ਰਾਤ') {
11656                return hour < 4 ? hour : hour + 12;
11657            } else if (meridiem === 'ਸਵੇਰ') {
11658                return hour;
11659            } else if (meridiem === 'ਦੁਪਹਿਰ') {
11660                return hour >= 10 ? hour : hour + 12;
11661            } else if (meridiem === 'ਸ਼ਾਮ') {
11662                return hour + 12;
11663            }
11664        },
11665        meridiem : function (hour, minute, isLower) {
11666            if (hour < 4) {
11667                return 'ਰਾਤ';
11668            } else if (hour < 10) {
11669                return 'ਸਵੇਰ';
11670            } else if (hour < 17) {
11671                return 'ਦੁਪਹਿਰ';
11672            } else if (hour < 20) {
11673                return 'ਸ਼ਾਮ';
11674            } else {
11675                return 'ਰਾਤ';
11676            }
11677        },
11678        week : {
11679            dow : 0, // Sunday is the first day of the week.
11680            doy : 6  // The week that contains Jan 6th is the first week of the year.
11681        }
11682    });
11683
11684    //! moment.js locale configuration
11685
11686    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),
11687        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
11688    function plural$3(n) {
11689        return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
11690    }
11691    function translate$8(number, withoutSuffix, key) {
11692        var result = number + ' ';
11693        switch (key) {
11694            case 'ss':
11695                return result + (plural$3(number) ? 'sekundy' : 'sekund');
11696            case 'm':
11697                return withoutSuffix ? 'minuta' : 'minutę';
11698            case 'mm':
11699                return result + (plural$3(number) ? 'minuty' : 'minut');
11700            case 'h':
11701                return withoutSuffix  ? 'godzina'  : 'godzinę';
11702            case 'hh':
11703                return result + (plural$3(number) ? 'godziny' : 'godzin');
11704            case 'MM':
11705                return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
11706            case 'yy':
11707                return result + (plural$3(number) ? 'lata' : 'lat');
11708        }
11709    }
11710
11711    hooks.defineLocale('pl', {
11712        months : function (momentToFormat, format) {
11713            if (!momentToFormat) {
11714                return monthsNominative;
11715            } else if (format === '') {
11716                // Hack: if format empty we know this is used to generate
11717                // RegExp by moment. Give then back both valid forms of months
11718                // in RegExp ready format.
11719                return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
11720            } else if (/D MMMM/.test(format)) {
11721                return monthsSubjective[momentToFormat.month()];
11722            } else {
11723                return monthsNominative[momentToFormat.month()];
11724            }
11725        },
11726        monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
11727        weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
11728        weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
11729        weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
11730        longDateFormat : {
11731            LT : 'HH:mm',
11732            LTS : 'HH:mm:ss',
11733            L : 'DD.MM.YYYY',
11734            LL : 'D MMMM YYYY',
11735            LLL : 'D MMMM YYYY HH:mm',
11736            LLLL : 'dddd, D MMMM YYYY HH:mm'
11737        },
11738        calendar : {
11739            sameDay: '[Dziś o] LT',
11740            nextDay: '[Jutro o] LT',
11741            nextWeek: function () {
11742                switch (this.day()) {
11743                    case 0:
11744                        return '[W niedzielę o] LT';
11745
11746                    case 2:
11747                        return '[We wtorek o] LT';
11748
11749                    case 3:
11750                        return '[W środę o] LT';
11751
11752                    case 6:
11753                        return '[W sobotę o] LT';
11754
11755                    default:
11756                        return '[W] dddd [o] LT';
11757                }
11758            },
11759            lastDay: '[Wczoraj o] LT',
11760            lastWeek: function () {
11761                switch (this.day()) {
11762                    case 0:
11763                        return '[W zeszłą niedzielę o] LT';
11764                    case 3:
11765                        return '[W zeszłą środę o] LT';
11766                    case 6:
11767                        return '[W zeszłą sobotę o] LT';
11768                    default:
11769                        return '[W zeszły] dddd [o] LT';
11770                }
11771            },
11772            sameElse: 'L'
11773        },
11774        relativeTime : {
11775            future : 'za %s',
11776            past : '%s temu',
11777            s : 'kilka sekund',
11778            ss : translate$8,
11779            m : translate$8,
11780            mm : translate$8,
11781            h : translate$8,
11782            hh : translate$8,
11783            d : '1 dzień',
11784            dd : '%d dni',
11785            M : 'miesiąc',
11786            MM : translate$8,
11787            y : 'rok',
11788            yy : translate$8
11789        },
11790        dayOfMonthOrdinalParse: /\d{1,2}\./,
11791        ordinal : '%d.',
11792        week : {
11793            dow : 1, // Monday is the first day of the week.
11794            doy : 4  // The week that contains Jan 4th is the first week of the year.
11795        }
11796    });
11797
11798    //! moment.js locale configuration
11799
11800    hooks.defineLocale('pt-br', {
11801        months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
11802        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
11803        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
11804        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
11805        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
11806        weekdaysParseExact : true,
11807        longDateFormat : {
11808            LT : 'HH:mm',
11809            LTS : 'HH:mm:ss',
11810            L : 'DD/MM/YYYY',
11811            LL : 'D [de] MMMM [de] YYYY',
11812            LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
11813            LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
11814        },
11815        calendar : {
11816            sameDay: '[Hoje às] LT',
11817            nextDay: '[Amanhã às] LT',
11818            nextWeek: 'dddd [às] LT',
11819            lastDay: '[Ontem às] LT',
11820            lastWeek: function () {
11821                return (this.day() === 0 || this.day() === 6) ?
11822                    '[Último] dddd [às] LT' : // Saturday + Sunday
11823                    '[Última] dddd [às] LT'; // Monday - Friday
11824            },
11825            sameElse: 'L'
11826        },
11827        relativeTime : {
11828            future : 'em %s',
11829            past : 'há %s',
11830            s : 'poucos segundos',
11831            ss : '%d segundos',
11832            m : 'um minuto',
11833            mm : '%d minutos',
11834            h : 'uma hora',
11835            hh : '%d horas',
11836            d : 'um dia',
11837            dd : '%d dias',
11838            M : 'um mês',
11839            MM : '%d meses',
11840            y : 'um ano',
11841            yy : '%d anos'
11842        },
11843        dayOfMonthOrdinalParse: /\d{1,2}º/,
11844        ordinal : '%dº'
11845    });
11846
11847    //! moment.js locale configuration
11848
11849    hooks.defineLocale('pt', {
11850        months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
11851        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
11852        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
11853        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
11854        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
11855        weekdaysParseExact : true,
11856        longDateFormat : {
11857            LT : 'HH:mm',
11858            LTS : 'HH:mm:ss',
11859            L : 'DD/MM/YYYY',
11860            LL : 'D [de] MMMM [de] YYYY',
11861            LLL : 'D [de] MMMM [de] YYYY HH:mm',
11862            LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'
11863        },
11864        calendar : {
11865            sameDay: '[Hoje às] LT',
11866            nextDay: '[Amanhã às] LT',
11867            nextWeek: 'dddd [às] LT',
11868            lastDay: '[Ontem às] LT',
11869            lastWeek: function () {
11870                return (this.day() === 0 || this.day() === 6) ?
11871                    '[Último] dddd [às] LT' : // Saturday + Sunday
11872                    '[Última] dddd [às] LT'; // Monday - Friday
11873            },
11874            sameElse: 'L'
11875        },
11876        relativeTime : {
11877            future : 'em %s',
11878            past : 'há %s',
11879            s : 'segundos',
11880            ss : '%d segundos',
11881            m : 'um minuto',
11882            mm : '%d minutos',
11883            h : 'uma hora',
11884            hh : '%d horas',
11885            d : 'um dia',
11886            dd : '%d dias',
11887            M : 'um mês',
11888            MM : '%d meses',
11889            y : 'um ano',
11890            yy : '%d anos'
11891        },
11892        dayOfMonthOrdinalParse: /\d{1,2}º/,
11893        ordinal : '%dº',
11894        week : {
11895            dow : 1, // Monday is the first day of the week.
11896            doy : 4  // The week that contains Jan 4th is the first week of the year.
11897        }
11898    });
11899
11900    //! moment.js locale configuration
11901
11902    function relativeTimeWithPlural$2(number, withoutSuffix, key) {
11903        var format = {
11904                'ss': 'secunde',
11905                'mm': 'minute',
11906                'hh': 'ore',
11907                'dd': 'zile',
11908                'MM': 'luni',
11909                'yy': 'ani'
11910            },
11911            separator = ' ';
11912        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
11913            separator = ' de ';
11914        }
11915        return number + separator + format[key];
11916    }
11917
11918    hooks.defineLocale('ro', {
11919        months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
11920        monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
11921        monthsParseExact: true,
11922        weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
11923        weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
11924        weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
11925        longDateFormat : {
11926            LT : 'H:mm',
11927            LTS : 'H:mm:ss',
11928            L : 'DD.MM.YYYY',
11929            LL : 'D MMMM YYYY',
11930            LLL : 'D MMMM YYYY H:mm',
11931            LLLL : 'dddd, D MMMM YYYY H:mm'
11932        },
11933        calendar : {
11934            sameDay: '[azi la] LT',
11935            nextDay: '[mâine la] LT',
11936            nextWeek: 'dddd [la] LT',
11937            lastDay: '[ieri la] LT',
11938            lastWeek: '[fosta] dddd [la] LT',
11939            sameElse: 'L'
11940        },
11941        relativeTime : {
11942            future : 'peste %s',
11943            past : '%s în urmă',
11944            s : 'câteva secunde',
11945            ss : relativeTimeWithPlural$2,
11946            m : 'un minut',
11947            mm : relativeTimeWithPlural$2,
11948            h : 'o oră',
11949            hh : relativeTimeWithPlural$2,
11950            d : 'o zi',
11951            dd : relativeTimeWithPlural$2,
11952            M : 'o lună',
11953            MM : relativeTimeWithPlural$2,
11954            y : 'un an',
11955            yy : relativeTimeWithPlural$2
11956        },
11957        week : {
11958            dow : 1, // Monday is the first day of the week.
11959            doy : 7  // The week that contains Jan 7th is the first week of the year.
11960        }
11961    });
11962
11963    //! moment.js locale configuration
11964
11965    function plural$4(word, num) {
11966        var forms = word.split('_');
11967        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
11968    }
11969    function relativeTimeWithPlural$3(number, withoutSuffix, key) {
11970        var format = {
11971            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
11972            'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
11973            'hh': 'час_часа_часов',
11974            'dd': 'день_дня_дней',
11975            'MM': 'месяц_месяца_месяцев',
11976            'yy': 'год_года_лет'
11977        };
11978        if (key === 'm') {
11979            return withoutSuffix ? 'минута' : 'минуту';
11980        }
11981        else {
11982            return number + ' ' + plural$4(format[key], +number);
11983        }
11984    }
11985    var monthsParse$6 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];
11986
11987    // http://new.gramota.ru/spravka/rules/139-prop : § 103
11988    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
11989    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
11990    hooks.defineLocale('ru', {
11991        months : {
11992            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),
11993            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')
11994        },
11995        monthsShort : {
11996            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ?
11997            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),
11998            standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')
11999        },
12000        weekdays : {
12001            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
12002            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),
12003            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/
12004        },
12005        weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
12006        weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
12007        monthsParse : monthsParse$6,
12008        longMonthsParse : monthsParse$6,
12009        shortMonthsParse : monthsParse$6,
12010
12011        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
12012        monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
12013
12014        // копия предыдущего
12015        monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
12016
12017        // полные названия с падежами
12018        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
12019
12020        // Выражение, которое соотвествует только сокращённым формам
12021        monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
12022        longDateFormat : {
12023            LT : 'H:mm',
12024            LTS : 'H:mm:ss',
12025            L : 'DD.MM.YYYY',
12026            LL : 'D MMMM YYYY г.',
12027            LLL : 'D MMMM YYYY г., H:mm',
12028            LLLL : 'dddd, D MMMM YYYY г., H:mm'
12029        },
12030        calendar : {
12031            sameDay: '[Сегодня, в] LT',
12032            nextDay: '[Завтра, в] LT',
12033            lastDay: '[Вчера, в] LT',
12034            nextWeek: function (now) {
12035                if (now.week() !== this.week()) {
12036                    switch (this.day()) {
12037                        case 0:
12038                            return '[В следующее] dddd, [в] LT';
12039                        case 1:
12040                        case 2:
12041                        case 4:
12042                            return '[В следующий] dddd, [в] LT';
12043                        case 3:
12044                        case 5:
12045                        case 6:
12046                            return '[В следующую] dddd, [в] LT';
12047                    }
12048                } else {
12049                    if (this.day() === 2) {
12050                        return '[Во] dddd, [в] LT';
12051                    } else {
12052                        return '[В] dddd, [в] LT';
12053                    }
12054                }
12055            },
12056            lastWeek: function (now) {
12057                if (now.week() !== this.week()) {
12058                    switch (this.day()) {
12059                        case 0:
12060                            return '[В прошлое] dddd, [в] LT';
12061                        case 1:
12062                        case 2:
12063                        case 4:
12064                            return '[В прошлый] dddd, [в] LT';
12065                        case 3:
12066                        case 5:
12067                        case 6:
12068                            return '[В прошлую] dddd, [в] LT';
12069                    }
12070                } else {
12071                    if (this.day() === 2) {
12072                        return '[Во] dddd, [в] LT';
12073                    } else {
12074                        return '[В] dddd, [в] LT';
12075                    }
12076                }
12077            },
12078            sameElse: 'L'
12079        },
12080        relativeTime : {
12081            future : 'через %s',
12082            past : '%s назад',
12083            s : 'несколько секунд',
12084            ss : relativeTimeWithPlural$3,
12085            m : relativeTimeWithPlural$3,
12086            mm : relativeTimeWithPlural$3,
12087            h : 'час',
12088            hh : relativeTimeWithPlural$3,
12089            d : 'день',
12090            dd : relativeTimeWithPlural$3,
12091            M : 'месяц',
12092            MM : relativeTimeWithPlural$3,
12093            y : 'год',
12094            yy : relativeTimeWithPlural$3
12095        },
12096        meridiemParse: /ночи|утра|дня|вечера/i,
12097        isPM : function (input) {
12098            return /^(дня|вечера)$/.test(input);
12099        },
12100        meridiem : function (hour, minute, isLower) {
12101            if (hour < 4) {
12102                return 'ночи';
12103            } else if (hour < 12) {
12104                return 'утра';
12105            } else if (hour < 17) {
12106                return 'дня';
12107            } else {
12108                return 'вечера';
12109            }
12110        },
12111        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
12112        ordinal: function (number, period) {
12113            switch (period) {
12114                case 'M':
12115                case 'd':
12116                case 'DDD':
12117                    return number + '-й';
12118                case 'D':
12119                    return number + '-го';
12120                case 'w':
12121                case 'W':
12122                    return number + '-я';
12123                default:
12124                    return number;
12125            }
12126        },
12127        week : {
12128            dow : 1, // Monday is the first day of the week.
12129            doy : 4  // The week that contains Jan 4th is the first week of the year.
12130        }
12131    });
12132
12133    //! moment.js locale configuration
12134
12135    var months$8 = [
12136        'جنوري',
12137        'فيبروري',
12138        'مارچ',
12139        'اپريل',
12140        'مئي',
12141        'جون',
12142        'جولاءِ',
12143        'آگسٽ',
12144        'سيپٽمبر',
12145        'آڪٽوبر',
12146        'نومبر',
12147        'ڊسمبر'
12148    ];
12149    var days$1 = [
12150        'آچر',
12151        'سومر',
12152        'اڱارو',
12153        'اربع',
12154        'خميس',
12155        'جمع',
12156        'ڇنڇر'
12157    ];
12158
12159    hooks.defineLocale('sd', {
12160        months : months$8,
12161        monthsShort : months$8,
12162        weekdays : days$1,
12163        weekdaysShort : days$1,
12164        weekdaysMin : days$1,
12165        longDateFormat : {
12166            LT : 'HH:mm',
12167            LTS : 'HH:mm:ss',
12168            L : 'DD/MM/YYYY',
12169            LL : 'D MMMM YYYY',
12170            LLL : 'D MMMM YYYY HH:mm',
12171            LLLL : 'dddd، D MMMM YYYY HH:mm'
12172        },
12173        meridiemParse: /صبح|شام/,
12174        isPM : function (input) {
12175            return 'شام' === input;
12176        },
12177        meridiem : function (hour, minute, isLower) {
12178            if (hour < 12) {
12179                return 'صبح';
12180            }
12181            return 'شام';
12182        },
12183        calendar : {
12184            sameDay : '[اڄ] LT',
12185            nextDay : '[سڀاڻي] LT',
12186            nextWeek : 'dddd [اڳين هفتي تي] LT',
12187            lastDay : '[ڪالهه] LT',
12188            lastWeek : '[گزريل هفتي] dddd [تي] LT',
12189            sameElse : 'L'
12190        },
12191        relativeTime : {
12192            future : '%s پوء',
12193            past : '%s اڳ',
12194            s : 'چند سيڪنڊ',
12195            ss : '%d سيڪنڊ',
12196            m : 'هڪ منٽ',
12197            mm : '%d منٽ',
12198            h : 'هڪ ڪلاڪ',
12199            hh : '%d ڪلاڪ',
12200            d : 'هڪ ڏينهن',
12201            dd : '%d ڏينهن',
12202            M : 'هڪ مهينو',
12203            MM : '%d مهينا',
12204            y : 'هڪ سال',
12205            yy : '%d سال'
12206        },
12207        preparse: function (string) {
12208            return string.replace(/،/g, ',');
12209        },
12210        postformat: function (string) {
12211            return string.replace(/,/g, '،');
12212        },
12213        week : {
12214            dow : 1, // Monday is the first day of the week.
12215            doy : 4  // The week that contains Jan 4th is the first week of the year.
12216        }
12217    });
12218
12219    //! moment.js locale configuration
12220
12221    hooks.defineLocale('se', {
12222        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('_'),
12223        monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
12224        weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
12225        weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
12226        weekdaysMin : 's_v_m_g_d_b_L'.split('_'),
12227        longDateFormat : {
12228            LT : 'HH:mm',
12229            LTS : 'HH:mm:ss',
12230            L : 'DD.MM.YYYY',
12231            LL : 'MMMM D. [b.] YYYY',
12232            LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',
12233            LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
12234        },
12235        calendar : {
12236            sameDay: '[otne ti] LT',
12237            nextDay: '[ihttin ti] LT',
12238            nextWeek: 'dddd [ti] LT',
12239            lastDay: '[ikte ti] LT',
12240            lastWeek: '[ovddit] dddd [ti] LT',
12241            sameElse: 'L'
12242        },
12243        relativeTime : {
12244            future : '%s geažes',
12245            past : 'maŋit %s',
12246            s : 'moadde sekunddat',
12247            ss: '%d sekunddat',
12248            m : 'okta minuhta',
12249            mm : '%d minuhtat',
12250            h : 'okta diimmu',
12251            hh : '%d diimmut',
12252            d : 'okta beaivi',
12253            dd : '%d beaivvit',
12254            M : 'okta mánnu',
12255            MM : '%d mánut',
12256            y : 'okta jahki',
12257            yy : '%d jagit'
12258        },
12259        dayOfMonthOrdinalParse: /\d{1,2}\./,
12260        ordinal : '%d.',
12261        week : {
12262            dow : 1, // Monday is the first day of the week.
12263            doy : 4  // The week that contains Jan 4th is the first week of the year.
12264        }
12265    });
12266
12267    //! moment.js locale configuration
12268
12269    /*jshint -W100*/
12270    hooks.defineLocale('si', {
12271        months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
12272        monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
12273        weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
12274        weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
12275        weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
12276        weekdaysParseExact : true,
12277        longDateFormat : {
12278            LT : 'a h:mm',
12279            LTS : 'a h:mm:ss',
12280            L : 'YYYY/MM/DD',
12281            LL : 'YYYY MMMM D',
12282            LLL : 'YYYY MMMM D, a h:mm',
12283            LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
12284        },
12285        calendar : {
12286            sameDay : '[අද] LT[ට]',
12287            nextDay : '[හෙට] LT[ට]',
12288            nextWeek : 'dddd LT[à¶§]',
12289            lastDay : '[ඊයේ] LT[ට]',
12290            lastWeek : '[පසුගිය] dddd LT[ට]',
12291            sameElse : 'L'
12292        },
12293        relativeTime : {
12294            future : '%sකින්',
12295            past : '%sකට පෙර',
12296            s : 'තත්පර කිහිපය',
12297            ss : 'තත්පර %d',
12298            m : 'මිනිත්තුව',
12299            mm : 'මිනිත්තු %d',
12300            h : 'පැය',
12301            hh : 'පැය %d',
12302            d : 'දිනය',
12303            dd : 'දින %d',
12304            M : 'මාසය',
12305            MM : 'මාස %d',
12306            y : 'වසර',
12307            yy : 'වසර %d'
12308        },
12309        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
12310        ordinal : function (number) {
12311            return number + ' වැනි';
12312        },
12313        meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
12314        isPM : function (input) {
12315            return input === 'ප.ව.' || input === 'පස් වරු';
12316        },
12317        meridiem : function (hours, minutes, isLower) {
12318            if (hours > 11) {
12319                return isLower ? 'ප.ව.' : 'පස් වරු';
12320            } else {
12321                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
12322            }
12323        }
12324    });
12325
12326    //! moment.js locale configuration
12327
12328    var months$9 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),
12329        monthsShort$6 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
12330    function plural$5(n) {
12331        return (n > 1) && (n < 5);
12332    }
12333    function translate$9(number, withoutSuffix, key, isFuture) {
12334        var result = number + ' ';
12335        switch (key) {
12336            case 's':  // a few seconds / in a few seconds / a few seconds ago
12337                return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
12338            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
12339                if (withoutSuffix || isFuture) {
12340                    return result + (plural$5(number) ? 'sekundy' : 'sekúnd');
12341                } else {
12342                    return result + 'sekundami';
12343                }
12344                break;
12345            case 'm':  // a minute / in a minute / a minute ago
12346                return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
12347            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
12348                if (withoutSuffix || isFuture) {
12349                    return result + (plural$5(number) ? 'minúty' : 'minút');
12350                } else {
12351                    return result + 'minútami';
12352                }
12353                break;
12354            case 'h':  // an hour / in an hour / an hour ago
12355                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
12356            case 'hh': // 9 hours / in 9 hours / 9 hours ago
12357                if (withoutSuffix || isFuture) {
12358                    return result + (plural$5(number) ? 'hodiny' : 'hodín');
12359                } else {
12360                    return result + 'hodinami';
12361                }
12362                break;
12363            case 'd':  // a day / in a day / a day ago
12364                return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
12365            case 'dd': // 9 days / in 9 days / 9 days ago
12366                if (withoutSuffix || isFuture) {
12367                    return result + (plural$5(number) ? 'dni' : 'dní');
12368                } else {
12369                    return result + 'dňami';
12370                }
12371                break;
12372            case 'M':  // a month / in a month / a month ago
12373                return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
12374            case 'MM': // 9 months / in 9 months / 9 months ago
12375                if (withoutSuffix || isFuture) {
12376                    return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
12377                } else {
12378                    return result + 'mesiacmi';
12379                }
12380                break;
12381            case 'y':  // a year / in a year / a year ago
12382                return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
12383            case 'yy': // 9 years / in 9 years / 9 years ago
12384                if (withoutSuffix || isFuture) {
12385                    return result + (plural$5(number) ? 'roky' : 'rokov');
12386                } else {
12387                    return result + 'rokmi';
12388                }
12389                break;
12390        }
12391    }
12392
12393    hooks.defineLocale('sk', {
12394        months : months$9,
12395        monthsShort : monthsShort$6,
12396        weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
12397        weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),
12398        weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),
12399        longDateFormat : {
12400            LT: 'H:mm',
12401            LTS : 'H:mm:ss',
12402            L : 'DD.MM.YYYY',
12403            LL : 'D. MMMM YYYY',
12404            LLL : 'D. MMMM YYYY H:mm',
12405            LLLL : 'dddd D. MMMM YYYY H:mm'
12406        },
12407        calendar : {
12408            sameDay: '[dnes o] LT',
12409            nextDay: '[zajtra o] LT',
12410            nextWeek: function () {
12411                switch (this.day()) {
12412                    case 0:
12413                        return '[v nedeľu o] LT';
12414                    case 1:
12415                    case 2:
12416                        return '[v] dddd [o] LT';
12417                    case 3:
12418                        return '[v stredu o] LT';
12419                    case 4:
12420                        return '[vo štvrtok o] LT';
12421                    case 5:
12422                        return '[v piatok o] LT';
12423                    case 6:
12424                        return '[v sobotu o] LT';
12425                }
12426            },
12427            lastDay: '[včera o] LT',
12428            lastWeek: function () {
12429                switch (this.day()) {
12430                    case 0:
12431                        return '[minulú nedeľu o] LT';
12432                    case 1:
12433                    case 2:
12434                        return '[minulý] dddd [o] LT';
12435                    case 3:
12436                        return '[minulú stredu o] LT';
12437                    case 4:
12438                    case 5:
12439                        return '[minulý] dddd [o] LT';
12440                    case 6:
12441                        return '[minulú sobotu o] LT';
12442                }
12443            },
12444            sameElse: 'L'
12445        },
12446        relativeTime : {
12447            future : 'za %s',
12448            past : 'pred %s',
12449            s : translate$9,
12450            ss : translate$9,
12451            m : translate$9,
12452            mm : translate$9,
12453            h : translate$9,
12454            hh : translate$9,
12455            d : translate$9,
12456            dd : translate$9,
12457            M : translate$9,
12458            MM : translate$9,
12459            y : translate$9,
12460            yy : translate$9
12461        },
12462        dayOfMonthOrdinalParse: /\d{1,2}\./,
12463        ordinal : '%d.',
12464        week : {
12465            dow : 1, // Monday is the first day of the week.
12466            doy : 4  // The week that contains Jan 4th is the first week of the year.
12467        }
12468    });
12469
12470    //! moment.js locale configuration
12471
12472    function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
12473        var result = number + ' ';
12474        switch (key) {
12475            case 's':
12476                return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
12477            case 'ss':
12478                if (number === 1) {
12479                    result += withoutSuffix ? 'sekundo' : 'sekundi';
12480                } else if (number === 2) {
12481                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
12482                } else if (number < 5) {
12483                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
12484                } else {
12485                    result += 'sekund';
12486                }
12487                return result;
12488            case 'm':
12489                return withoutSuffix ? 'ena minuta' : 'eno minuto';
12490            case 'mm':
12491                if (number === 1) {
12492                    result += withoutSuffix ? 'minuta' : 'minuto';
12493                } else if (number === 2) {
12494                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
12495                } else if (number < 5) {
12496                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
12497                } else {
12498                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
12499                }
12500                return result;
12501            case 'h':
12502                return withoutSuffix ? 'ena ura' : 'eno uro';
12503            case 'hh':
12504                if (number === 1) {
12505                    result += withoutSuffix ? 'ura' : 'uro';
12506                } else if (number === 2) {
12507                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
12508                } else if (number < 5) {
12509                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
12510                } else {
12511                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
12512                }
12513                return result;
12514            case 'd':
12515                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
12516            case 'dd':
12517                if (number === 1) {
12518                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
12519                } else if (number === 2) {
12520                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
12521                } else {
12522                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
12523                }
12524                return result;
12525            case 'M':
12526                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
12527            case 'MM':
12528                if (number === 1) {
12529                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
12530                } else if (number === 2) {
12531                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
12532                } else if (number < 5) {
12533                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
12534                } else {
12535                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
12536                }
12537                return result;
12538            case 'y':
12539                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
12540            case 'yy':
12541                if (number === 1) {
12542                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
12543                } else if (number === 2) {
12544                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
12545                } else if (number < 5) {
12546                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
12547                } else {
12548                    result += withoutSuffix || isFuture ? 'let' : 'leti';
12549                }
12550                return result;
12551        }
12552    }
12553
12554    hooks.defineLocale('sl', {
12555        months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
12556        monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
12557        monthsParseExact: true,
12558        weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
12559        weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
12560        weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
12561        weekdaysParseExact : true,
12562        longDateFormat : {
12563            LT : 'H:mm',
12564            LTS : 'H:mm:ss',
12565            L : 'DD.MM.YYYY',
12566            LL : 'D. MMMM YYYY',
12567            LLL : 'D. MMMM YYYY H:mm',
12568            LLLL : 'dddd, D. MMMM YYYY H:mm'
12569        },
12570        calendar : {
12571            sameDay  : '[danes ob] LT',
12572            nextDay  : '[jutri ob] LT',
12573
12574            nextWeek : function () {
12575                switch (this.day()) {
12576                    case 0:
12577                        return '[v] [nedeljo] [ob] LT';
12578                    case 3:
12579                        return '[v] [sredo] [ob] LT';
12580                    case 6:
12581                        return '[v] [soboto] [ob] LT';
12582                    case 1:
12583                    case 2:
12584                    case 4:
12585                    case 5:
12586                        return '[v] dddd [ob] LT';
12587                }
12588            },
12589            lastDay  : '[včeraj ob] LT',
12590            lastWeek : function () {
12591                switch (this.day()) {
12592                    case 0:
12593                        return '[prejšnjo] [nedeljo] [ob] LT';
12594                    case 3:
12595                        return '[prejšnjo] [sredo] [ob] LT';
12596                    case 6:
12597                        return '[prejšnjo] [soboto] [ob] LT';
12598                    case 1:
12599                    case 2:
12600                    case 4:
12601                    case 5:
12602                        return '[prejšnji] dddd [ob] LT';
12603                }
12604            },
12605            sameElse : 'L'
12606        },
12607        relativeTime : {
12608            future : 'čez %s',
12609            past   : 'pred %s',
12610            s      : processRelativeTime$6,
12611            ss     : processRelativeTime$6,
12612            m      : processRelativeTime$6,
12613            mm     : processRelativeTime$6,
12614            h      : processRelativeTime$6,
12615            hh     : processRelativeTime$6,
12616            d      : processRelativeTime$6,
12617            dd     : processRelativeTime$6,
12618            M      : processRelativeTime$6,
12619            MM     : processRelativeTime$6,
12620            y      : processRelativeTime$6,
12621            yy     : processRelativeTime$6
12622        },
12623        dayOfMonthOrdinalParse: /\d{1,2}\./,
12624        ordinal : '%d.',
12625        week : {
12626            dow : 1, // Monday is the first day of the week.
12627            doy : 7  // The week that contains Jan 7th is the first week of the year.
12628        }
12629    });
12630
12631    //! moment.js locale configuration
12632
12633    hooks.defineLocale('sq', {
12634        months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
12635        monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
12636        weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
12637        weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
12638        weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),
12639        weekdaysParseExact : true,
12640        meridiemParse: /PD|MD/,
12641        isPM: function (input) {
12642            return input.charAt(0) === 'M';
12643        },
12644        meridiem : function (hours, minutes, isLower) {
12645            return hours < 12 ? 'PD' : 'MD';
12646        },
12647        longDateFormat : {
12648            LT : 'HH:mm',
12649            LTS : 'HH:mm:ss',
12650            L : 'DD/MM/YYYY',
12651            LL : 'D MMMM YYYY',
12652            LLL : 'D MMMM YYYY HH:mm',
12653            LLLL : 'dddd, D MMMM YYYY HH:mm'
12654        },
12655        calendar : {
12656            sameDay : '[Sot në] LT',
12657            nextDay : '[Nesër në] LT',
12658            nextWeek : 'dddd [në] LT',
12659            lastDay : '[Dje në] LT',
12660            lastWeek : 'dddd [e kaluar në] LT',
12661            sameElse : 'L'
12662        },
12663        relativeTime : {
12664            future : 'në %s',
12665            past : '%s më parë',
12666            s : 'disa sekonda',
12667            ss : '%d sekonda',
12668            m : 'një minutë',
12669            mm : '%d minuta',
12670            h : 'një orë',
12671            hh : '%d orë',
12672            d : 'një ditë',
12673            dd : '%d ditë',
12674            M : 'një muaj',
12675            MM : '%d muaj',
12676            y : 'një vit',
12677            yy : '%d vite'
12678        },
12679        dayOfMonthOrdinalParse: /\d{1,2}\./,
12680        ordinal : '%d.',
12681        week : {
12682            dow : 1, // Monday is the first day of the week.
12683            doy : 4  // The week that contains Jan 4th is the first week of the year.
12684        }
12685    });
12686
12687    //! moment.js locale configuration
12688
12689    var translator$1 = {
12690        words: { //Different grammatical cases
12691            ss: ['секунда', 'секунде', 'секунди'],
12692            m: ['један минут', 'једне минуте'],
12693            mm: ['минут', 'минуте', 'минута'],
12694            h: ['један сат', 'једног сата'],
12695            hh: ['сат', 'сата', 'сати'],
12696            dd: ['дан', 'дана', 'дана'],
12697            MM: ['месец', 'месеца', 'месеци'],
12698            yy: ['година', 'године', 'година']
12699        },
12700        correctGrammaticalCase: function (number, wordKey) {
12701            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
12702        },
12703        translate: function (number, withoutSuffix, key) {
12704            var wordKey = translator$1.words[key];
12705            if (key.length === 1) {
12706                return withoutSuffix ? wordKey[0] : wordKey[1];
12707            } else {
12708                return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey);
12709            }
12710        }
12711    };
12712
12713    hooks.defineLocale('sr-cyrl', {
12714        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),
12715        monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
12716        monthsParseExact: true,
12717        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
12718        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
12719        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
12720        weekdaysParseExact : true,
12721        longDateFormat: {
12722            LT: 'H:mm',
12723            LTS : 'H:mm:ss',
12724            L: 'DD.MM.YYYY',
12725            LL: 'D. MMMM YYYY',
12726            LLL: 'D. MMMM YYYY H:mm',
12727            LLLL: 'dddd, D. MMMM YYYY H:mm'
12728        },
12729        calendar: {
12730            sameDay: '[данас у] LT',
12731            nextDay: '[сутра у] LT',
12732            nextWeek: function () {
12733                switch (this.day()) {
12734                    case 0:
12735                        return '[у] [недељу] [у] LT';
12736                    case 3:
12737                        return '[у] [среду] [у] LT';
12738                    case 6:
12739                        return '[у] [суботу] [у] LT';
12740                    case 1:
12741                    case 2:
12742                    case 4:
12743                    case 5:
12744                        return '[у] dddd [у] LT';
12745                }
12746            },
12747            lastDay  : '[јуче у] LT',
12748            lastWeek : function () {
12749                var lastWeekDays = [
12750                    '[прошле] [недеље] [у] LT',
12751                    '[прошлог] [понедељка] [у] LT',
12752                    '[прошлог] [уторка] [у] LT',
12753                    '[прошле] [среде] [у] LT',
12754                    '[прошлог] [четвртка] [у] LT',
12755                    '[прошлог] [петка] [у] LT',
12756                    '[прошле] [суботе] [у] LT'
12757                ];
12758                return lastWeekDays[this.day()];
12759            },
12760            sameElse : 'L'
12761        },
12762        relativeTime : {
12763            future : 'за %s',
12764            past   : 'пре %s',
12765            s      : 'неколико секунди',
12766            ss     : translator$1.translate,
12767            m      : translator$1.translate,
12768            mm     : translator$1.translate,
12769            h      : translator$1.translate,
12770            hh     : translator$1.translate,
12771            d      : 'дан',
12772            dd     : translator$1.translate,
12773            M      : 'месец',
12774            MM     : translator$1.translate,
12775            y      : 'годину',
12776            yy     : translator$1.translate
12777        },
12778        dayOfMonthOrdinalParse: /\d{1,2}\./,
12779        ordinal : '%d.',
12780        week : {
12781            dow : 1, // Monday is the first day of the week.
12782            doy : 7  // The week that contains Jan 7th is the first week of the year.
12783        }
12784    });
12785
12786    //! moment.js locale configuration
12787
12788    var translator$2 = {
12789        words: { //Different grammatical cases
12790            ss: ['sekunda', 'sekunde', 'sekundi'],
12791            m: ['jedan minut', 'jedne minute'],
12792            mm: ['minut', 'minute', 'minuta'],
12793            h: ['jedan sat', 'jednog sata'],
12794            hh: ['sat', 'sata', 'sati'],
12795            dd: ['dan', 'dana', 'dana'],
12796            MM: ['mesec', 'meseca', 'meseci'],
12797            yy: ['godina', 'godine', 'godina']
12798        },
12799        correctGrammaticalCase: function (number, wordKey) {
12800            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
12801        },
12802        translate: function (number, withoutSuffix, key) {
12803            var wordKey = translator$2.words[key];
12804            if (key.length === 1) {
12805                return withoutSuffix ? wordKey[0] : wordKey[1];
12806            } else {
12807                return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey);
12808            }
12809        }
12810    };
12811
12812    hooks.defineLocale('sr', {
12813        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
12814        monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
12815        monthsParseExact: true,
12816        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),
12817        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
12818        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
12819        weekdaysParseExact : true,
12820        longDateFormat: {
12821            LT: 'H:mm',
12822            LTS : 'H:mm:ss',
12823            L: 'DD.MM.YYYY',
12824            LL: 'D. MMMM YYYY',
12825            LLL: 'D. MMMM YYYY H:mm',
12826            LLLL: 'dddd, D. MMMM YYYY H:mm'
12827        },
12828        calendar: {
12829            sameDay: '[danas u] LT',
12830            nextDay: '[sutra u] LT',
12831            nextWeek: function () {
12832                switch (this.day()) {
12833                    case 0:
12834                        return '[u] [nedelju] [u] LT';
12835                    case 3:
12836                        return '[u] [sredu] [u] LT';
12837                    case 6:
12838                        return '[u] [subotu] [u] LT';
12839                    case 1:
12840                    case 2:
12841                    case 4:
12842                    case 5:
12843                        return '[u] dddd [u] LT';
12844                }
12845            },
12846            lastDay  : '[juče u] LT',
12847            lastWeek : function () {
12848                var lastWeekDays = [
12849                    '[prošle] [nedelje] [u] LT',
12850                    '[prošlog] [ponedeljka] [u] LT',
12851                    '[prošlog] [utorka] [u] LT',
12852                    '[prošle] [srede] [u] LT',
12853                    '[prošlog] [četvrtka] [u] LT',
12854                    '[prošlog] [petka] [u] LT',
12855                    '[prošle] [subote] [u] LT'
12856                ];
12857                return lastWeekDays[this.day()];
12858            },
12859            sameElse : 'L'
12860        },
12861        relativeTime : {
12862            future : 'za %s',
12863            past   : 'pre %s',
12864            s      : 'nekoliko sekundi',
12865            ss     : translator$2.translate,
12866            m      : translator$2.translate,
12867            mm     : translator$2.translate,
12868            h      : translator$2.translate,
12869            hh     : translator$2.translate,
12870            d      : 'dan',
12871            dd     : translator$2.translate,
12872            M      : 'mesec',
12873            MM     : translator$2.translate,
12874            y      : 'godinu',
12875            yy     : translator$2.translate
12876        },
12877        dayOfMonthOrdinalParse: /\d{1,2}\./,
12878        ordinal : '%d.',
12879        week : {
12880            dow : 1, // Monday is the first day of the week.
12881            doy : 7  // The week that contains Jan 7th is the first week of the year.
12882        }
12883    });
12884
12885    //! moment.js locale configuration
12886
12887    hooks.defineLocale('ss', {
12888        months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'),
12889        monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
12890        weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),
12891        weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
12892        weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
12893        weekdaysParseExact : true,
12894        longDateFormat : {
12895            LT : 'h:mm A',
12896            LTS : 'h:mm:ss A',
12897            L : 'DD/MM/YYYY',
12898            LL : 'D MMMM YYYY',
12899            LLL : 'D MMMM YYYY h:mm A',
12900            LLLL : 'dddd, D MMMM YYYY h:mm A'
12901        },
12902        calendar : {
12903            sameDay : '[Namuhla nga] LT',
12904            nextDay : '[Kusasa nga] LT',
12905            nextWeek : 'dddd [nga] LT',
12906            lastDay : '[Itolo nga] LT',
12907            lastWeek : 'dddd [leliphelile] [nga] LT',
12908            sameElse : 'L'
12909        },
12910        relativeTime : {
12911            future : 'nga %s',
12912            past : 'wenteka nga %s',
12913            s : 'emizuzwana lomcane',
12914            ss : '%d mzuzwana',
12915            m : 'umzuzu',
12916            mm : '%d emizuzu',
12917            h : 'lihora',
12918            hh : '%d emahora',
12919            d : 'lilanga',
12920            dd : '%d emalanga',
12921            M : 'inyanga',
12922            MM : '%d tinyanga',
12923            y : 'umnyaka',
12924            yy : '%d iminyaka'
12925        },
12926        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
12927        meridiem : function (hours, minutes, isLower) {
12928            if (hours < 11) {
12929                return 'ekuseni';
12930            } else if (hours < 15) {
12931                return 'emini';
12932            } else if (hours < 19) {
12933                return 'entsambama';
12934            } else {
12935                return 'ebusuku';
12936            }
12937        },
12938        meridiemHour : function (hour, meridiem) {
12939            if (hour === 12) {
12940                hour = 0;
12941            }
12942            if (meridiem === 'ekuseni') {
12943                return hour;
12944            } else if (meridiem === 'emini') {
12945                return hour >= 11 ? hour : hour + 12;
12946            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
12947                if (hour === 0) {
12948                    return 0;
12949                }
12950                return hour + 12;
12951            }
12952        },
12953        dayOfMonthOrdinalParse: /\d{1,2}/,
12954        ordinal : '%d',
12955        week : {
12956            dow : 1, // Monday is the first day of the week.
12957            doy : 4  // The week that contains Jan 4th is the first week of the year.
12958        }
12959    });
12960
12961    //! moment.js locale configuration
12962
12963    hooks.defineLocale('sv', {
12964        months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
12965        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
12966        weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
12967        weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
12968        weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
12969        longDateFormat : {
12970            LT : 'HH:mm',
12971            LTS : 'HH:mm:ss',
12972            L : 'YYYY-MM-DD',
12973            LL : 'D MMMM YYYY',
12974            LLL : 'D MMMM YYYY [kl.] HH:mm',
12975            LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',
12976            lll : 'D MMM YYYY HH:mm',
12977            llll : 'ddd D MMM YYYY HH:mm'
12978        },
12979        calendar : {
12980            sameDay: '[Idag] LT',
12981            nextDay: '[Imorgon] LT',
12982            lastDay: '[Igår] LT',
12983            nextWeek: '[PÃ¥] dddd LT',
12984            lastWeek: '[I] dddd[s] LT',
12985            sameElse: 'L'
12986        },
12987        relativeTime : {
12988            future : 'om %s',
12989            past : 'för %s sedan',
12990            s : 'några sekunder',
12991            ss : '%d sekunder',
12992            m : 'en minut',
12993            mm : '%d minuter',
12994            h : 'en timme',
12995            hh : '%d timmar',
12996            d : 'en dag',
12997            dd : '%d dagar',
12998            M : 'en månad',
12999            MM : '%d månader',
13000            y : 'ett år',
13001            yy : '%d år'
13002        },
13003        dayOfMonthOrdinalParse: /\d{1,2}(e|a)/,
13004        ordinal : function (number) {
13005            var b = number % 10,
13006                output = (~~(number % 100 / 10) === 1) ? 'e' :
13007                (b === 1) ? 'a' :
13008                (b === 2) ? 'a' :
13009                (b === 3) ? 'e' : 'e';
13010            return number + output;
13011        },
13012        week : {
13013            dow : 1, // Monday is the first day of the week.
13014            doy : 4  // The week that contains Jan 4th is the first week of the year.
13015        }
13016    });
13017
13018    //! moment.js locale configuration
13019
13020    hooks.defineLocale('sw', {
13021        months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
13022        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
13023        weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
13024        weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
13025        weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
13026        weekdaysParseExact : true,
13027        longDateFormat : {
13028            LT : 'HH:mm',
13029            LTS : 'HH:mm:ss',
13030            L : 'DD.MM.YYYY',
13031            LL : 'D MMMM YYYY',
13032            LLL : 'D MMMM YYYY HH:mm',
13033            LLLL : 'dddd, D MMMM YYYY HH:mm'
13034        },
13035        calendar : {
13036            sameDay : '[leo saa] LT',
13037            nextDay : '[kesho saa] LT',
13038            nextWeek : '[wiki ijayo] dddd [saat] LT',
13039            lastDay : '[jana] LT',
13040            lastWeek : '[wiki iliyopita] dddd [saat] LT',
13041            sameElse : 'L'
13042        },
13043        relativeTime : {
13044            future : '%s baadaye',
13045            past : 'tokea %s',
13046            s : 'hivi punde',
13047            ss : 'sekunde %d',
13048            m : 'dakika moja',
13049            mm : 'dakika %d',
13050            h : 'saa limoja',
13051            hh : 'masaa %d',
13052            d : 'siku moja',
13053            dd : 'masiku %d',
13054            M : 'mwezi mmoja',
13055            MM : 'miezi %d',
13056            y : 'mwaka mmoja',
13057            yy : 'miaka %d'
13058        },
13059        week : {
13060            dow : 1, // Monday is the first day of the week.
13061            doy : 7  // The week that contains Jan 7th is the first week of the year.
13062        }
13063    });
13064
13065    //! moment.js locale configuration
13066
13067    var symbolMap$f = {
13068        '1': '௧',
13069        '2': '௨',
13070        '3': '௩',
13071        '4': '௪',
13072        '5': '௫',
13073        '6': '௬',
13074        '7': '௭',
13075        '8': '௮',
13076        '9': '௯',
13077        '0': '௦'
13078    }, numberMap$e = {
13079        '௧': '1',
13080        '௨': '2',
13081        '௩': '3',
13082        '௪': '4',
13083        '௫': '5',
13084        '௬': '6',
13085        '௭': '7',
13086        '௮': '8',
13087        '௯': '9',
13088        '௦': '0'
13089    };
13090
13091    hooks.defineLocale('ta', {
13092        months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
13093        monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
13094        weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
13095        weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
13096        weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
13097        longDateFormat : {
13098            LT : 'HH:mm',
13099            LTS : 'HH:mm:ss',
13100            L : 'DD/MM/YYYY',
13101            LL : 'D MMMM YYYY',
13102            LLL : 'D MMMM YYYY, HH:mm',
13103            LLLL : 'dddd, D MMMM YYYY, HH:mm'
13104        },
13105        calendar : {
13106            sameDay : '[இன்று] LT',
13107            nextDay : '[நாளை] LT',
13108            nextWeek : 'dddd, LT',
13109            lastDay : '[நேற்று] LT',
13110            lastWeek : '[கடந்த வாரம்] dddd, LT',
13111            sameElse : 'L'
13112        },
13113        relativeTime : {
13114            future : '%s இல்',
13115            past : '%s முன்',
13116            s : 'ஒரு சில விநாடிகள்',
13117            ss : '%d விநாடிகள்',
13118            m : 'ஒரு நிமிடம்',
13119            mm : '%d நிமிடங்கள்',
13120            h : 'ஒரு மணி நேரம்',
13121            hh : '%d மணி நேரம்',
13122            d : 'ஒரு நாள்',
13123            dd : '%d நாட்கள்',
13124            M : 'ஒரு மாதம்',
13125            MM : '%d மாதங்கள்',
13126            y : 'ஒரு வருடம்',
13127            yy : '%d ஆண்டுகள்'
13128        },
13129        dayOfMonthOrdinalParse: /\d{1,2}வது/,
13130        ordinal : function (number) {
13131            return number + 'வது';
13132        },
13133        preparse: function (string) {
13134            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
13135                return numberMap$e[match];
13136            });
13137        },
13138        postformat: function (string) {
13139            return string.replace(/\d/g, function (match) {
13140                return symbolMap$f[match];
13141            });
13142        },
13143        // refer http://ta.wikipedia.org/s/1er1
13144        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
13145        meridiem : function (hour, minute, isLower) {
13146            if (hour < 2) {
13147                return ' யாமம்';
13148            } else if (hour < 6) {
13149                return ' வைகறை';  // வைகறை
13150            } else if (hour < 10) {
13151                return ' காலை'; // காலை
13152            } else if (hour < 14) {
13153                return ' நண்பகல்'; // நண்பகல்
13154            } else if (hour < 18) {
13155                return ' எற்பாடு'; // எற்பாடு
13156            } else if (hour < 22) {
13157                return ' மாலை'; // மாலை
13158            } else {
13159                return ' யாமம்';
13160            }
13161        },
13162        meridiemHour : function (hour, meridiem) {
13163            if (hour === 12) {
13164                hour = 0;
13165            }
13166            if (meridiem === 'யாமம்') {
13167                return hour < 2 ? hour : hour + 12;
13168            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
13169                return hour;
13170            } else if (meridiem === 'நண்பகல்') {
13171                return hour >= 10 ? hour : hour + 12;
13172            } else {
13173                return hour + 12;
13174            }
13175        },
13176        week : {
13177            dow : 0, // Sunday is the first day of the week.
13178            doy : 6  // The week that contains Jan 6th is the first week of the year.
13179        }
13180    });
13181
13182    //! moment.js locale configuration
13183
13184    hooks.defineLocale('te', {
13185        months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
13186        monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
13187        monthsParseExact : true,
13188        weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
13189        weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
13190        weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
13191        longDateFormat : {
13192            LT : 'A h:mm',
13193            LTS : 'A h:mm:ss',
13194            L : 'DD/MM/YYYY',
13195            LL : 'D MMMM YYYY',
13196            LLL : 'D MMMM YYYY, A h:mm',
13197            LLLL : 'dddd, D MMMM YYYY, A h:mm'
13198        },
13199        calendar : {
13200            sameDay : '[నేడు] LT',
13201            nextDay : '[రేపు] LT',
13202            nextWeek : 'dddd, LT',
13203            lastDay : '[నిన్న] LT',
13204            lastWeek : '[గత] dddd, LT',
13205            sameElse : 'L'
13206        },
13207        relativeTime : {
13208            future : '%s లో',
13209            past : '%s క్రితం',
13210            s : 'కొన్ని క్షణాలు',
13211            ss : '%d సెకన్లు',
13212            m : 'ఒక నిమిషం',
13213            mm : '%d నిమిషాలు',
13214            h : 'ఒక గంట',
13215            hh : '%d గంటలు',
13216            d : 'ఒక రోజు',
13217            dd : '%d రోజులు',
13218            M : 'ఒక నెల',
13219            MM : '%d నెలలు',
13220            y : 'ఒక సంవత్సరం',
13221            yy : '%d సంవత్సరాలు'
13222        },
13223        dayOfMonthOrdinalParse : /\d{1,2}à°µ/,
13224        ordinal : '%dà°µ',
13225        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
13226        meridiemHour : function (hour, meridiem) {
13227            if (hour === 12) {
13228                hour = 0;
13229            }
13230            if (meridiem === 'రాత్రి') {
13231                return hour < 4 ? hour : hour + 12;
13232            } else if (meridiem === 'ఉదయం') {
13233                return hour;
13234            } else if (meridiem === 'మధ్యాహ్నం') {
13235                return hour >= 10 ? hour : hour + 12;
13236            } else if (meridiem === 'సాయంత్రం') {
13237                return hour + 12;
13238            }
13239        },
13240        meridiem : function (hour, minute, isLower) {
13241            if (hour < 4) {
13242                return 'రాత్రి';
13243            } else if (hour < 10) {
13244                return 'ఉదయం';
13245            } else if (hour < 17) {
13246                return 'మధ్యాహ్నం';
13247            } else if (hour < 20) {
13248                return 'సాయంత్రం';
13249            } else {
13250                return 'రాత్రి';
13251            }
13252        },
13253        week : {
13254            dow : 0, // Sunday is the first day of the week.
13255            doy : 6  // The week that contains Jan 6th is the first week of the year.
13256        }
13257    });
13258
13259    //! moment.js locale configuration
13260
13261    hooks.defineLocale('tet', {
13262        months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),
13263        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
13264        weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
13265        weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
13266        weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
13267        longDateFormat : {
13268            LT : 'HH:mm',
13269            LTS : 'HH:mm:ss',
13270            L : 'DD/MM/YYYY',
13271            LL : 'D MMMM YYYY',
13272            LLL : 'D MMMM YYYY HH:mm',
13273            LLLL : 'dddd, D MMMM YYYY HH:mm'
13274        },
13275        calendar : {
13276            sameDay: '[Ohin iha] LT',
13277            nextDay: '[Aban iha] LT',
13278            nextWeek: 'dddd [iha] LT',
13279            lastDay: '[Horiseik iha] LT',
13280            lastWeek: 'dddd [semana kotuk] [iha] LT',
13281            sameElse: 'L'
13282        },
13283        relativeTime : {
13284            future : 'iha %s',
13285            past : '%s liuba',
13286            s : 'minutu balun',
13287            ss : 'minutu %d',
13288            m : 'minutu ida',
13289            mm : 'minutu %d',
13290            h : 'oras ida',
13291            hh : 'oras %d',
13292            d : 'loron ida',
13293            dd : 'loron %d',
13294            M : 'fulan ida',
13295            MM : 'fulan %d',
13296            y : 'tinan ida',
13297            yy : 'tinan %d'
13298        },
13299        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
13300        ordinal : function (number) {
13301            var b = number % 10,
13302                output = (~~(number % 100 / 10) === 1) ? 'th' :
13303                (b === 1) ? 'st' :
13304                (b === 2) ? 'nd' :
13305                (b === 3) ? 'rd' : 'th';
13306            return number + output;
13307        },
13308        week : {
13309            dow : 1, // Monday is the first day of the week.
13310            doy : 4  // The week that contains Jan 4th is the first week of the year.
13311        }
13312    });
13313
13314    //! moment.js locale configuration
13315
13316    var suffixes$3 = {
13317        0: '-ум',
13318        1: '-ум',
13319        2: '-юм',
13320        3: '-юм',
13321        4: '-ум',
13322        5: '-ум',
13323        6: '-ум',
13324        7: '-ум',
13325        8: '-ум',
13326        9: '-ум',
13327        10: '-ум',
13328        12: '-ум',
13329        13: '-ум',
13330        20: '-ум',
13331        30: '-юм',
13332        40: '-ум',
13333        50: '-ум',
13334        60: '-ум',
13335        70: '-ум',
13336        80: '-ум',
13337        90: '-ум',
13338        100: '-ум'
13339    };
13340
13341    hooks.defineLocale('tg', {
13342        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
13343        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
13344        weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),
13345        weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
13346        weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
13347        longDateFormat : {
13348            LT : 'HH:mm',
13349            LTS : 'HH:mm:ss',
13350            L : 'DD/MM/YYYY',
13351            LL : 'D MMMM YYYY',
13352            LLL : 'D MMMM YYYY HH:mm',
13353            LLLL : 'dddd, D MMMM YYYY HH:mm'
13354        },
13355        calendar : {
13356            sameDay : '[Имрӯз соати] LT',
13357            nextDay : '[Пагоҳ соати] LT',
13358            lastDay : '[Дирӯз соати] LT',
13359            nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT',
13360            lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT',
13361            sameElse : 'L'
13362        },
13363        relativeTime : {
13364            future : 'баъди %s',
13365            past : '%s пеш',
13366            s : 'якчанд сония',
13367            m : 'як дақиқа',
13368            mm : '%d дақиқа',
13369            h : 'як соат',
13370            hh : '%d соат',
13371            d : 'як рӯз',
13372            dd : '%d рӯз',
13373            M : 'як моҳ',
13374            MM : '%d моҳ',
13375            y : 'як сол',
13376            yy : '%d сол'
13377        },
13378        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
13379        meridiemHour: function (hour, meridiem) {
13380            if (hour === 12) {
13381                hour = 0;
13382            }
13383            if (meridiem === 'шаб') {
13384                return hour < 4 ? hour : hour + 12;
13385            } else if (meridiem === 'субҳ') {
13386                return hour;
13387            } else if (meridiem === 'рӯз') {
13388                return hour >= 11 ? hour : hour + 12;
13389            } else if (meridiem === 'бегоҳ') {
13390                return hour + 12;
13391            }
13392        },
13393        meridiem: function (hour, minute, isLower) {
13394            if (hour < 4) {
13395                return 'шаб';
13396            } else if (hour < 11) {
13397                return 'субҳ';
13398            } else if (hour < 16) {
13399                return 'рӯз';
13400            } else if (hour < 19) {
13401                return 'бегоҳ';
13402            } else {
13403                return 'шаб';
13404            }
13405        },
13406        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
13407        ordinal: function (number) {
13408            var a = number % 10,
13409                b = number >= 100 ? 100 : null;
13410            return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);
13411        },
13412        week : {
13413            dow : 1, // Monday is the first day of the week.
13414            doy : 7  // The week that contains Jan 1th is the first week of the year.
13415        }
13416    });
13417
13418    //! moment.js locale configuration
13419
13420    hooks.defineLocale('th', {
13421        months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
13422        monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),
13423        monthsParseExact: true,
13424        weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
13425        weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
13426        weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
13427        weekdaysParseExact : true,
13428        longDateFormat : {
13429            LT : 'H:mm',
13430            LTS : 'H:mm:ss',
13431            L : 'DD/MM/YYYY',
13432            LL : 'D MMMM YYYY',
13433            LLL : 'D MMMM YYYY เวลา H:mm',
13434            LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'
13435        },
13436        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
13437        isPM: function (input) {
13438            return input === 'หลังเที่ยง';
13439        },
13440        meridiem : function (hour, minute, isLower) {
13441            if (hour < 12) {
13442                return 'ก่อนเที่ยง';
13443            } else {
13444                return 'หลังเที่ยง';
13445            }
13446        },
13447        calendar : {
13448            sameDay : '[วันนี้ เวลา] LT',
13449            nextDay : '[พรุ่งนี้ เวลา] LT',
13450            nextWeek : 'dddd[หน้า เวลา] LT',
13451            lastDay : '[เมื่อวานนี้ เวลา] LT',
13452            lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',
13453            sameElse : 'L'
13454        },
13455        relativeTime : {
13456            future : 'อีก %s',
13457            past : '%sที่แล้ว',
13458            s : 'ไม่กี่วินาที',
13459            ss : '%d วินาที',
13460            m : '1 นาที',
13461            mm : '%d นาที',
13462            h : '1 ชั่วโมง',
13463            hh : '%d ชั่วโมง',
13464            d : '1 วัน',
13465            dd : '%d วัน',
13466            M : '1 เดือน',
13467            MM : '%d เดือน',
13468            y : '1 ปี',
13469            yy : '%d ปี'
13470        }
13471    });
13472
13473    //! moment.js locale configuration
13474
13475    hooks.defineLocale('tl-ph', {
13476        months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
13477        monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
13478        weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
13479        weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
13480        weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
13481        longDateFormat : {
13482            LT : 'HH:mm',
13483            LTS : 'HH:mm:ss',
13484            L : 'MM/D/YYYY',
13485            LL : 'MMMM D, YYYY',
13486            LLL : 'MMMM D, YYYY HH:mm',
13487            LLLL : 'dddd, MMMM DD, YYYY HH:mm'
13488        },
13489        calendar : {
13490            sameDay: 'LT [ngayong araw]',
13491            nextDay: '[Bukas ng] LT',
13492            nextWeek: 'LT [sa susunod na] dddd',
13493            lastDay: 'LT [kahapon]',
13494            lastWeek: 'LT [noong nakaraang] dddd',
13495            sameElse: 'L'
13496        },
13497        relativeTime : {
13498            future : 'sa loob ng %s',
13499            past : '%s ang nakalipas',
13500            s : 'ilang segundo',
13501            ss : '%d segundo',
13502            m : 'isang minuto',
13503            mm : '%d minuto',
13504            h : 'isang oras',
13505            hh : '%d oras',
13506            d : 'isang araw',
13507            dd : '%d araw',
13508            M : 'isang buwan',
13509            MM : '%d buwan',
13510            y : 'isang taon',
13511            yy : '%d taon'
13512        },
13513        dayOfMonthOrdinalParse: /\d{1,2}/,
13514        ordinal : function (number) {
13515            return number;
13516        },
13517        week : {
13518            dow : 1, // Monday is the first day of the week.
13519            doy : 4  // The week that contains Jan 4th is the first week of the year.
13520        }
13521    });
13522
13523    //! moment.js locale configuration
13524
13525    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
13526
13527    function translateFuture(output) {
13528        var time = output;
13529        time = (output.indexOf('jaj') !== -1) ?
13530        time.slice(0, -3) + 'leS' :
13531        (output.indexOf('jar') !== -1) ?
13532        time.slice(0, -3) + 'waQ' :
13533        (output.indexOf('DIS') !== -1) ?
13534        time.slice(0, -3) + 'nem' :
13535        time + ' pIq';
13536        return time;
13537    }
13538
13539    function translatePast(output) {
13540        var time = output;
13541        time = (output.indexOf('jaj') !== -1) ?
13542        time.slice(0, -3) + 'Hu’' :
13543        (output.indexOf('jar') !== -1) ?
13544        time.slice(0, -3) + 'wen' :
13545        (output.indexOf('DIS') !== -1) ?
13546        time.slice(0, -3) + 'ben' :
13547        time + ' ret';
13548        return time;
13549    }
13550
13551    function translate$a(number, withoutSuffix, string, isFuture) {
13552        var numberNoun = numberAsNoun(number);
13553        switch (string) {
13554            case 'ss':
13555                return numberNoun + ' lup';
13556            case 'mm':
13557                return numberNoun + ' tup';
13558            case 'hh':
13559                return numberNoun + ' rep';
13560            case 'dd':
13561                return numberNoun + ' jaj';
13562            case 'MM':
13563                return numberNoun + ' jar';
13564            case 'yy':
13565                return numberNoun + ' DIS';
13566        }
13567    }
13568
13569    function numberAsNoun(number) {
13570        var hundred = Math.floor((number % 1000) / 100),
13571        ten = Math.floor((number % 100) / 10),
13572        one = number % 10,
13573        word = '';
13574        if (hundred > 0) {
13575            word += numbersNouns[hundred] + 'vatlh';
13576        }
13577        if (ten > 0) {
13578            word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';
13579        }
13580        if (one > 0) {
13581            word += ((word !== '') ? ' ' : '') + numbersNouns[one];
13582        }
13583        return (word === '') ? 'pagh' : word;
13584    }
13585
13586    hooks.defineLocale('tlh', {
13587        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('_'),
13588        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('_'),
13589        monthsParseExact : true,
13590        weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
13591        weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
13592        weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
13593        longDateFormat : {
13594            LT : 'HH:mm',
13595            LTS : 'HH:mm:ss',
13596            L : 'DD.MM.YYYY',
13597            LL : 'D MMMM YYYY',
13598            LLL : 'D MMMM YYYY HH:mm',
13599            LLLL : 'dddd, D MMMM YYYY HH:mm'
13600        },
13601        calendar : {
13602            sameDay: '[DaHjaj] LT',
13603            nextDay: '[wa’leS] LT',
13604            nextWeek: 'LLL',
13605            lastDay: '[wa’Hu’] LT',
13606            lastWeek: 'LLL',
13607            sameElse: 'L'
13608        },
13609        relativeTime : {
13610            future : translateFuture,
13611            past : translatePast,
13612            s : 'puS lup',
13613            ss : translate$a,
13614            m : 'wa’ tup',
13615            mm : translate$a,
13616            h : 'wa’ rep',
13617            hh : translate$a,
13618            d : 'wa’ jaj',
13619            dd : translate$a,
13620            M : 'wa’ jar',
13621            MM : translate$a,
13622            y : 'wa’ DIS',
13623            yy : translate$a
13624        },
13625        dayOfMonthOrdinalParse: /\d{1,2}\./,
13626        ordinal : '%d.',
13627        week : {
13628            dow : 1, // Monday is the first day of the week.
13629            doy : 4  // The week that contains Jan 4th is the first week of the year.
13630        }
13631    });
13632
13633    var suffixes$4 = {
13634        1: '\'inci',
13635        5: '\'inci',
13636        8: '\'inci',
13637        70: '\'inci',
13638        80: '\'inci',
13639        2: '\'nci',
13640        7: '\'nci',
13641        20: '\'nci',
13642        50: '\'nci',
13643        3: '\'üncü',
13644        4: '\'üncü',
13645        100: '\'üncü',
13646        6: '\'ncı',
13647        9: '\'uncu',
13648        10: '\'uncu',
13649        30: '\'uncu',
13650        60: '\'ıncı',
13651        90: '\'ıncı'
13652    };
13653
13654    hooks.defineLocale('tr', {
13655        months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
13656        monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
13657        weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
13658        weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
13659        weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
13660        longDateFormat : {
13661            LT : 'HH:mm',
13662            LTS : 'HH:mm:ss',
13663            L : 'DD.MM.YYYY',
13664            LL : 'D MMMM YYYY',
13665            LLL : 'D MMMM YYYY HH:mm',
13666            LLLL : 'dddd, D MMMM YYYY HH:mm'
13667        },
13668        calendar : {
13669            sameDay : '[bugün saat] LT',
13670            nextDay : '[yarın saat] LT',
13671            nextWeek : '[gelecek] dddd [saat] LT',
13672            lastDay : '[dün] LT',
13673            lastWeek : '[geçen] dddd [saat] LT',
13674            sameElse : 'L'
13675        },
13676        relativeTime : {
13677            future : '%s sonra',
13678            past : '%s önce',
13679            s : 'birkaç saniye',
13680            ss : '%d saniye',
13681            m : 'bir dakika',
13682            mm : '%d dakika',
13683            h : 'bir saat',
13684            hh : '%d saat',
13685            d : 'bir gün',
13686            dd : '%d gün',
13687            M : 'bir ay',
13688            MM : '%d ay',
13689            y : 'bir yıl',
13690            yy : '%d yıl'
13691        },
13692        ordinal: function (number, period) {
13693            switch (period) {
13694                case 'd':
13695                case 'D':
13696                case 'Do':
13697                case 'DD':
13698                    return number;
13699                default:
13700                    if (number === 0) {  // special case for zero
13701                        return number + '\'ıncı';
13702                    }
13703                    var a = number % 10,
13704                        b = number % 100 - a,
13705                        c = number >= 100 ? 100 : null;
13706                    return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);
13707            }
13708        },
13709        week : {
13710            dow : 1, // Monday is the first day of the week.
13711            doy : 7  // The week that contains Jan 7th is the first week of the year.
13712        }
13713    });
13714
13715    //! moment.js locale configuration
13716
13717    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
13718    // This is currently too difficult (maybe even impossible) to add.
13719    hooks.defineLocale('tzl', {
13720        months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
13721        monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
13722        weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
13723        weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
13724        weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
13725        longDateFormat : {
13726            LT : 'HH.mm',
13727            LTS : 'HH.mm.ss',
13728            L : 'DD.MM.YYYY',
13729            LL : 'D. MMMM [dallas] YYYY',
13730            LLL : 'D. MMMM [dallas] YYYY HH.mm',
13731            LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
13732        },
13733        meridiemParse: /d\'o|d\'a/i,
13734        isPM : function (input) {
13735            return 'd\'o' === input.toLowerCase();
13736        },
13737        meridiem : function (hours, minutes, isLower) {
13738            if (hours > 11) {
13739                return isLower ? 'd\'o' : 'D\'O';
13740            } else {
13741                return isLower ? 'd\'a' : 'D\'A';
13742            }
13743        },
13744        calendar : {
13745            sameDay : '[oxhi à] LT',
13746            nextDay : '[demà à] LT',
13747            nextWeek : 'dddd [à] LT',
13748            lastDay : '[ieiri à] LT',
13749            lastWeek : '[sür el] dddd [lasteu à] LT',
13750            sameElse : 'L'
13751        },
13752        relativeTime : {
13753            future : 'osprei %s',
13754            past : 'ja%s',
13755            s : processRelativeTime$7,
13756            ss : processRelativeTime$7,
13757            m : processRelativeTime$7,
13758            mm : processRelativeTime$7,
13759            h : processRelativeTime$7,
13760            hh : processRelativeTime$7,
13761            d : processRelativeTime$7,
13762            dd : processRelativeTime$7,
13763            M : processRelativeTime$7,
13764            MM : processRelativeTime$7,
13765            y : processRelativeTime$7,
13766            yy : processRelativeTime$7
13767        },
13768        dayOfMonthOrdinalParse: /\d{1,2}\./,
13769        ordinal : '%d.',
13770        week : {
13771            dow : 1, // Monday is the first day of the week.
13772            doy : 4  // The week that contains Jan 4th is the first week of the year.
13773        }
13774    });
13775
13776    function processRelativeTime$7(number, withoutSuffix, key, isFuture) {
13777        var format = {
13778            's': ['viensas secunds', '\'iensas secunds'],
13779            'ss': [number + ' secunds', '' + number + ' secunds'],
13780            'm': ['\'n míut', '\'iens míut'],
13781            'mm': [number + ' míuts', '' + number + ' míuts'],
13782            'h': ['\'n þora', '\'iensa þora'],
13783            'hh': [number + ' þoras', '' + number + ' þoras'],
13784            'd': ['\'n ziua', '\'iensa ziua'],
13785            'dd': [number + ' ziuas', '' + number + ' ziuas'],
13786            'M': ['\'n mes', '\'iens mes'],
13787            'MM': [number + ' mesen', '' + number + ' mesen'],
13788            'y': ['\'n ar', '\'iens ar'],
13789            'yy': [number + ' ars', '' + number + ' ars']
13790        };
13791        return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);
13792    }
13793
13794    //! moment.js locale configuration
13795
13796    hooks.defineLocale('tzm-latn', {
13797        months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
13798        monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
13799        weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
13800        weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
13801        weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
13802        longDateFormat : {
13803            LT : 'HH:mm',
13804            LTS : 'HH:mm:ss',
13805            L : 'DD/MM/YYYY',
13806            LL : 'D MMMM YYYY',
13807            LLL : 'D MMMM YYYY HH:mm',
13808            LLLL : 'dddd D MMMM YYYY HH:mm'
13809        },
13810        calendar : {
13811            sameDay: '[asdkh g] LT',
13812            nextDay: '[aska g] LT',
13813            nextWeek: 'dddd [g] LT',
13814            lastDay: '[assant g] LT',
13815            lastWeek: 'dddd [g] LT',
13816            sameElse: 'L'
13817        },
13818        relativeTime : {
13819            future : 'dadkh s yan %s',
13820            past : 'yan %s',
13821            s : 'imik',
13822            ss : '%d imik',
13823            m : 'minuḍ',
13824            mm : '%d minuḍ',
13825            h : 'saɛa',
13826            hh : '%d tassaɛin',
13827            d : 'ass',
13828            dd : '%d ossan',
13829            M : 'ayowr',
13830            MM : '%d iyyirn',
13831            y : 'asgas',
13832            yy : '%d isgasn'
13833        },
13834        week : {
13835            dow : 6, // Saturday is the first day of the week.
13836            doy : 12  // The week that contains Jan 12th is the first week of the year.
13837        }
13838    });
13839
13840    //! moment.js locale configuration
13841
13842    hooks.defineLocale('tzm', {
13843        months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
13844        monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
13845        weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
13846        weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
13847        weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
13848        longDateFormat : {
13849            LT : 'HH:mm',
13850            LTS: 'HH:mm:ss',
13851            L : 'DD/MM/YYYY',
13852            LL : 'D MMMM YYYY',
13853            LLL : 'D MMMM YYYY HH:mm',
13854            LLLL : 'dddd D MMMM YYYY HH:mm'
13855        },
13856        calendar : {
13857            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
13858            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
13859            nextWeek: 'dddd [â´´] LT',
13860            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
13861            lastWeek: 'dddd [â´´] LT',
13862            sameElse: 'L'
13863        },
13864        relativeTime : {
13865            future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
13866            past : 'ⵢⴰⵏ %s',
13867            s : 'ⵉⵎⵉⴽ',
13868            ss : '%d ⵉⵎⵉⴽ',
13869            m : 'ⵎⵉⵏⵓⴺ',
13870            mm : '%d ⵎⵉⵏⵓⴺ',
13871            h : 'ⵙⴰⵄⴰ',
13872            hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
13873            d : 'ⴰⵙⵙ',
13874            dd : '%d oⵙⵙⴰⵏ',
13875            M : 'ⴰⵢoⵓⵔ',
13876            MM : '%d ⵉⵢⵢⵉⵔⵏ',
13877            y : 'ⴰⵙⴳⴰⵙ',
13878            yy : '%d ⵉⵙⴳⴰⵙⵏ'
13879        },
13880        week : {
13881            dow : 6, // Saturday is the first day of the week.
13882            doy : 12  // The week that contains Jan 12th is the first week of the year.
13883        }
13884    });
13885
13886    //! moment.js language configuration
13887
13888    hooks.defineLocale('ug-cn', {
13889        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
13890            '_'
13891        ),
13892        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
13893            '_'
13894        ),
13895        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
13896            '_'
13897        ),
13898        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
13899        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
13900        longDateFormat: {
13901            LT: 'HH:mm',
13902            LTS: 'HH:mm:ss',
13903            L: 'YYYY-MM-DD',
13904            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
vendor: 18,019 bytes, lines 13905-14384
13905            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
13906            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'
13907        },
13908        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
13909        meridiemHour: function (hour, meridiem) {
13910            if (hour === 12) {
13911                hour = 0;
13912            }
13913            if (
13914                meridiem === 'يېرىم كېچە' ||
13915                meridiem === 'سەھەر' ||
13916                meridiem === 'چۈشتىن بۇرۇن'
13917            ) {
13918                return hour;
13919            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
13920                return hour + 12;
13921            } else {
13922                return hour >= 11 ? hour : hour + 12;
13923            }
13924        },
13925        meridiem: function (hour, minute, isLower) {
13926            var hm = hour * 100 + minute;
13927            if (hm < 600) {
13928                return 'يېرىم كېچە';
13929            } else if (hm < 900) {
13930                return 'سەھەر';
13931            } else if (hm < 1130) {
13932                return 'چۈشتىن بۇرۇن';
13933            } else if (hm < 1230) {
13934                return 'چۈش';
13935            } else if (hm < 1800) {
13936                return 'چۈشتىن كېيىن';
13937            } else {
13938                return 'كەچ';
13939            }
13940        },
13941        calendar: {
13942            sameDay: '[بۈگۈن سائەت] LT',
13943            nextDay: '[ئەتە سائەت] LT',
13944            nextWeek: '[كېلەركى] dddd [سائەت] LT',
13945            lastDay: '[تۆنۈگۈن] LT',
13946            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
13947            sameElse: 'L'
13948        },
13949        relativeTime: {
13950            future: '%s كېيىن',
13951            past: '%s بۇرۇن',
13952            s: 'نەچچە سېكونت',
13953            ss: '%d سېكونت',
13954            m: 'بىر مىنۇت',
13955            mm: '%d مىنۇت',
13956            h: 'بىر سائەت',
13957            hh: '%d سائەت',
13958            d: 'بىر كۈن',
13959            dd: '%d كۈن',
13960            M: 'بىر ئاي',
13961            MM: '%d ئاي',
13962            y: 'بىر يىل',
13963            yy: '%d يىل'
13964        },
13965
13966        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
13967        ordinal: function (number, period) {
13968            switch (period) {
13969                case 'd':
13970                case 'D':
13971                case 'DDD':
13972                    return number + '-كۈنى';
13973                case 'w':
13974                case 'W':
13975                    return number + '-ھەپتە';
13976                default:
13977                    return number;
13978            }
13979        },
13980        preparse: function (string) {
13981            return string.replace(/،/g, ',');
13982        },
13983        postformat: function (string) {
13984            return string.replace(/,/g, '،');
13985        },
13986        week: {
13987            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
13988            dow: 1, // Monday is the first day of the week.
13989            doy: 7 // The week that contains Jan 1st is the first week of the year.
13990        }
13991    });
13992
13993    //! moment.js locale configuration
13994
13995    function plural$6(word, num) {
13996        var forms = word.split('_');
13997        return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
13998    }
13999    function relativeTimeWithPlural$4(number, withoutSuffix, key) {
14000        var format = {
14001            'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
14002            'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
14003            'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
14004            'dd': 'день_дні_днів',
14005            'MM': 'місяць_місяці_місяців',
14006            'yy': 'рік_роки_років'
14007        };
14008        if (key === 'm') {
14009            return withoutSuffix ? 'хвилина' : 'хвилину';
14010        }
14011        else if (key === 'h') {
14012            return withoutSuffix ? 'година' : 'годину';
14013        }
14014        else {
14015            return number + ' ' + plural$6(format[key], +number);
14016        }
14017    }
14018    function weekdaysCaseReplace(m, format) {
14019        var weekdays = {
14020            'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
14021            'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
14022            'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
14023        };
14024
14025        if (m === true) {
14026            return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));
14027        }
14028        if (!m) {
14029            return weekdays['nominative'];
14030        }
14031
14032        var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
14033            'accusative' :
14034            ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
14035                'genitive' :
14036                'nominative');
14037        return weekdays[nounCase][m.day()];
14038    }
14039    function processHoursFunction(str) {
14040        return function () {
14041            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
14042        };
14043    }
14044
14045    hooks.defineLocale('uk', {
14046        months : {
14047            'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),
14048            'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')
14049        },
14050        monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
14051        weekdays : weekdaysCaseReplace,
14052        weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
14053        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
14054        longDateFormat : {
14055            LT : 'HH:mm',
14056            LTS : 'HH:mm:ss',
14057            L : 'DD.MM.YYYY',
14058            LL : 'D MMMM YYYY р.',
14059            LLL : 'D MMMM YYYY р., HH:mm',
14060            LLLL : 'dddd, D MMMM YYYY р., HH:mm'
14061        },
14062        calendar : {
14063            sameDay: processHoursFunction('[Сьогодні '),
14064            nextDay: processHoursFunction('[Завтра '),
14065            lastDay: processHoursFunction('[Вчора '),
14066            nextWeek: processHoursFunction('[У] dddd ['),
14067            lastWeek: function () {
14068                switch (this.day()) {
14069                    case 0:
14070                    case 3:
14071                    case 5:
14072                    case 6:
14073                        return processHoursFunction('[Минулої] dddd [').call(this);
14074                    case 1:
14075                    case 2:
14076                    case 4:
14077                        return processHoursFunction('[Минулого] dddd [').call(this);
14078                }
14079            },
14080            sameElse: 'L'
14081        },
14082        relativeTime : {
14083            future : 'за %s',
14084            past : '%s тому',
14085            s : 'декілька секунд',
14086            ss : relativeTimeWithPlural$4,
14087            m : relativeTimeWithPlural$4,
14088            mm : relativeTimeWithPlural$4,
14089            h : 'годину',
14090            hh : relativeTimeWithPlural$4,
14091            d : 'день',
14092            dd : relativeTimeWithPlural$4,
14093            M : 'місяць',
14094            MM : relativeTimeWithPlural$4,
14095            y : 'рік',
14096            yy : relativeTimeWithPlural$4
14097        },
14098        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
14099        meridiemParse: /ночі|ранку|дня|вечора/,
14100        isPM: function (input) {
14101            return /^(дня|вечора)$/.test(input);
14102        },
14103        meridiem : function (hour, minute, isLower) {
14104            if (hour < 4) {
14105                return 'ночі';
14106            } else if (hour < 12) {
14107                return 'ранку';
14108            } else if (hour < 17) {
14109                return 'дня';
14110            } else {
14111                return 'вечора';
14112            }
14113        },
14114        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
14115        ordinal: function (number, period) {
14116            switch (period) {
14117                case 'M':
14118                case 'd':
14119                case 'DDD':
14120                case 'w':
14121                case 'W':
14122                    return number + '-й';
14123                case 'D':
14124                    return number + '-го';
14125                default:
14126                    return number;
14127            }
14128        },
14129        week : {
14130            dow : 1, // Monday is the first day of the week.
14131            doy : 7  // The week that contains Jan 7th is the first week of the year.
14132        }
14133    });
14134
14135    //! moment.js locale configuration
14136
14137    var months$a = [
14138        'جنوری',
14139        'فروری',
14140        'مارچ',
14141        'اپریل',
14142        'مئی',
14143        'جون',
14144        'جولائی',
14145        'اگست',
14146        'ستمبر',
14147        'اکتوبر',
14148        'نومبر',
14149        'دسمبر'
14150    ];
14151    var days$2 = [
14152        'اتوار',
14153        'پیر',
14154        'منگل',
14155        'بدھ',
14156        'جمعرات',
14157        'جمعہ',
14158        'ہفتہ'
14159    ];
14160
14161    hooks.defineLocale('ur', {
14162        months : months$a,
14163        monthsShort : months$a,
14164        weekdays : days$2,
14165        weekdaysShort : days$2,
14166        weekdaysMin : days$2,
14167        longDateFormat : {
14168            LT : 'HH:mm',
14169            LTS : 'HH:mm:ss',
14170            L : 'DD/MM/YYYY',
14171            LL : 'D MMMM YYYY',
14172            LLL : 'D MMMM YYYY HH:mm',
14173            LLLL : 'dddd، D MMMM YYYY HH:mm'
14174        },
14175        meridiemParse: /صبح|شام/,
14176        isPM : function (input) {
14177            return 'شام' === input;
14178        },
14179        meridiem : function (hour, minute, isLower) {
14180            if (hour < 12) {
14181                return 'صبح';
14182            }
14183            return 'شام';
14184        },
14185        calendar : {
14186            sameDay : '[آج بوقت] LT',
14187            nextDay : '[کل بوقت] LT',
14188            nextWeek : 'dddd [بوقت] LT',
14189            lastDay : '[گذشتہ روز بوقت] LT',
14190            lastWeek : '[گذشتہ] dddd [بوقت] LT',
14191            sameElse : 'L'
14192        },
14193        relativeTime : {
14194            future : '%s بعد',
14195            past : '%s قبل',
14196            s : 'چند سیکنڈ',
14197            ss : '%d سیکنڈ',
14198            m : 'ایک منٹ',
14199            mm : '%d منٹ',
14200            h : 'ایک گھنٹہ',
14201            hh : '%d گھنٹے',
14202            d : 'ایک دن',
14203            dd : '%d دن',
14204            M : 'ایک ماہ',
14205            MM : '%d ماہ',
14206            y : 'ایک سال',
14207            yy : '%d سال'
14208        },
14209        preparse: function (string) {
14210            return string.replace(/،/g, ',');
14211        },
14212        postformat: function (string) {
14213            return string.replace(/,/g, '،');
14214        },
14215        week : {
14216            dow : 1, // Monday is the first day of the week.
14217            doy : 4  // The week that contains Jan 4th is the first week of the year.
14218        }
14219    });
14220
14221    //! moment.js locale configuration
14222
14223    hooks.defineLocale('uz-latn', {
14224        months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),
14225        monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
14226        weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),
14227        weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
14228        weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
14229        longDateFormat : {
14230            LT : 'HH:mm',
14231            LTS : 'HH:mm:ss',
14232            L : 'DD/MM/YYYY',
14233            LL : 'D MMMM YYYY',
14234            LLL : 'D MMMM YYYY HH:mm',
14235            LLLL : 'D MMMM YYYY, dddd HH:mm'
14236        },
14237        calendar : {
14238            sameDay : '[Bugun soat] LT [da]',
14239            nextDay : '[Ertaga] LT [da]',
14240            nextWeek : 'dddd [kuni soat] LT [da]',
14241            lastDay : '[Kecha soat] LT [da]',
14242            lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]',
14243            sameElse : 'L'
14244        },
14245        relativeTime : {
14246            future : 'Yaqin %s ichida',
14247            past : 'Bir necha %s oldin',
14248            s : 'soniya',
14249            ss : '%d soniya',
14250            m : 'bir daqiqa',
14251            mm : '%d daqiqa',
14252            h : 'bir soat',
14253            hh : '%d soat',
14254            d : 'bir kun',
14255            dd : '%d kun',
14256            M : 'bir oy',
14257            MM : '%d oy',
14258            y : 'bir yil',
14259            yy : '%d yil'
14260        },
14261        week : {
14262            dow : 1, // Monday is the first day of the week.
14263            doy : 7  // The week that contains Jan 7th is the first week of the year.
14264        }
14265    });
14266
14267    //! moment.js locale configuration
14268
14269    hooks.defineLocale('uz', {
14270        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
14271        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
14272        weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
14273        weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
14274        weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
14275        longDateFormat : {
14276            LT : 'HH:mm',
14277            LTS : 'HH:mm:ss',
14278            L : 'DD/MM/YYYY',
14279            LL : 'D MMMM YYYY',
14280            LLL : 'D MMMM YYYY HH:mm',
14281            LLLL : 'D MMMM YYYY, dddd HH:mm'
14282        },
14283        calendar : {
14284            sameDay : '[Бугун соат] LT [да]',
14285            nextDay : '[Эртага] LT [да]',
14286            nextWeek : 'dddd [куни соат] LT [да]',
14287            lastDay : '[Кеча соат] LT [да]',
14288            lastWeek : '[Утган] dddd [куни соат] LT [да]',
14289            sameElse : 'L'
14290        },
14291        relativeTime : {
14292            future : 'Якин %s ичида',
14293            past : 'Бир неча %s олдин',
14294            s : 'фурсат',
14295            ss : '%d фурсат',
14296            m : 'бир дакика',
14297            mm : '%d дакика',
14298            h : 'бир соат',
14299            hh : '%d соат',
14300            d : 'бир кун',
14301            dd : '%d кун',
14302            M : 'бир ой',
14303            MM : '%d ой',
14304            y : 'бир йил',
14305            yy : '%d йил'
14306        },
14307        week : {
14308            dow : 1, // Monday is the first day of the week.
14309            doy : 7  // The week that contains Jan 4th is the first week of the year.
14310        }
14311    });
14312
14313    //! moment.js locale configuration
14314
14315    hooks.defineLocale('vi', {
14316        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('_'),
14317        monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
14318        monthsParseExact : true,
14319        weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
14320        weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
14321        weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
14322        weekdaysParseExact : true,
14323        meridiemParse: /sa|ch/i,
14324        isPM : function (input) {
14325            return /^ch$/i.test(input);
14326        },
14327        meridiem : function (hours, minutes, isLower) {
14328            if (hours < 12) {
14329                return isLower ? 'sa' : 'SA';
14330            } else {
14331                return isLower ? 'ch' : 'CH';
14332            }
14333        },
14334        longDateFormat : {
14335            LT : 'HH:mm',
14336            LTS : 'HH:mm:ss',
14337            L : 'DD/MM/YYYY',
14338            LL : 'D MMMM [năm] YYYY',
14339            LLL : 'D MMMM [năm] YYYY HH:mm',
14340            LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',
14341            l : 'DD/M/YYYY',
14342            ll : 'D MMM YYYY',
14343            lll : 'D MMM YYYY HH:mm',
14344            llll : 'ddd, D MMM YYYY HH:mm'
14345        },
14346        calendar : {
14347            sameDay: '[Hôm nay lúc] LT',
14348            nextDay: '[Ngày mai lúc] LT',
14349            nextWeek: 'dddd [tuần tới lúc] LT',
14350            lastDay: '[Hôm qua lúc] LT',
14351            lastWeek: 'dddd [tuần rồi lúc] LT',
14352            sameElse: 'L'
14353        },
14354        relativeTime : {
14355            future : '%s tới',
14356            past : '%s trước',
14357            s : 'vài giây',
14358            ss : '%d giây' ,
14359            m : 'một phút',
14360            mm : '%d phút',
14361            h : 'một giờ',
14362            hh : '%d giờ',
14363            d : 'một ngày',
14364            dd : '%d ngày',
14365            M : 'một tháng',
14366            MM : '%d tháng',
14367            y : 'một năm',
14368            yy : '%d năm'
14369        },
14370        dayOfMonthOrdinalParse: /\d{1,2}/,
14371        ordinal : function (number) {
14372            return number;
14373        },
14374        week : {
14375            dow : 1, // Monday is the first day of the week.
14376            doy : 4  // The week that contains Jan 4th is the first week of the year.
14377        }
14378    });
14379
14380    //! moment.js locale configuration
14381
14382    hooks.defineLocale('x-pseudo', {
14383        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('_'),
14384        monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.
14384split('_'),
14385        monthsParseExact : true,
14386        weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),
14387        weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
14388        weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
14389        weekdaysParseExact : true,
14390        longDateFormat : {
14391            LT : 'HH:mm',
14392            L : 'DD/MM/YYYY',
14393            LL : 'D MMMM YYYY',
14394            LLL : 'D MMMM YYYY HH:mm',
14395            LLLL : 'dddd, D MMMM YYYY HH:mm'
14396        },
14397        calendar : {
14398            sameDay : '[T~ódá~ý át] LT',
14399            nextDay : '[T~ómó~rró~w át] LT',
14400            nextWeek : 'dddd [át] LT',
14401            lastDay : '[Ý~ést~érdá~ý át] LT',
14402            lastWeek : '[L~ást] dddd [át] LT',
14403            sameElse : 'L'
14404        },
14405        relativeTime : {
14406            future : 'í~ñ %s',
14407            past : '%s á~gó',
14408            s : 'á ~féw ~sécó~ñds',
14409            ss : '%d s~écóñ~ds',
vendor: 12,785 bytes, lines 14410-14769
14410            m : 'á ~míñ~úté',
14411            mm : '%d m~íñú~tés',
14412            h : 'á~ñ hó~úr',
14413            hh : '%d h~óúrs',
14414            d : 'á ~dáý',
14415            dd : '%d d~áýs',
14416            M : 'á ~móñ~th',
14417            MM : '%d m~óñt~hs',
14418            y : 'á ~ýéár',
14419            yy : '%d ý~éárs'
14420        },
14421        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
14422        ordinal : function (number) {
14423            var b = number % 10,
14424                output = (~~(number % 100 / 10) === 1) ? 'th' :
14425                (b === 1) ? 'st' :
14426                (b === 2) ? 'nd' :
14427                (b === 3) ? 'rd' : 'th';
14428            return number + output;
14429        },
14430        week : {
14431            dow : 1, // Monday is the first day of the week.
14432            doy : 4  // The week that contains Jan 4th is the first week of the year.
14433        }
14434    });
14435
14436    //! moment.js locale configuration
14437
14438    hooks.defineLocale('yo', {
14439        months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),
14440        monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
14441        weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
14442        weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
14443        weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
14444        longDateFormat : {
14445            LT : 'h:mm A',
14446            LTS : 'h:mm:ss A',
14447            L : 'DD/MM/YYYY',
14448            LL : 'D MMMM YYYY',
14449            LLL : 'D MMMM YYYY h:mm A',
14450            LLLL : 'dddd, D MMMM YYYY h:mm A'
14451        },
14452        calendar : {
14453            sameDay : '[Ònì ni] LT',
14454            nextDay : '[Ọ̀la ni] LT',
14455            nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT',
14456            lastDay : '[Àna ni] LT',
14457            lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
14458            sameElse : 'L'
14459        },
14460        relativeTime : {
14461            future : 'ní %s',
14462            past : '%s kọjá',
14463            s : 'ìsẹjú aayá die',
14464            ss :'aayá %d',
14465            m : 'ìsẹjú kan',
14466            mm : 'ìsẹjú %d',
14467            h : 'wákati kan',
14468            hh : 'wákati %d',
14469            d : 'ọjọ́ kan',
14470            dd : 'ọjọ́ %d',
14471            M : 'osù kan',
14472            MM : 'osù %d',
14473            y : 'ọdún kan',
14474            yy : 'ọdún %d'
14475        },
14476        dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/,
14477        ordinal : 'ọjọ́ %d',
14478        week : {
14479            dow : 1, // Monday is the first day of the week.
14480            doy : 4 // The week that contains Jan 4th is the first week of the year.
14481        }
14482    });
14483
14484    //! moment.js locale configuration
14485
14486    hooks.defineLocale('zh-cn', {
14487        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14488        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
14489        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
14490        weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
14491        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
14492        longDateFormat : {
14493            LT : 'HH:mm',
14494            LTS : 'HH:mm:ss',
14495            L : 'YYYY/MM/DD',
14496            LL : 'YYYY年M月D日',
14497            LLL : 'YYYY年M月D日Ah点mm分',
14498            LLLL : 'YYYY年M月D日ddddAh点mm分',
14499            l : 'YYYY/M/D',
14500            ll : 'YYYY年M月D日',
14501            lll : 'YYYY年M月D日 HH:mm',
14502            llll : 'YYYY年M月D日dddd HH:mm'
14503        },
14504        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
14505        meridiemHour: function (hour, meridiem) {
14506            if (hour === 12) {
14507                hour = 0;
14508            }
14509            if (meridiem === '凌晨' || meridiem === '早上' ||
14510                    meridiem === '上午') {
14511                return hour;
14512            } else if (meridiem === '下午' || meridiem === '晚上') {
14513                return hour + 12;
14514            } else {
14515                // '中午'
14516                return hour >= 11 ? hour : hour + 12;
14517            }
14518        },
14519        meridiem : function (hour, minute, isLower) {
14520            var hm = hour * 100 + minute;
14521            if (hm < 600) {
14522                return '凌晨';
14523            } else if (hm < 900) {
14524                return '早上';
14525            } else if (hm < 1130) {
14526                return '上午';
14527            } else if (hm < 1230) {
14528                return '中午';
14529            } else if (hm < 1800) {
14530                return '下午';
14531            } else {
14532                return '晚上';
14533            }
14534        },
14535        calendar : {
14536            sameDay : '[今天]LT',
14537            nextDay : '[明天]LT',
14538            nextWeek : '[下]ddddLT',
14539            lastDay : '[昨天]LT',
14540            lastWeek : '[上]ddddLT',
14541            sameElse : 'L'
14542        },
14543        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
14544        ordinal : function (number, period) {
14545            switch (period) {
14546                case 'd':
14547                case 'D':
14548                case 'DDD':
14549                    return number + '日';
14550                case 'M':
14551                    return number + '月';
14552                case 'w':
14553                case 'W':
14554                    return number + '周';
14555                default:
14556                    return number;
14557            }
14558        },
14559        relativeTime : {
14560            future : '%s内',
14561            past : '%s前',
14562            s : '几秒',
14563            ss : '%d 秒',
14564            m : '1 分钟',
14565            mm : '%d 分钟',
14566            h : '1 小时',
14567            hh : '%d 小时',
14568            d : '1 天',
14569            dd : '%d 天',
14570            M : '1 个月',
14571            MM : '%d 个月',
14572            y : '1 å¹´',
14573            yy : '%d å¹´'
14574        },
14575        week : {
14576            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
14577            dow : 1, // Monday is the first day of the week.
14578            doy : 4  // The week that contains Jan 4th is the first week of the year.
14579        }
14580    });
14581
14582    //! moment.js locale configuration
14583
14584    hooks.defineLocale('zh-hk', {
14585        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14586        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
14587        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
14588        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
14589        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
14590        longDateFormat : {
14591            LT : 'HH:mm',
14592            LTS : 'HH:mm:ss',
14593            L : 'YYYY/MM/DD',
14594            LL : 'YYYY年M月D日',
14595            LLL : 'YYYY年M月D日 HH:mm',
14596            LLLL : 'YYYY年M月D日dddd HH:mm',
14597            l : 'YYYY/M/D',
14598            ll : 'YYYY年M月D日',
14599            lll : 'YYYY年M月D日 HH:mm',
14600            llll : 'YYYY年M月D日dddd HH:mm'
14601        },
14602        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
14603        meridiemHour : function (hour, meridiem) {
14604            if (hour === 12) {
14605                hour = 0;
14606            }
14607            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
14608                return hour;
14609            } else if (meridiem === '中午') {
14610                return hour >= 11 ? hour : hour + 12;
14611            } else if (meridiem === '下午' || meridiem === '晚上') {
14612                return hour + 12;
14613            }
14614        },
14615        meridiem : function (hour, minute, isLower) {
14616            var hm = hour * 100 + minute;
14617            if (hm < 600) {
14618                return '凌晨';
14619            } else if (hm < 900) {
14620                return '早上';
14621            } else if (hm < 1130) {
14622                return '上午';
14623            } else if (hm < 1230) {
14624                return '中午';
14625            } else if (hm < 1800) {
14626                return '下午';
14627            } else {
14628                return '晚上';
14629            }
14630        },
14631        calendar : {
14632            sameDay : '[今天]LT',
14633            nextDay : '[明天]LT',
14634            nextWeek : '[下]ddddLT',
14635            lastDay : '[昨天]LT',
14636            lastWeek : '[上]ddddLT',
14637            sameElse : 'L'
14638        },
14639        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
14640        ordinal : function (number, period) {
14641            switch (period) {
14642                case 'd' :
14643                case 'D' :
14644                case 'DDD' :
14645                    return number + '日';
14646                case 'M' :
14647                    return number + '月';
14648                case 'w' :
14649                case 'W' :
14650                    return number + '週';
14651                default :
14652                    return number;
14653            }
14654        },
14655        relativeTime : {
14656            future : '%s內',
14657            past : '%s前',
14658            s : '幾秒',
14659            ss : '%d 秒',
14660            m : '1 分鐘',
14661            mm : '%d 分鐘',
14662            h : '1 小時',
14663            hh : '%d 小時',
14664            d : '1 天',
14665            dd : '%d 天',
14666            M : '1 個月',
14667            MM : '%d 個月',
14668            y : '1 å¹´',
14669            yy : '%d å¹´'
14670        }
14671    });
14672
14673    //! moment.js locale configuration
14674
14675    // Manually fixed
14676    hooks.defineLocale('zh', {
14677        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14678        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
14679        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
14680        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
14681        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
14682        longDateFormat : {
14683            LT : 'HH:mm',
14684            LTS : 'HH:mm:ss',
14685            L : 'YYYY/MM/DD',
14686            LL : 'YYYY年M月D日',
14687            LLL : 'YYYY年M月D日 HH:mm',
14688            LLLL : 'YYYY年M月D日dddd HH:mm',
14689            l : 'YYYY/M/D',
14690            ll : 'YYYY年M月D日',
14691            lll : 'YYYY年M月D日 HH:mm',
14692            llll : 'YYYY年M月D日dddd HH:mm'
14693        },
14694        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
14695        meridiemHour : function (hour, meridiem) {
14696            if (hour === 12) {
14697                hour = 0;
14698            }
14699            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
14700                return hour;
14701            } else if (meridiem === '中午') {
14702                return hour >= 11 ? hour : hour + 12;
14703            } else if (meridiem === '下午' || meridiem === '晚上') {
14704                return hour + 12;
14705            }
14706        },
14707        meridiem : function (hour, minute, isLower) {
14708            var hm = hour * 100 + minute;
14709            if (hm < 600) {
14710                return '凌晨';
14711            } else if (hm < 900) {
14712                return '早上';
14713            } else if (hm < 1130) {
14714                return '上午';
14715            } else if (hm < 1230) {
14716                return '中午';
14717            } else if (hm < 1800) {
14718                return '下午';
14719            } else {
14720                return '晚上';
14721            }
14722        },
14723        calendar : {
14724            sameDay : '[今天] LT',
14725            nextDay : '[明天] LT',
14726            nextWeek : '[下]dddd LT',
14727            lastDay : '[昨天] LT',
14728            lastWeek : '[上]dddd LT',
14729            sameElse : 'L'
14730        },
14731        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
14732        ordinal : function (number, period) {
14733            switch (period) {
14734                case 'd' :
14735                case 'D' :
14736                case 'DDD' :
14737                    return number + '日';
14738                case 'M' :
14739                    return number + '月';
14740                case 'w' :
14741                case 'W' :
14742                    return number + '週';
14743                default :
14744                    return number;
14745            }
14746        },
14747        relativeTime : {
14748            future : '%s內',
14749            past : '%s前',
14750            s : '幾秒',
14751            ss : '%d 秒',
14752            m : '1 分鐘',
14753            mm : '%d 分鐘',
14754            h : '1 小時',
14755            hh : '%d 小時',
14756            d : '1 天',
14757            dd : '%d 天',
14758            M : '1 個月',
14759            MM : '%d 個月',
14760            y : '1 å¹´',
14761            yy : '%d å¹´'
14762        }
14763    });
14764
14765    hooks.locale('en');
14766
14767    return hooks;
14768
14769})));

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.