PageSourceSearch

https://www.coloriginz.com/_ui/responsive/common/js/moment-with-locales.js?v=1.1.4.13

js coloriginz.com collected 2026-10-08 14:54:56 UTC 561,783 bytes, 14,885 lines download raw bytes

vendor: 6,462 bytes, lines 1-220
1;(function (global, factory) {
2    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
3    typeof define === 'function' && define.amd ? define(factory) :
4    global.moment = factory()
5}(this, (function () { 'use strict';
6
7    var hookCallback;
8
9    function hooks () {
10        return hookCallback.apply(null, arguments);
11    }
12
13    // This is done to register the method called with moment()
14    // without creating circular dependencies.
15    function setHookCallback (callback) {
16        hookCallback = callback;
17    }
18
19    function isArray(input) {
20        return input instanceof Array || Object.prototype.toString.call(input) === '[object Array]';
21    }
22
23    function isObject(input) {
24        // IE8 will treat undefined and null as object if it wasn't for
25        // input != null
26        return input != null && Object.prototype.toString.call(input) === '[object Object]';
27    }
28
29    function isObjectEmpty(obj) {
30        if (Object.getOwnPropertyNames) {
31            return (Object.getOwnPropertyNames(obj).length === 0);
32        } else {
33            var k;
34            for (k in obj) {
35                if (obj.hasOwnProperty(k)) {
36                    return false;
37                }
38            }
39            return true;
40        }
41    }
42
43    function isUndefined(input) {
44        return input === void 0;
45    }
46
47    function isNumber(input) {
48        return typeof input === 'number' || Object.prototype.toString.call(input) === '[object Number]';
49    }
50
51    function isDate(input) {
52        return input instanceof Date || Object.prototype.toString.call(input) === '[object Date]';
53    }
54
55    function map(arr, fn) {
56        var res = [], i;
57        for (i = 0; i < arr.length; ++i) {
58            res.push(fn(arr[i], i));
59        }
60        return res;
61    }
62
63    function hasOwnProp(a, b) {
64        return Object.prototype.hasOwnProperty.call(a, b);
65    }
66
67    function extend(a, b) {
68        for (var i in b) {
69            if (hasOwnProp(b, i)) {
70                a[i] = b[i];
71            }
72        }
73
74        if (hasOwnProp(b, 'toString')) {
75            a.toString = b.toString;
76        }
77
78        if (hasOwnProp(b, 'valueOf')) {
79            a.valueOf = b.valueOf;
80        }
81
82        return a;
83    }
84
85    function createUTC (input, format, locale, strict) {
86        return createLocalOrUTC(input, format, locale, strict, true).utc();
87    }
88
89    function defaultParsingFlags() {
90        // We need to deep clone this object.
91        return {
92            empty           : false,
93            unusedTokens    : [],
94            unusedInput     : [],
95            overflow        : -2,
96            charsLeftOver   : 0,
97            nullInput       : false,
98            invalidMonth    : null,
99            invalidFormat   : false,
100            userInvalidated : false,
101            iso             : false,
102            parsedDateParts : [],
103            meridiem        : null,
104            rfc2822         : false,
105            weekdayMismatch : false
106        };
107    }
108
109    function getParsingFlags(m) {
110        if (m._pf == null) {
111            m._pf = defaultParsingFlags();
112        }
113        return m._pf;
114    }
115
116    var some;
117    if (Array.prototype.some) {
118        some = Array.prototype.some;
119    } else {
120        some = function (fun) {
121            var t = Object(this);
122            var len = t.length >>> 0;
123
124            for (var i = 0; i < len; i++) {
125                if (i in t && fun.call(this, t[i], i, t)) {
126                    return true;
127                }
128            }
129
130            return false;
131        };
132    }
133
134    function isValid(m) {
135        if (m._isValid == null) {
136            var flags = getParsingFlags(m);
137            var parsedParts = some.call(flags.parsedDateParts, function (i) {
138                return i != null;
139            });
140            var isNowValid = !isNaN(m._d.getTime()) &&
141                flags.overflow < 0 &&
142                !flags.empty &&
143                !flags.invalidMonth &&
144                !flags.invalidWeekday &&
145                !flags.weekdayMismatch &&
146                !flags.nullInput &&
147                !flags.invalidFormat &&
148                !flags.userInvalidated &&
149                (!flags.meridiem || (flags.meridiem && parsedParts));
150
151            if (m._strict) {
152                isNowValid = isNowValid &&
153                    flags.charsLeftOver === 0 &&
154                    flags.unusedTokens.length === 0 &&
155                    flags.bigHour === undefined;
156            }
157
158            if (Object.isFrozen == null || !Object.isFrozen(m)) {
159                m._isValid = isNowValid;
160            }
161            else {
162                return isNowValid;
163            }
164        }
165        return m._isValid;
166    }
167
168    function createInvalid (flags) {
169        var m = createUTC(NaN);
170        if (flags != null) {
171            extend(getParsingFlags(m), flags);
172        }
173        else {
174            getParsingFlags(m).userInvalidated = true;
175        }
176
177        return m;
178    }
179
180    // Plugins that add properties should also add the key here (null value),
181    // so we can properly clone ourselves.
182    var momentProperties = hooks.momentProperties = [];
183
184    function copyConfig(to, from) {
185        var i, prop, val;
186
187        if (!isUndefined(from._isAMomentObject)) {
188            to._isAMomentObject = from._isAMomentObject;
189        }
190        if (!isUndefined(from._i)) {
191            to._i = from._i;
192        }
193        if (!isUndefined(from._f)) {
194            to._f = from._f;
195        }
196        if (!isUndefined(from._l)) {
197            to._l = from._l;
198        }
199        if (!isUndefined(from._strict)) {
200            to._strict = from._strict;
201        }
202        if (!isUndefined(from._tzm)) {
203            to._tzm = from._tzm;
204        }
205        if (!isUndefined(from._isUTC)) {
206            to._isUTC = from._isUTC;
207        }
208        if (!isUndefined(from._offset)) {
209            to._offset = from._offset;
210        }
211        if (!isUndefined(from._pf)) {
212            to._pf = getParsingFlags(from);
213        }
214        if (!isUndefined(from._locale)) {
215            to._locale = from._locale;
216        }
217
218        if (momentProperties.length > 0) {
219            for (i = 0; i < momentProperties.length; i++) {
220                prop = momentProperties[i];
vendor: 30,950 bytes, lines 221-1164
221                val = from[prop];
222                if (!isUndefined(val)) {
223                    to[prop] = val;
224                }
225            }
226        }
227
228        return to;
229    }
230
231    var updateInProgress = false;
232
233    // Moment prototype object
234    function Moment(config) {
235        copyConfig(this, config);
236        this._d = new Date(config._d != null ? config._d.getTime() : NaN);
237        if (!this.isValid()) {
238            this._d = new Date(NaN);
239        }
240        // Prevent infinite loop in case updateOffset creates new moment
241        // objects.
242        if (updateInProgress === false) {
243            updateInProgress = true;
244            hooks.updateOffset(this);
245            updateInProgress = false;
246        }
247    }
248
249    function isMoment (obj) {
250        return obj instanceof Moment || (obj != null && obj._isAMomentObject != null);
251    }
252
253    function absFloor (number) {
254        if (number < 0) {
255            // -0 -> 0
256            return Math.ceil(number) || 0;
257        } else {
258            return Math.floor(number);
259        }
260    }
261
262    function toInt(argumentForCoercion) {
263        var coercedNumber = +argumentForCoercion,
264            value = 0;
265
266        if (coercedNumber !== 0 && isFinite(coercedNumber)) {
267            value = absFloor(coercedNumber);
268        }
269
270        return value;
271    }
272
273    // compare two arrays, return the number of differences
274    function compareArrays(array1, array2, dontConvert) {
275        var len = Math.min(array1.length, array2.length),
276            lengthDiff = Math.abs(array1.length - array2.length),
277            diffs = 0,
278            i;
279        for (i = 0; i < len; i++) {
280            if ((dontConvert && array1[i] !== array2[i]) ||
281                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))) {
282                diffs++;
283            }
284        }
285        return diffs + lengthDiff;
286    }
287
288    function warn(msg) {
289        if (hooks.suppressDeprecationWarnings === false &&
290                (typeof console !==  'undefined') && console.warn) {
291            console.warn('Deprecation warning: ' + msg);
292        }
293    }
294
295    function deprecate(msg, fn) {
296        var firstTime = true;
297
298        return extend(function () {
299            if (hooks.deprecationHandler != null) {
300                hooks.deprecationHandler(null, msg);
301            }
302            if (firstTime) {
303                var args = [];
304                var arg;
305                for (var i = 0; i < arguments.length; i++) {
306                    arg = '';
307                    if (typeof arguments[i] === 'object') {
308                        arg += '\n[' + i + '] ';
309                        for (var key in arguments[0]) {
310                            arg += key + ': ' + arguments[0][key] + ', ';
311                        }
312                        arg = arg.slice(0, -2); // Remove trailing comma and space
313                    } else {
314                        arg = arguments[i];
315                    }
316                    args.push(arg);
317                }
318                warn(msg + '\nArguments: ' + Array.prototype.slice.call(args).join('') + '\n' + (new Error()).stack);
319                firstTime = false;
320            }
321            return fn.apply(this, arguments);
322        }, fn);
323    }
324
325    var deprecations = {};
326
327    function deprecateSimple(name, msg) {
328        if (hooks.deprecationHandler != null) {
329            hooks.deprecationHandler(name, msg);
330        }
331        if (!deprecations[name]) {
332            warn(msg);
333            deprecations[name] = true;
334        }
335    }
336
337    hooks.suppressDeprecationWarnings = false;
338    hooks.deprecationHandler = null;
339
340    function isFunction(input) {
341        return input instanceof Function || Object.prototype.toString.call(input) === '[object Function]';
342    }
343
344    function set (config) {
345        var prop, i;
346        for (i in config) {
347            prop = config[i];
348            if (isFunction(prop)) {
349                this[i] = prop;
350            } else {
351                this['_' + i] = prop;
352            }
353        }
354        this._config = config;
355        // Lenient ordinal parsing accepts just a number in addition to
356        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.
357        // TODO: Remove "ordinalParse" fallback in next major release.
358        this._dayOfMonthOrdinalParseLenient = new RegExp(
359            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +
360                '|' + (/\d{1,2}/).source);
361    }
362
363    function mergeConfigs(parentConfig, childConfig) {
364        var res = extend({}, parentConfig), prop;
365        for (prop in childConfig) {
366            if (hasOwnProp(childConfig, prop)) {
367                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {
368                    res[prop] = {};
369                    extend(res[prop], parentConfig[prop]);
370                    extend(res[prop], childConfig[prop]);
371                } else if (childConfig[prop] != null) {
372                    res[prop] = childConfig[prop];
373                } else {
374                    delete res[prop];
375                }
376            }
377        }
378        for (prop in parentConfig) {
379            if (hasOwnProp(parentConfig, prop) &&
380                    !hasOwnProp(childConfig, prop) &&
381                    isObject(parentConfig[prop])) {
382                // make sure changes to properties don't modify parent config
383                res[prop] = extend({}, res[prop]);
384            }
385        }
386        return res;
387    }
388
389    function Locale(config) {
390        if (config != null) {
391            this.set(config);
392        }
393    }
394
395    var keys;
396
397    if (Object.keys) {
398        keys = Object.keys;
399    } else {
400        keys = function (obj) {
401            var i, res = [];
402            for (i in obj) {
403                if (hasOwnProp(obj, i)) {
404                    res.push(i);
405                }
406            }
407            return res;
408        };
409    }
410
411    var defaultCalendar = {
412        sameDay : '[Today at] LT',
413        nextDay : '[Tomorrow at] LT',
414        nextWeek : 'dddd [at] LT',
415        lastDay : '[Yesterday at] LT',
416        lastWeek : '[Last] dddd [at] LT',
417        sameElse : 'L'
418    };
419
420    function calendar (key, mom, now) {
421        var output = this._calendar[key] || this._calendar['sameElse'];
422        return isFunction(output) ? output.call(mom, now) : output;
423    }
424
425    var defaultLongDateFormat = {
426        LTS  : 'h:mm:ss A',
427        LT   : 'h:mm A',
428        L    : 'MM/DD/YYYY',
429        LL   : 'MMMM D, YYYY',
430        LLL  : 'MMMM D, YYYY h:mm A',
431        LLLL : 'dddd, MMMM D, YYYY h:mm A'
432    };
433
434    function longDateFormat (key) {
435        var format = this._longDateFormat[key],
436            formatUpper = this._longDateFormat[key.toUpperCase()];
437
438        if (format || !formatUpper) {
439            return format;
440        }
441
442        this._longDateFormat[key] = formatUpper.replace(/MMMM|MM|DD|dddd/g, function (val) {
443            return val.slice(1);
444        });
445
446        return this._longDateFormat[key];
447    }
448
449    var defaultInvalidDate = 'Invalid date';
450
451    function invalidDate () {
452        return this._invalidDate;
453    }
454
455    var defaultOrdinal = '%d';
456    var defaultDayOfMonthOrdinalParse = /\d{1,2}/;
457
458    function ordinal (number) {
459        return this._ordinal.replace('%d', number);
460    }
461
462    var defaultRelativeTime = {
463        future : 'in %s',
464        past   : '%s ago',
465        s  : 'a few seconds',
466        ss : '%d seconds',
467        m  : 'a minute',
468        mm : '%d minutes',
469        h  : 'an hour',
470        hh : '%d hours',
471        d  : 'a day',
472        dd : '%d days',
473        M  : 'a month',
474        MM : '%d months',
475        y  : 'a year',
476        yy : '%d years'
477    };
478
479    function relativeTime (number, withoutSuffix, string, isFuture) {
480        var output = this._relativeTime[string];
481        return (isFunction(output)) ?
482            output(number, withoutSuffix, string, isFuture) :
483            output.replace(/%d/i, number);
484    }
485
486    function pastFuture (diff, output) {
487        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];
488        return isFunction(format) ? format(output) : format.replace(/%s/i, output);
489    }
490
491    var aliases = {};
492
493    function addUnitAlias (unit, shorthand) {
494        var lowerCase = unit.toLowerCase();
495        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;
496    }
497
498    function normalizeUnits(units) {
499        return typeof units === 'string' ? aliases[units] || aliases[units.toLowerCase()] : undefined;
500    }
501
502    function normalizeObjectUnits(inputObject) {
503        var normalizedInput = {},
504            normalizedProp,
505            prop;
506
507        for (prop in inputObject) {
508            if (hasOwnProp(inputObject, prop)) {
509                normalizedProp = normalizeUnits(prop);
510                if (normalizedProp) {
511                    normalizedInput[normalizedProp] = inputObject[prop];
512                }
513            }
514        }
515
516        return normalizedInput;
517    }
518
519    var priorities = {};
520
521    function addUnitPriority(unit, priority) {
522        priorities[unit] = priority;
523    }
524
525    function getPrioritizedUnits(unitsObj) {
526        var units = [];
527        for (var u in unitsObj) {
528            units.push({unit: u, priority: priorities[u]});
529        }
530        units.sort(function (a, b) {
531            return a.priority - b.priority;
532        });
533        return units;
534    }
535
536    function zeroFill(number, targetLength, forceSign) {
537        var absNumber = '' + Math.abs(number),
538            zerosToFill = targetLength - absNumber.length,
539            sign = number >= 0;
540        return (sign ? (forceSign ? '+' : '') : '-') +
541            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) + absNumber;
542    }
543
544    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;
545
546    var localFormattingTokens = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g;
547
548    var formatFunctions = {};
549
550    var formatTokenFunctions = {};
551
552    // token:    'M'
553    // padded:   ['MM', 2]
554    // ordinal:  'Mo'
555    // callback: function () { this.month() + 1 }
556    function addFormatToken (token, padded, ordinal, callback) {
557        var func = callback;
558        if (typeof callback === 'string') {
559            func = function () {
560                return this[callback]();
561            };
562        }
563        if (token) {
564            formatTokenFunctions[token] = func;
565        }
566        if (padded) {
567            formatTokenFunctions[padded[0]] = function () {
568                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);
569            };
570        }
571        if (ordinal) {
572            formatTokenFunctions[ordinal] = function () {
573                return this.localeData().ordinal(func.apply(this, arguments), token);
574            };
575        }
576    }
577
578    function removeFormattingTokens(input) {
579        if (input.match(/\[[\s\S]/)) {
580            return input.replace(/^\[|\]$/g, '');
581        }
582        return input.replace(/\\/g, '');
583    }
584
585    function makeFormatFunction(format) {
586        var array = format.match(formattingTokens), i, length;
587
588        for (i = 0, length = array.length; i < length; i++) {
589            if (formatTokenFunctions[array[i]]) {
590                array[i] = formatTokenFunctions[array[i]];
591            } else {
592                array[i] = removeFormattingTokens(array[i]);
593            }
594        }
595
596        return function (mom) {
597            var output = '', i;
598            for (i = 0; i < length; i++) {
599                output += isFunction(array[i]) ? array[i].call(mom, format) : array[i];
600            }
601            return output;
602        };
603    }
604
605    // format date using native date object
606    function formatMoment(m, format) {
607        if (!m.isValid()) {
608            return m.localeData().invalidDate();
609        }
610
611        format = expandFormat(format, m.localeData());
612        formatFunctions[format] = formatFunctions[format] || makeFormatFunction(format);
613
614        return formatFunctions[format](m);
615    }
616
617    function expandFormat(format, locale) {
618        var i = 5;
619
620        function replaceLongDateFormatTokens(input) {
621            return locale.longDateFormat(input) || input;
622        }
623
624        localFormattingTokens.lastIndex = 0;
625        while (i >= 0 && localFormattingTokens.test(format)) {
626            format = format.replace(localFormattingTokens, replaceLongDateFormatTokens);
627            localFormattingTokens.lastIndex = 0;
628            i -= 1;
629        }
630
631        return format;
632    }
633
634    var match1         = /\d/;            //       0 - 9
635    var match2         = /\d\d/;          //      00 - 99
636    var match3         = /\d{3}/;         //     000 - 999
637    var match4         = /\d{4}/;         //    0000 - 9999
638    var match6         = /[+-]?\d{6}/;    // -999999 - 999999
639    var match1to2      = /\d\d?/;         //       0 - 99
640    var match3to4      = /\d\d\d\d?/;     //     999 - 9999
641    var match5to6      = /\d\d\d\d\d\d?/; //   99999 - 999999
642    var match1to3      = /\d{1,3}/;       //       0 - 999
643    var match1to4      = /\d{1,4}/;       //       0 - 9999
644    var match1to6      = /[+-]?\d{1,6}/;  // -999999 - 999999
645
646    var matchUnsigned  = /\d+/;           //       0 - inf
647    var matchSigned    = /[+-]?\d+/;      //    -inf - inf
648
649    var matchOffset    = /Z|[+-]\d\d:?\d\d/gi; // +00:00 -00:00 +0000 -0000 or Z
650    var matchShortOffset = /Z|[+-]\d\d(?::?\d\d)?/gi; // +00 -00 +00:00 -00:00 +0000 -0000 or Z
651
652    var matchTimestamp = /[+-]?\d+(\.\d{1,3})?/; // 123456789 123456789.123
653
654    // any word (or two) characters or numbers including two/three word month in arabic.
655    // includes scottish gaelic two word and hyphenated months
656    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;
657
658    var regexes = {};
659
660    function addRegexToken (token, regex, strictRegex) {
661        regexes[token] = isFunction(regex) ? regex : function (isStrict, localeData) {
662            return (isStrict && strictRegex) ? strictRegex : regex;
663        };
664    }
665
666    function getParseRegexForToken (token, config) {
667        if (!hasOwnProp(regexes, token)) {
668            return new RegExp(unescapeFormat(token));
669        }
670
671        return regexes[token](config._strict, config._locale);
672    }
673
674    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
675    function unescapeFormat(s) {
676        return regexEscape(s.replace('\\', '').replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function (matched, p1, p2, p3, p4) {
677            return p1 || p2 || p3 || p4;
678        }));
679    }
680
681    function regexEscape(s) {
682        return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
683    }
684
685    var tokens = {};
686
687    function addParseToken (token, callback) {
688        var i, func = callback;
689        if (typeof token === 'string') {
690            token = [token];
691        }
692        if (isNumber(callback)) {
693            func = function (input, array) {
694                array[callback] = toInt(input);
695            };
696        }
697        for (i = 0; i < token.length; i++) {
698            tokens[token[i]] = func;
699        }
700    }
701
702    function addWeekParseToken (token, callback) {
703        addParseToken(token, function (input, array, config, token) {
704            config._w = config._w || {};
705            callback(input, config._w, config, token);
706        });
707    }
708
709    function addTimeToArrayFromToken(token, input, config) {
710        if (input != null && hasOwnProp(tokens, token)) {
711            tokens[token](input, config._a, config, token);
712        }
713    }
714
715    var YEAR = 0;
716    var MONTH = 1;
717    var DATE = 2;
718    var HOUR = 3;
719    var MINUTE = 4;
720    var SECOND = 5;
721    var MILLISECOND = 6;
722    var WEEK = 7;
723    var WEEKDAY = 8;
724
725    // FORMATTING
726
727    addFormatToken('Y', 0, 0, function () {
728        var y = this.year();
729        return y <= 9999 ? '' + y : '+' + y;
730    });
731
732    addFormatToken(0, ['YY', 2], 0, function () {
733        return this.year() % 100;
734    });
735
736    addFormatToken(0, ['YYYY',   4],       0, 'year');
737    addFormatToken(0, ['YYYYY',  5],       0, 'year');
738    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');
739
740    // ALIASES
741
742    addUnitAlias('year', 'y');
743
744    // PRIORITIES
745
746    addUnitPriority('year', 1);
747
748    // PARSING
749
750    addRegexToken('Y',      matchSigned);
751    addRegexToken('YY',     match1to2, match2);
752    addRegexToken('YYYY',   match1to4, match4);
753    addRegexToken('YYYYY',  match1to6, match6);
754    addRegexToken('YYYYYY', match1to6, match6);
755
756    addParseToken(['YYYYY', 'YYYYYY'], YEAR);
757    addParseToken('YYYY', function (input, array) {
758        array[YEAR] = input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);
759    });
760    addParseToken('YY', function (input, array) {
761        array[YEAR] = hooks.parseTwoDigitYear(input);
762    });
763    addParseToken('Y', function (input, array) {
764        array[YEAR] = parseInt(input, 10);
765    });
766
767    // HELPERS
768
769    function daysInYear(year) {
770        return isLeapYear(year) ? 366 : 365;
771    }
772
773    function isLeapYear(year) {
774        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;
775    }
776
777    // HOOKS
778
779    hooks.parseTwoDigitYear = function (input) {
780        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);
781    };
782
783    // MOMENTS
784
785    var getSetYear = makeGetSet('FullYear', true);
786
787    function getIsLeapYear () {
788        return isLeapYear(this.year());
789    }
790
791    function makeGetSet (unit, keepTime) {
792        return function (value) {
793            if (value != null) {
794                set$1(this, unit, value);
795                hooks.updateOffset(this, keepTime);
796                return this;
797            } else {
798                return get(this, unit);
799            }
800        };
801    }
802
803    function get (mom, unit) {
804        return mom.isValid() ?
805            mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]() : NaN;
806    }
807
808    function set$1 (mom, unit, value) {
809        if (mom.isValid() && !isNaN(value)) {
810            if (unit === 'FullYear' && isLeapYear(mom.year()) && mom.month() === 1 && mom.date() === 29) {
811                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value, mom.month(), daysInMonth(value, mom.month()));
812            }
813            else {
814                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);
815            }
816        }
817    }
818
819    // MOMENTS
820
821    function stringGet (units) {
822        units = normalizeUnits(units);
823        if (isFunction(this[units])) {
824            return this[units]();
825        }
826        return this;
827    }
828
829
830    function stringSet (units, value) {
831        if (typeof units === 'object') {
832            units = normalizeObjectUnits(units);
833            var prioritized = getPrioritizedUnits(units);
834            for (var i = 0; i < prioritized.length; i++) {
835                this[prioritized[i].unit](units[prioritized[i].unit]);
836            }
837        } else {
838            units = normalizeUnits(units);
839            if (isFunction(this[units])) {
840                return this[units](value);
841            }
842        }
843        return this;
844    }
845
846    function mod(n, x) {
847        return ((n % x) + x) % x;
848    }
849
850    var indexOf;
851
852    if (Array.prototype.indexOf) {
853        indexOf = Array.prototype.indexOf;
854    } else {
855        indexOf = function (o) {
856            // I know
857            var i;
858            for (i = 0; i < this.length; ++i) {
859                if (this[i] === o) {
860                    return i;
861                }
862            }
863            return -1;
864        };
865    }
866
867    function daysInMonth(year, month) {
868        if (isNaN(year) || isNaN(month)) {
869            return NaN;
870        }
871        var modMonth = mod(month, 12);
872        year += (month - modMonth) / 12;
873        return modMonth === 1 ? (isLeapYear(year) ? 29 : 28) : (31 - modMonth % 7 % 2);
874    }
875
876    // FORMATTING
877
878    addFormatToken('M', ['MM', 2], 'Mo', function () {
879        return this.month() + 1;
880    });
881
882    addFormatToken('MMM', 0, 0, function (format) {
883        return this.localeData().monthsShort(this, format);
884    });
885
886    addFormatToken('MMMM', 0, 0, function (format) {
887        return this.localeData().months(this, format);
888    });
889
890    // ALIASES
891
892    addUnitAlias('month', 'M');
893
894    // PRIORITY
895
896    addUnitPriority('month', 8);
897
898    // PARSING
899
900    addRegexToken('M',    match1to2);
901    addRegexToken('MM',   match1to2, match2);
902    addRegexToken('MMM',  function (isStrict, locale) {
903        return locale.monthsShortRegex(isStrict);
904    });
905    addRegexToken('MMMM', function (isStrict, locale) {
906        return locale.monthsRegex(isStrict);
907    });
908
909    addParseToken(['M', 'MM'], function (input, array) {
910        array[MONTH] = toInt(input) - 1;
911    });
912
913    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {
914        var month = config._locale.monthsParse(input, token, config._strict);
915        // if we didn't find a month name, mark the date as invalid.
916        if (month != null) {
917            array[MONTH] = month;
918        } else {
919            getParsingFlags(config).invalidMonth = input;
920        }
921    });
922
923    // LOCALES
924
925    var MONTHS_IN_FORMAT = /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/;
926    var defaultLocaleMonths = 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_');
927    function localeMonths (m, format) {
928        if (!m) {
929            return isArray(this._months) ? this._months :
930                this._months['standalone'];
931        }
932        return isArray(this._months) ? this._months[m.month()] :
933            this._months[(this._months.isFormat || MONTHS_IN_FORMAT).test(format) ? 'format' : 'standalone'][m.month()];
934    }
935
936    var defaultLocaleMonthsShort = 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_');
937    function localeMonthsShort (m, format) {
938        if (!m) {
939            return isArray(this._monthsShort) ? this._monthsShort :
940                this._monthsShort['standalone'];
941        }
942        return isArray(this._monthsShort) ? this._monthsShort[m.month()] :
943            this._monthsShort[MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'][m.month()];
944    }
945
946    function handleStrictParse(monthName, format, strict) {
947        var i, ii, mom, llc = monthName.toLocaleLowerCase();
948        if (!this._monthsParse) {
949            // this is not used
950            this._monthsParse = [];
951            this._longMonthsParse = [];
952            this._shortMonthsParse = [];
953            for (i = 0; i < 12; ++i) {
954                mom = createUTC([2000, i]);
955                this._shortMonthsParse[i] = this.monthsShort(mom, '').toLocaleLowerCase();
956                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();
957            }
958        }
959
960        if (strict) {
961            if (format === 'MMM') {
962                ii = indexOf.call(this._shortMonthsParse, llc);
963                return ii !== -1 ? ii : null;
964            } else {
965                ii = indexOf.call(this._longMonthsParse, llc);
966                return ii !== -1 ? ii : null;
967            }
968        } else {
969            if (format === 'MMM') {
970                ii = indexOf.call(this._shortMonthsParse, llc);
971                if (ii !== -1) {
972                    return ii;
973                }
974                ii = indexOf.call(this._longMonthsParse, llc);
975                return ii !== -1 ? ii : null;
976            } else {
977                ii = indexOf.call(this._longMonthsParse, llc);
978                if (ii !== -1) {
979                    return ii;
980                }
981                ii = indexOf.call(this._shortMonthsParse, llc);
982                return ii !== -1 ? ii : null;
983            }
984        }
985    }
986
987    function localeMonthsParse (monthName, format, strict) {
988        var i, mom, regex;
989
990        if (this._monthsParseExact) {
991            return handleStrictParse.call(this, monthName, format, strict);
992        }
993
994        if (!this._monthsParse) {
995            this._monthsParse = [];
996            this._longMonthsParse = [];
997            this._shortMonthsParse = [];
998        }
999
1000        // TODO: add sorting
1001        // Sorting makes sure if one month (or abbr) is a prefix of another
1002        // see sorting in computeMonthsParse
1003        for (i = 0; i < 12; i++) {
1004            // make the regex if we don't have it already
1005            mom = createUTC([2000, i]);
1006            if (strict && !this._longMonthsParse[i]) {
1007                this._longMonthsParse[i] = new RegExp('^' + this.months(mom, '').replace('.', '') + '$', 'i');
1008                this._shortMonthsParse[i] = new RegExp('^' + this.monthsShort(mom, '').replace('.', '') + '$', 'i');
1009            }
1010            if (!strict && !this._monthsParse[i]) {
1011                regex = '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');
1012                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');
1013            }
1014            // test the regex
1015            if (strict && format === 'MMMM' && this._longMonthsParse[i].test(monthName)) {
1016                return i;
1017            } else if (strict && format === 'MMM' && this._shortMonthsParse[i].test(monthName)) {
1018                return i;
1019            } else if (!strict && this._monthsParse[i].test(monthName)) {
1020                return i;
1021            }
1022        }
1023    }
1024
1025    // MOMENTS
1026
1027    function setMonth (mom, value) {
1028        var dayOfMonth;
1029
1030        if (!mom.isValid()) {
1031            // No op
1032            return mom;
1033        }
1034
1035        if (typeof value === 'string') {
1036            if (/^\d+$/.test(value)) {
1037                value = toInt(value);
1038            } else {
1039                value = mom.localeData().monthsParse(value);
1040                // TODO: Another silent failure?
1041                if (!isNumber(value)) {
1042                    return mom;
1043                }
1044            }
1045        }
1046
1047        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));
1048        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);
1049        return mom;
1050    }
1051
1052    function getSetMonth (value) {
1053        if (value != null) {
1054            setMonth(this, value);
1055            hooks.updateOffset(this, true);
1056            return this;
1057        } else {
1058            return get(this, 'Month');
1059        }
1060    }
1061
1062    function getDaysInMonth () {
1063        return daysInMonth(this.year(), this.month());
1064    }
1065
1066    var defaultMonthsShortRegex = matchWord;
1067    function monthsShortRegex (isStrict) {
1068        if (this._monthsParseExact) {
1069            if (!hasOwnProp(this, '_monthsRegex')) {
1070                computeMonthsParse.call(this);
1071            }
1072            if (isStrict) {
1073                return this._monthsShortStrictRegex;
1074            } else {
1075                return this._monthsShortRegex;
1076            }
1077        } else {
1078            if (!hasOwnProp(this, '_monthsShortRegex')) {
1079                this._monthsShortRegex = defaultMonthsShortRegex;
1080            }
1081            return this._monthsShortStrictRegex && isStrict ?
1082                this._monthsShortStrictRegex : this._monthsShortRegex;
1083        }
1084    }
1085
1086    var defaultMonthsRegex = matchWord;
1087    function monthsRegex (isStrict) {
1088        if (this._monthsParseExact) {
1089            if (!hasOwnProp(this, '_monthsRegex')) {
1090                computeMonthsParse.call(this);
1091            }
1092            if (isStrict) {
1093                return this._monthsStrictRegex;
1094            } else {
1095                return this._monthsRegex;
1096            }
1097        } else {
1098            if (!hasOwnProp(this, '_monthsRegex')) {
1099                this._monthsRegex = defaultMonthsRegex;
1100            }
1101            return this._monthsStrictRegex && isStrict ?
1102                this._monthsStrictRegex : this._monthsRegex;
1103        }
1104    }
1105
1106    function computeMonthsParse () {
1107        function cmpLenRev(a, b) {
1108            return b.length - a.length;
1109        }
1110
1111        var shortPieces = [], longPieces = [], mixedPieces = [],
1112            i, mom;
1113        for (i = 0; i < 12; i++) {
1114            // make the regex if we don't have it already
1115            mom = createUTC([2000, i]);
1116            shortPieces.push(this.monthsShort(mom, ''));
1117            longPieces.push(this.months(mom, ''));
1118            mixedPieces.push(this.months(mom, ''));
1119            mixedPieces.push(this.monthsShort(mom, ''));
1120        }
1121        // Sorting makes sure if one month (or abbr) is a prefix of another it
1122        // will match the longer piece.
1123        shortPieces.sort(cmpLenRev);
1124        longPieces.sort(cmpLenRev);
1125        mixedPieces.sort(cmpLenRev);
1126        for (i = 0; i < 12; i++) {
1127            shortPieces[i] = regexEscape(shortPieces[i]);
1128            longPieces[i] = regexEscape(longPieces[i]);
1129        }
1130        for (i = 0; i < 24; i++) {
1131            mixedPieces[i] = regexEscape(mixedPieces[i]);
1132        }
1133
1134        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1135        this._monthsShortRegex = this._monthsRegex;
1136        this._monthsStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1137        this._monthsShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1138    }
1139
1140    function createDate (y, m, d, h, M, s, ms) {
1141        // can't just apply() to create a date:
1142        // https://stackoverflow.com/q/181348
1143        var date;
1144        // the date constructor remaps years 0-99 to 1900-1999
1145        if (y < 100 && y >= 0) {
1146            // preserve leap years using a full 400 year cycle, then reset
1147            date = new Date(y + 400, m, d, h, M, s, ms);
1148            if (isFinite(date.getFullYear())) {
1149                date.setFullYear(y);
1150            }
1151        } else {
1152            date = new Date(y, m, d, h, M, s, ms);
1153        }
1154
1155        return date;
1156    }
1157
1158    function createUTCDate (y) {
1159        var date;
1160        // the Date.UTC function remaps years 0-99 to 1900-1999
1161        if (y < 100 && y >= 0) {
1162            var args = Array.prototype.slice.call(arguments);
1163            // preserve leap years using a full 400 year cycle, then reset
1164            args[0] = y + 400;
vendor: 3,028 bytes, lines 1165-1259
1165            date = new Date(Date.UTC.apply(null, args));
1166            if (isFinite(date.getUTCFullYear())) {
1167                date.setUTCFullYear(y);
1168            }
1169        } else {
1170            date = new Date(Date.UTC.apply(null, arguments));
1171        }
1172
1173        return date;
1174    }
1175
1176    // start-of-first-week - start-of-year
1177    function firstWeekOffset(year, dow, doy) {
1178        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
1179            fwd = 7 + dow - doy,
1180            // first-week day local weekday -- which local weekday is fwd
1181            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;
1182
1183        return -fwdlw + fwd - 1;
1184    }
1185
1186    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
1187    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {
1188        var localWeekday = (7 + weekday - dow) % 7,
1189            weekOffset = firstWeekOffset(year, dow, doy),
1190            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,
1191            resYear, resDayOfYear;
1192
1193        if (dayOfYear <= 0) {
1194            resYear = year - 1;
1195            resDayOfYear = daysInYear(resYear) + dayOfYear;
1196        } else if (dayOfYear > daysInYear(year)) {
1197            resYear = year + 1;
1198            resDayOfYear = dayOfYear - daysInYear(year);
1199        } else {
1200            resYear = year;
1201            resDayOfYear = dayOfYear;
1202        }
1203
1204        return {
1205            year: resYear,
1206            dayOfYear: resDayOfYear
1207        };
1208    }
1209
1210    function weekOfYear(mom, dow, doy) {
1211        var weekOffset = firstWeekOffset(mom.year(), dow, doy),
1212            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,
1213            resWeek, resYear;
1214
1215        if (week < 1) {
1216            resYear = mom.year() - 1;
1217            resWeek = week + weeksInYear(resYear, dow, doy);
1218        } else if (week > weeksInYear(mom.year(), dow, doy)) {
1219            resWeek = week - weeksInYear(mom.year(), dow, doy);
1220            resYear = mom.year() + 1;
1221        } else {
1222            resYear = mom.year();
1223            resWeek = week;
1224        }
1225
1226        return {
1227            week: resWeek,
1228            year: resYear
1229        };
1230    }
1231
1232    function weeksInYear(year, dow, doy) {
1233        var weekOffset = firstWeekOffset(year, dow, doy),
1234            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);
1235        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;
1236    }
1237
1238    // FORMATTING
1239
1240    addFormatToken('w', ['ww', 2], 'wo', 'week');
1241    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');
1242
1243    // ALIASES
1244
1245    addUnitAlias('week', 'w');
1246    addUnitAlias('isoWeek', 'W');
1247
1248    // PRIORITIES
1249
1250    addUnitPriority('week', 5);
1251    addUnitPriority('isoWeek', 5);
1252
1253    // PARSING
1254
1255    addRegexToken('w',  match1to2);
1256    addRegexToken('ww', match1to2, match2);
1257    addRegexToken('W',  match1to2);
1258    addRegexToken('WW', match1to2, match2);
1259
vendor: 82,263 bytes, lines 1260-3599
1260    addWeekParseToken(['w', 'ww', 'W', 'WW'], function (input, week, config, token) {
1261        week[token.substr(0, 1)] = toInt(input);
1262    });
1263
1264    // HELPERS
1265
1266    // LOCALES
1267
1268    function localeWeek (mom) {
1269        return weekOfYear(mom, this._week.dow, this._week.doy).week;
1270    }
1271
1272    var defaultLocaleWeek = {
1273        dow : 0, // Sunday is the first day of the week.
1274        doy : 6  // The week that contains Jan 6th is the first week of the year.
1275    };
1276
1277    function localeFirstDayOfWeek () {
1278        return this._week.dow;
1279    }
1280
1281    function localeFirstDayOfYear () {
1282        return this._week.doy;
1283    }
1284
1285    // MOMENTS
1286
1287    function getSetWeek (input) {
1288        var week = this.localeData().week(this);
1289        return input == null ? week : this.add((input - week) * 7, 'd');
1290    }
1291
1292    function getSetISOWeek (input) {
1293        var week = weekOfYear(this, 1, 4).week;
1294        return input == null ? week : this.add((input - week) * 7, 'd');
1295    }
1296
1297    // FORMATTING
1298
1299    addFormatToken('d', 0, 'do', 'day');
1300
1301    addFormatToken('dd', 0, 0, function (format) {
1302        return this.localeData().weekdaysMin(this, format);
1303    });
1304
1305    addFormatToken('ddd', 0, 0, function (format) {
1306        return this.localeData().weekdaysShort(this, format);
1307    });
1308
1309    addFormatToken('dddd', 0, 0, function (format) {
1310        return this.localeData().weekdays(this, format);
1311    });
1312
1313    addFormatToken('e', 0, 0, 'weekday');
1314    addFormatToken('E', 0, 0, 'isoWeekday');
1315
1316    // ALIASES
1317
1318    addUnitAlias('day', 'd');
1319    addUnitAlias('weekday', 'e');
1320    addUnitAlias('isoWeekday', 'E');
1321
1322    // PRIORITY
1323    addUnitPriority('day', 11);
1324    addUnitPriority('weekday', 11);
1325    addUnitPriority('isoWeekday', 11);
1326
1327    // PARSING
1328
1329    addRegexToken('d',    match1to2);
1330    addRegexToken('e',    match1to2);
1331    addRegexToken('E',    match1to2);
1332    addRegexToken('dd',   function (isStrict, locale) {
1333        return locale.weekdaysMinRegex(isStrict);
1334    });
1335    addRegexToken('ddd',   function (isStrict, locale) {
1336        return locale.weekdaysShortRegex(isStrict);
1337    });
1338    addRegexToken('dddd',   function (isStrict, locale) {
1339        return locale.weekdaysRegex(isStrict);
1340    });
1341
1342    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {
1343        var weekday = config._locale.weekdaysParse(input, token, config._strict);
1344        // if we didn't get a weekday name, mark the date as invalid
1345        if (weekday != null) {
1346            week.d = weekday;
1347        } else {
1348            getParsingFlags(config).invalidWeekday = input;
1349        }
1350    });
1351
1352    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {
1353        week[token] = toInt(input);
1354    });
1355
1356    // HELPERS
1357
1358    function parseWeekday(input, locale) {
1359        if (typeof input !== 'string') {
1360            return input;
1361        }
1362
1363        if (!isNaN(input)) {
1364            return parseInt(input, 10);
1365        }
1366
1367        input = locale.weekdaysParse(input);
1368        if (typeof input === 'number') {
1369            return input;
1370        }
1371
1372        return null;
1373    }
1374
1375    function parseIsoWeekday(input, locale) {
1376        if (typeof input === 'string') {
1377            return locale.weekdaysParse(input) % 7 || 7;
1378        }
1379        return isNaN(input) ? null : input;
1380    }
1381
1382    // LOCALES
1383    function shiftWeekdays (ws, n) {
1384        return ws.slice(n, 7).concat(ws.slice(0, n));
1385    }
1386
1387    var defaultLocaleWeekdays = 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_');
1388    function localeWeekdays (m, format) {
1389        var weekdays = isArray(this._weekdays) ? this._weekdays :
1390            this._weekdays[(m && m !== true && this._weekdays.isFormat.test(format)) ? 'format' : 'standalone'];
1391        return (m === true) ? shiftWeekdays(weekdays, this._week.dow)
1392            : (m) ? weekdays[m.day()] : weekdays;
1393    }
1394
1395    var defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_');
1396    function localeWeekdaysShort (m) {
1397        return (m === true) ? shiftWeekdays(this._weekdaysShort, this._week.dow)
1398            : (m) ? this._weekdaysShort[m.day()] : this._weekdaysShort;
1399    }
1400
1401    var defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_');
1402    function localeWeekdaysMin (m) {
1403        return (m === true) ? shiftWeekdays(this._weekdaysMin, this._week.dow)
1404            : (m) ? this._weekdaysMin[m.day()] : this._weekdaysMin;
1405    }
1406
1407    function handleStrictParse$1(weekdayName, format, strict) {
1408        var i, ii, mom, llc = weekdayName.toLocaleLowerCase();
1409        if (!this._weekdaysParse) {
1410            this._weekdaysParse = [];
1411            this._shortWeekdaysParse = [];
1412            this._minWeekdaysParse = [];
1413
1414            for (i = 0; i < 7; ++i) {
1415                mom = createUTC([2000, 1]).day(i);
1416                this._minWeekdaysParse[i] = this.weekdaysMin(mom, '').toLocaleLowerCase();
1417                this._shortWeekdaysParse[i] = this.weekdaysShort(mom, '').toLocaleLowerCase();
1418                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();
1419            }
1420        }
1421
1422        if (strict) {
1423            if (format === 'dddd') {
1424                ii = indexOf.call(this._weekdaysParse, llc);
1425                return ii !== -1 ? ii : null;
1426            } else if (format === 'ddd') {
1427                ii = indexOf.call(this._shortWeekdaysParse, llc);
1428                return ii !== -1 ? ii : null;
1429            } else {
1430                ii = indexOf.call(this._minWeekdaysParse, llc);
1431                return ii !== -1 ? ii : null;
1432            }
1433        } else {
1434            if (format === 'dddd') {
1435                ii = indexOf.call(this._weekdaysParse, llc);
1436                if (ii !== -1) {
1437                    return ii;
1438                }
1439                ii = indexOf.call(this._shortWeekdaysParse, llc);
1440                if (ii !== -1) {
1441                    return ii;
1442                }
1443                ii = indexOf.call(this._minWeekdaysParse, llc);
1444                return ii !== -1 ? ii : null;
1445            } else if (format === 'ddd') {
1446                ii = indexOf.call(this._shortWeekdaysParse, llc);
1447                if (ii !== -1) {
1448                    return ii;
1449                }
1450                ii = indexOf.call(this._weekdaysParse, llc);
1451                if (ii !== -1) {
1452                    return ii;
1453                }
1454                ii = indexOf.call(this._minWeekdaysParse, llc);
1455                return ii !== -1 ? ii : null;
1456            } else {
1457                ii = indexOf.call(this._minWeekdaysParse, llc);
1458                if (ii !== -1) {
1459                    return ii;
1460                }
1461                ii = indexOf.call(this._weekdaysParse, llc);
1462                if (ii !== -1) {
1463                    return ii;
1464                }
1465                ii = indexOf.call(this._shortWeekdaysParse, llc);
1466                return ii !== -1 ? ii : null;
1467            }
1468        }
1469    }
1470
1471    function localeWeekdaysParse (weekdayName, format, strict) {
1472        var i, mom, regex;
1473
1474        if (this._weekdaysParseExact) {
1475            return handleStrictParse$1.call(this, weekdayName, format, strict);
1476        }
1477
1478        if (!this._weekdaysParse) {
1479            this._weekdaysParse = [];
1480            this._minWeekdaysParse = [];
1481            this._shortWeekdaysParse = [];
1482            this._fullWeekdaysParse = [];
1483        }
1484
1485        for (i = 0; i < 7; i++) {
1486            // make the regex if we don't have it already
1487
1488            mom = createUTC([2000, 1]).day(i);
1489            if (strict && !this._fullWeekdaysParse[i]) {
1490                this._fullWeekdaysParse[i] = new RegExp('^' + this.weekdays(mom, '').replace('.', '\\.?') + '$', 'i');
1491                this._shortWeekdaysParse[i] = new RegExp('^' + this.weekdaysShort(mom, '').replace('.', '\\.?') + '$', 'i');
1492                this._minWeekdaysParse[i] = new RegExp('^' + this.weekdaysMin(mom, '').replace('.', '\\.?') + '$', 'i');
1493            }
1494            if (!this._weekdaysParse[i]) {
1495                regex = '^' + this.weekdays(mom, '') + '|^' + this.weekdaysShort(mom, '') + '|^' + this.weekdaysMin(mom, '');
1496                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');
1497            }
1498            // test the regex
1499            if (strict && format === 'dddd' && this._fullWeekdaysParse[i].test(weekdayName)) {
1500                return i;
1501            } else if (strict && format === 'ddd' && this._shortWeekdaysParse[i].test(weekdayName)) {
1502                return i;
1503            } else if (strict && format === 'dd' && this._minWeekdaysParse[i].test(weekdayName)) {
1504                return i;
1505            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {
1506                return i;
1507            }
1508        }
1509    }
1510
1511    // MOMENTS
1512
1513    function getSetDayOfWeek (input) {
1514        if (!this.isValid()) {
1515            return input != null ? this : NaN;
1516        }
1517        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
1518        if (input != null) {
1519            input = parseWeekday(input, this.localeData());
1520            return this.add(input - day, 'd');
1521        } else {
1522            return day;
1523        }
1524    }
1525
1526    function getSetLocaleDayOfWeek (input) {
1527        if (!this.isValid()) {
1528            return input != null ? this : NaN;
1529        }
1530        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;
1531        return input == null ? weekday : this.add(input - weekday, 'd');
1532    }
1533
1534    function getSetISODayOfWeek (input) {
1535        if (!this.isValid()) {
1536            return input != null ? this : NaN;
1537        }
1538
1539        // behaves the same as moment#day except
1540        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
1541        // as a setter, sunday should belong to the previous week.
1542
1543        if (input != null) {
1544            var weekday = parseIsoWeekday(input, this.localeData());
1545            return this.day(this.day() % 7 ? weekday : weekday - 7);
1546        } else {
1547            return this.day() || 7;
1548        }
1549    }
1550
1551    var defaultWeekdaysRegex = matchWord;
1552    function weekdaysRegex (isStrict) {
1553        if (this._weekdaysParseExact) {
1554            if (!hasOwnProp(this, '_weekdaysRegex')) {
1555                computeWeekdaysParse.call(this);
1556            }
1557            if (isStrict) {
1558                return this._weekdaysStrictRegex;
1559            } else {
1560                return this._weekdaysRegex;
1561            }
1562        } else {
1563            if (!hasOwnProp(this, '_weekdaysRegex')) {
1564                this._weekdaysRegex = defaultWeekdaysRegex;
1565            }
1566            return this._weekdaysStrictRegex && isStrict ?
1567                this._weekdaysStrictRegex : this._weekdaysRegex;
1568        }
1569    }
1570
1571    var defaultWeekdaysShortRegex = matchWord;
1572    function weekdaysShortRegex (isStrict) {
1573        if (this._weekdaysParseExact) {
1574            if (!hasOwnProp(this, '_weekdaysRegex')) {
1575                computeWeekdaysParse.call(this);
1576            }
1577            if (isStrict) {
1578                return this._weekdaysShortStrictRegex;
1579            } else {
1580                return this._weekdaysShortRegex;
1581            }
1582        } else {
1583            if (!hasOwnProp(this, '_weekdaysShortRegex')) {
1584                this._weekdaysShortRegex = defaultWeekdaysShortRegex;
1585            }
1586            return this._weekdaysShortStrictRegex && isStrict ?
1587                this._weekdaysShortStrictRegex : this._weekdaysShortRegex;
1588        }
1589    }
1590
1591    var defaultWeekdaysMinRegex = matchWord;
1592    function weekdaysMinRegex (isStrict) {
1593        if (this._weekdaysParseExact) {
1594            if (!hasOwnProp(this, '_weekdaysRegex')) {
1595                computeWeekdaysParse.call(this);
1596            }
1597            if (isStrict) {
1598                return this._weekdaysMinStrictRegex;
1599            } else {
1600                return this._weekdaysMinRegex;
1601            }
1602        } else {
1603            if (!hasOwnProp(this, '_weekdaysMinRegex')) {
1604                this._weekdaysMinRegex = defaultWeekdaysMinRegex;
1605            }
1606            return this._weekdaysMinStrictRegex && isStrict ?
1607                this._weekdaysMinStrictRegex : this._weekdaysMinRegex;
1608        }
1609    }
1610
1611
1612    function computeWeekdaysParse () {
1613        function cmpLenRev(a, b) {
1614            return b.length - a.length;
1615        }
1616
1617        var minPieces = [], shortPieces = [], longPieces = [], mixedPieces = [],
1618            i, mom, minp, shortp, longp;
1619        for (i = 0; i < 7; i++) {
1620            // make the regex if we don't have it already
1621            mom = createUTC([2000, 1]).day(i);
1622            minp = this.weekdaysMin(mom, '');
1623            shortp = this.weekdaysShort(mom, '');
1624            longp = this.weekdays(mom, '');
1625            minPieces.push(minp);
1626            shortPieces.push(shortp);
1627            longPieces.push(longp);
1628            mixedPieces.push(minp);
1629            mixedPieces.push(shortp);
1630            mixedPieces.push(longp);
1631        }
1632        // Sorting makes sure if one weekday (or abbr) is a prefix of another it
1633        // will match the longer piece.
1634        minPieces.sort(cmpLenRev);
1635        shortPieces.sort(cmpLenRev);
1636        longPieces.sort(cmpLenRev);
1637        mixedPieces.sort(cmpLenRev);
1638        for (i = 0; i < 7; i++) {
1639            shortPieces[i] = regexEscape(shortPieces[i]);
1640            longPieces[i] = regexEscape(longPieces[i]);
1641            mixedPieces[i] = regexEscape(mixedPieces[i]);
1642        }
1643
1644        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');
1645        this._weekdaysShortRegex = this._weekdaysRegex;
1646        this._weekdaysMinRegex = this._weekdaysRegex;
1647
1648        this._weekdaysStrictRegex = new RegExp('^(' + longPieces.join('|') + ')', 'i');
1649        this._weekdaysShortStrictRegex = new RegExp('^(' + shortPieces.join('|') + ')', 'i');
1650        this._weekdaysMinStrictRegex = new RegExp('^(' + minPieces.join('|') + ')', 'i');
1651    }
1652
1653    // FORMATTING
1654
1655    function hFormat() {
1656        return this.hours() % 12 || 12;
1657    }
1658
1659    function kFormat() {
1660        return this.hours() || 24;
1661    }
1662
1663    addFormatToken('H', ['HH', 2], 0, 'hour');
1664    addFormatToken('h', ['hh', 2], 0, hFormat);
1665    addFormatToken('k', ['kk', 2], 0, kFormat);
1666
1667    addFormatToken('hmm', 0, 0, function () {
1668        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);
1669    });
1670
1671    addFormatToken('hmmss', 0, 0, function () {
1672        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2) +
1673            zeroFill(this.seconds(), 2);
1674    });
1675
1676    addFormatToken('Hmm', 0, 0, function () {
1677        return '' + this.hours() + zeroFill(this.minutes(), 2);
1678    });
1679
1680    addFormatToken('Hmmss', 0, 0, function () {
1681        return '' + this.hours() + zeroFill(this.minutes(), 2) +
1682            zeroFill(this.seconds(), 2);
1683    });
1684
1685    function meridiem (token, lowercase) {
1686        addFormatToken(token, 0, 0, function () {
1687            return this.localeData().meridiem(this.hours(), this.minutes(), lowercase);
1688        });
1689    }
1690
1691    meridiem('a', true);
1692    meridiem('A', false);
1693
1694    // ALIASES
1695
1696    addUnitAlias('hour', 'h');
1697
1698    // PRIORITY
1699    addUnitPriority('hour', 13);
1700
1701    // PARSING
1702
1703    function matchMeridiem (isStrict, locale) {
1704        return locale._meridiemParse;
1705    }
1706
1707    addRegexToken('a',  matchMeridiem);
1708    addRegexToken('A',  matchMeridiem);
1709    addRegexToken('H',  match1to2);
1710    addRegexToken('h',  match1to2);
1711    addRegexToken('k',  match1to2);
1712    addRegexToken('HH', match1to2, match2);
1713    addRegexToken('hh', match1to2, match2);
1714    addRegexToken('kk', match1to2, match2);
1715
1716    addRegexToken('hmm', match3to4);
1717    addRegexToken('hmmss', match5to6);
1718    addRegexToken('Hmm', match3to4);
1719    addRegexToken('Hmmss', match5to6);
1720
1721    addParseToken(['H', 'HH'], HOUR);
1722    addParseToken(['k', 'kk'], function (input, array, config) {
1723        var kInput = toInt(input);
1724        array[HOUR] = kInput === 24 ? 0 : kInput;
1725    });
1726    addParseToken(['a', 'A'], function (input, array, config) {
1727        config._isPm = config._locale.isPM(input);
1728        config._meridiem = input;
1729    });
1730    addParseToken(['h', 'hh'], function (input, array, config) {
1731        array[HOUR] = toInt(input);
1732        getParsingFlags(config).bigHour = true;
1733    });
1734    addParseToken('hmm', function (input, array, config) {
1735        var pos = input.length - 2;
1736        array[HOUR] = toInt(input.substr(0, pos));
1737        array[MINUTE] = toInt(input.substr(pos));
1738        getParsingFlags(config).bigHour = true;
1739    });
1740    addParseToken('hmmss', function (input, array, config) {
1741        var pos1 = input.length - 4;
1742        var pos2 = input.length - 2;
1743        array[HOUR] = toInt(input.substr(0, pos1));
1744        array[MINUTE] = toInt(input.substr(pos1, 2));
1745        array[SECOND] = toInt(input.substr(pos2));
1746        getParsingFlags(config).bigHour = true;
1747    });
1748    addParseToken('Hmm', function (input, array, config) {
1749        var pos = input.length - 2;
1750        array[HOUR] = toInt(input.substr(0, pos));
1751        array[MINUTE] = toInt(input.substr(pos));
1752    });
1753    addParseToken('Hmmss', function (input, array, config) {
1754        var pos1 = input.length - 4;
1755        var pos2 = input.length - 2;
1756        array[HOUR] = toInt(input.substr(0, pos1));
1757        array[MINUTE] = toInt(input.substr(pos1, 2));
1758        array[SECOND] = toInt(input.substr(pos2));
1759    });
1760
1761    // LOCALES
1762
1763    function localeIsPM (input) {
1764        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
1765        // Using charAt should be more compatible.
1766        return ((input + '').toLowerCase().charAt(0) === 'p');
1767    }
1768
1769    var defaultLocaleMeridiemParse = /[ap]\.?m?\.?/i;
1770    function localeMeridiem (hours, minutes, isLower) {
1771        if (hours > 11) {
1772            return isLower ? 'pm' : 'PM';
1773        } else {
1774            return isLower ? 'am' : 'AM';
1775        }
1776    }
1777
1778
1779    // MOMENTS
1780
1781    // Setting the hour should keep the time, because the user explicitly
1782    // specified which hour they want. So trying to maintain the same hour (in
1783    // a new timezone) makes sense. Adding/subtracting hours does not follow
1784    // this rule.
1785    var getSetHour = makeGetSet('Hours', true);
1786
1787    var baseConfig = {
1788        calendar: defaultCalendar,
1789        longDateFormat: defaultLongDateFormat,
1790        invalidDate: defaultInvalidDate,
1791        ordinal: defaultOrdinal,
1792        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,
1793        relativeTime: defaultRelativeTime,
1794
1795        months: defaultLocaleMonths,
1796        monthsShort: defaultLocaleMonthsShort,
1797
1798        week: defaultLocaleWeek,
1799
1800        weekdays: defaultLocaleWeekdays,
1801        weekdaysMin: defaultLocaleWeekdaysMin,
1802        weekdaysShort: defaultLocaleWeekdaysShort,
1803
1804        meridiemParse: defaultLocaleMeridiemParse
1805    };
1806
1807    // internal storage for locale config files
1808    var locales = {};
1809    var localeFamilies = {};
1810    var globalLocale;
1811
1812    function normalizeLocale(key) {
1813        return key ? key.toLowerCase().replace('_', '-') : key;
1814    }
1815
1816    // pick the locale from the array
1817    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
1818    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
1819    function chooseLocale(names) {
1820        var i = 0, j, next, locale, split;
1821
1822        while (i < names.length) {
1823            split = normalizeLocale(names[i]).split('-');
1824            j = split.length;
1825            next = normalizeLocale(names[i + 1]);
1826            next = next ? next.split('-') : null;
1827            while (j > 0) {
1828                locale = loadLocale(split.slice(0, j).join('-'));
1829                if (locale) {
1830                    return locale;
1831                }
1832                if (next && next.length >= j && compareArrays(split, next, true) >= j - 1) {
1833                    //the next array item is better than a shallower substring of this one
1834                    break;
1835                }
1836                j--;
1837            }
1838            i++;
1839        }
1840        return globalLocale;
1841    }
1842
1843    function loadLocale(name) {
1844        var oldLocale = null;
1845        // TODO: Find a better way to register and load all the locales in Node
1846        if (!locales[name] && (typeof module !== 'undefined') &&
1847                module && module.exports) {
1848            try {
1849                oldLocale = globalLocale._abbr;
1850                var aliasedRequire = require;
1851                aliasedRequire('./locale/' + name);
1852                getSetGlobalLocale(oldLocale);
1853            } catch (e) {}
1854        }
1855        return locales[name];
1856    }
1857
1858    // This function will load locale and then set the global locale.  If
1859    // no arguments are passed in, it will simply return the current global
1860    // locale key.
1861    function getSetGlobalLocale (key, values) {
1862        var data;
1863        if (key) {
1864            if (isUndefined(values)) {
1865                data = getLocale(key);
1866            }
1867            else {
1868                data = defineLocale(key, values);
1869            }
1870
1871            if (data) {
1872                // moment.duration._locale = moment._locale = data;
1873                globalLocale = data;
1874            }
1875            else {
1876                if ((typeof console !==  'undefined') && console.warn) {
1877                    //warn user if arguments are passed but the locale could not be set
1878                    console.warn('Locale ' + key +  ' not found. Did you forget to load it?');
1879                }
1880            }
1881        }
1882
1883        return globalLocale._abbr;
1884    }
1885
1886    function defineLocale (name, config) {
1887        if (config !== null) {
1888            var locale, parentConfig = baseConfig;
1889            config.abbr = name;
1890            if (locales[name] != null) {
1891                deprecateSimple('defineLocaleOverride',
1892                        'use moment.updateLocale(localeName, config) to change ' +
1893                        'an existing locale. moment.defineLocale(localeName, ' +
1894                        'config) should only be used for creating a new locale ' +
1895                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.');
1896                parentConfig = locales[name]._config;
1897            } else if (config.parentLocale != null) {
1898                if (locales[config.parentLocale] != null) {
1899                    parentConfig = locales[config.parentLocale]._config;
1900                } else {
1901                    locale = loadLocale(config.parentLocale);
1902                    if (locale != null) {
1903                        parentConfig = locale._config;
1904                    } else {
1905                        if (!localeFamilies[config.parentLocale]) {
1906                            localeFamilies[config.parentLocale] = [];
1907                        }
1908                        localeFamilies[config.parentLocale].push({
1909                            name: name,
1910                            config: config
1911                        });
1912                        return null;
1913                    }
1914                }
1915            }
1916            locales[name] = new Locale(mergeConfigs(parentConfig, config));
1917
1918            if (localeFamilies[name]) {
1919                localeFamilies[name].forEach(function (x) {
1920                    defineLocale(x.name, x.config);
1921                });
1922            }
1923
1924            // backwards compat for now: also set the locale
1925            // make sure we set the locale AFTER all child locales have been
1926            // created, so we won't end up with the child locale set.
1927            getSetGlobalLocale(name);
1928
1929
1930            return locales[name];
1931        } else {
1932            // useful for testing
1933            delete locales[name];
1934            return null;
1935        }
1936    }
1937
1938    function updateLocale(name, config) {
1939        if (config != null) {
1940            var locale, tmpLocale, parentConfig = baseConfig;
1941            // MERGE
1942            tmpLocale = loadLocale(name);
1943            if (tmpLocale != null) {
1944                parentConfig = tmpLocale._config;
1945            }
1946            config = mergeConfigs(parentConfig, config);
1947            locale = new Locale(config);
1948            locale.parentLocale = locales[name];
1949            locales[name] = locale;
1950
1951            // backwards compat for now: also set the locale
1952            getSetGlobalLocale(name);
1953        } else {
1954            // pass null for config to unupdate, useful for tests
1955            if (locales[name] != null) {
1956                if (locales[name].parentLocale != null) {
1957                    locales[name] = locales[name].parentLocale;
1958                } else if (locales[name] != null) {
1959                    delete locales[name];
1960                }
1961            }
1962        }
1963        return locales[name];
1964    }
1965
1966    // returns locale data
1967    function getLocale (key) {
1968        var locale;
1969
1970        if (key && key._locale && key._locale._abbr) {
1971            key = key._locale._abbr;
1972        }
1973
1974        if (!key) {
1975            return globalLocale;
1976        }
1977
1978        if (!isArray(key)) {
1979            //short-circuit everything else
1980            locale = loadLocale(key);
1981            if (locale) {
1982                return locale;
1983            }
1984            key = [key];
1985        }
1986
1987        return chooseLocale(key);
1988    }
1989
1990    function listLocales() {
1991        return keys(locales);
1992    }
1993
1994    function checkOverflow (m) {
1995        var overflow;
1996        var a = m._a;
1997
1998        if (a && getParsingFlags(m).overflow === -2) {
1999            overflow =
2000                a[MONTH]       < 0 || a[MONTH]       > 11  ? MONTH :
2001                a[DATE]        < 1 || a[DATE]        > daysInMonth(a[YEAR], a[MONTH]) ? DATE :
2002                a[HOUR]        < 0 || a[HOUR]        > 24 || (a[HOUR] === 24 && (a[MINUTE] !== 0 || a[SECOND] !== 0 || a[MILLISECOND] !== 0)) ? HOUR :
2003                a[MINUTE]      < 0 || a[MINUTE]      > 59  ? MINUTE :
2004                a[SECOND]      < 0 || a[SECOND]      > 59  ? SECOND :
2005                a[MILLISECOND] < 0 || a[MILLISECOND] > 999 ? MILLISECOND :
2006                -1;
2007
2008            if (getParsingFlags(m)._overflowDayOfYear && (overflow < YEAR || overflow > DATE)) {
2009                overflow = DATE;
2010            }
2011            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {
2012                overflow = WEEK;
2013            }
2014            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {
2015                overflow = WEEKDAY;
2016            }
2017
2018            getParsingFlags(m).overflow = overflow;
2019        }
2020
2021        return m;
2022    }
2023
2024    // Pick the first defined of two or three arguments.
2025    function defaults(a, b, c) {
2026        if (a != null) {
2027            return a;
2028        }
2029        if (b != null) {
2030            return b;
2031        }
2032        return c;
2033    }
2034
2035    function currentDateArray(config) {
2036        // hooks is actually the exported moment object
2037        var nowValue = new Date(hooks.now());
2038        if (config._useUTC) {
2039            return [nowValue.getUTCFullYear(), nowValue.getUTCMonth(), nowValue.getUTCDate()];
2040        }
2041        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];
2042    }
2043
2044    // convert an array to a date.
2045    // the array should mirror the parameters below
2046    // note: all values past the year are optional and will default to the lowest possible value.
2047    // [year, month, day , hour, minute, second, millisecond]
2048    function configFromArray (config) {
2049        var i, date, input = [], currentDate, expectedWeekday, yearToUse;
2050
2051        if (config._d) {
2052            return;
2053        }
2054
2055        currentDate = currentDateArray(config);
2056
2057        //compute day of the year from weeks and weekdays
2058        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {
2059            dayOfYearFromWeekInfo(config);
2060        }
2061
2062        //if the day of the year is set, figure out what it is
2063        if (config._dayOfYear != null) {
2064            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);
2065
2066            if (config._dayOfYear > daysInYear(yearToUse) || config._dayOfYear === 0) {
2067                getParsingFlags(config)._overflowDayOfYear = true;
2068            }
2069
2070            date = createUTCDate(yearToUse, 0, config._dayOfYear);
2071            config._a[MONTH] = date.getUTCMonth();
2072            config._a[DATE] = date.getUTCDate();
2073        }
2074
2075        // Default to current date.
2076        // * if no year, month, day of month are given, default to today
2077        // * if day of month is given, default month and year
2078        // * if month is given, default only year
2079        // * if year is given, don't default anything
2080        for (i = 0; i < 3 && config._a[i] == null; ++i) {
2081            config._a[i] = input[i] = currentDate[i];
2082        }
2083
2084        // Zero out whatever was not defaulted, including time
2085        for (; i < 7; i++) {
2086            config._a[i] = input[i] = (config._a[i] == null) ? (i === 2 ? 1 : 0) : config._a[i];
2087        }
2088
2089        // Check for 24:00:00.000
2090        if (config._a[HOUR] === 24 &&
2091                config._a[MINUTE] === 0 &&
2092                config._a[SECOND] === 0 &&
2093                config._a[MILLISECOND] === 0) {
2094            config._nextDay = true;
2095            config._a[HOUR] = 0;
2096        }
2097
2098        config._d = (config._useUTC ? createUTCDate : createDate).apply(null, input);
2099        expectedWeekday = config._useUTC ? config._d.getUTCDay() : config._d.getDay();
2100
2101        // Apply timezone offset from input. The actual utcOffset can be changed
2102        // with parseZone.
2103        if (config._tzm != null) {
2104            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2105        }
2106
2107        if (config._nextDay) {
2108            config._a[HOUR] = 24;
2109        }
2110
2111        // check for mismatching day of week
2112        if (config._w && typeof config._w.d !== 'undefined' && config._w.d !== expectedWeekday) {
2113            getParsingFlags(config).weekdayMismatch = true;
2114        }
2115    }
2116
2117    function dayOfYearFromWeekInfo(config) {
2118        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow;
2119
2120        w = config._w;
2121        if (w.GG != null || w.W != null || w.E != null) {
2122            dow = 1;
2123            doy = 4;
2124
2125            // TODO: We need to take the current isoWeekYear, but that depends on
2126            // how we interpret now (local, utc, fixed offset). So create
2127            // a now version of current config (take local/utc/offset flags, and
2128            // create now).
2129            weekYear = defaults(w.GG, config._a[YEAR], weekOfYear(createLocal(), 1, 4).year);
2130            week = defaults(w.W, 1);
2131            weekday = defaults(w.E, 1);
2132            if (weekday < 1 || weekday > 7) {
2133                weekdayOverflow = true;
2134            }
2135        } else {
2136            dow = config._locale._week.dow;
2137            doy = config._locale._week.doy;
2138
2139            var curWeek = weekOfYear(createLocal(), dow, doy);
2140
2141            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);
2142
2143            // Default to current week.
2144            week = defaults(w.w, curWeek.week);
2145
2146            if (w.d != null) {
2147                // weekday -- low day numbers are considered next week
2148                weekday = w.d;
2149                if (weekday < 0 || weekday > 6) {
2150                    weekdayOverflow = true;
2151                }
2152            } else if (w.e != null) {
2153                // local weekday -- counting starts from beginning of week
2154                weekday = w.e + dow;
2155                if (w.e < 0 || w.e > 6) {
2156                    weekdayOverflow = true;
2157                }
2158            } else {
2159                // default to beginning of week
2160                weekday = dow;
2161            }
2162        }
2163        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {
2164            getParsingFlags(config)._overflowWeeks = true;
2165        } else if (weekdayOverflow != null) {
2166            getParsingFlags(config)._overflowWeekday = true;
2167        } else {
2168            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);
2169            config._a[YEAR] = temp.year;
2170            config._dayOfYear = temp.dayOfYear;
2171        }
2172    }
2173
2174    // iso 8601 regex
2175    // 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)
2176    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)?)?$/;
2177    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)?)?$/;
2178
2179    var tzRegex = /Z|[+-]\d\d(?::?\d\d)?/;
2180
2181    var isoDates = [
2182        ['YYYYYY-MM-DD', /[+-]\d{6}-\d\d-\d\d/],
2183        ['YYYY-MM-DD', /\d{4}-\d\d-\d\d/],
2184        ['GGGG-[W]WW-E', /\d{4}-W\d\d-\d/],
2185        ['GGGG-[W]WW', /\d{4}-W\d\d/, false],
2186        ['YYYY-DDD', /\d{4}-\d{3}/],
2187        ['YYYY-MM', /\d{4}-\d\d/, false],
2188        ['YYYYYYMMDD', /[+-]\d{10}/],
2189        ['YYYYMMDD', /\d{8}/],
2190        // YYYYMM is NOT allowed by the standard
2191        ['GGGG[W]WWE', /\d{4}W\d{3}/],
2192        ['GGGG[W]WW', /\d{4}W\d{2}/, false],
2193        ['YYYYDDD', /\d{7}/]
2194    ];
2195
2196    // iso time formats and regexes
2197    var isoTimes = [
2198        ['HH:mm:ss.SSSS', /\d\d:\d\d:\d\d\.\d+/],
2199        ['HH:mm:ss,SSSS', /\d\d:\d\d:\d\d,\d+/],
2200        ['HH:mm:ss', /\d\d:\d\d:\d\d/],
2201        ['HH:mm', /\d\d:\d\d/],
2202        ['HHmmss.SSSS', /\d\d\d\d\d\d\.\d+/],
2203        ['HHmmss,SSSS', /\d\d\d\d\d\d,\d+/],
2204        ['HHmmss', /\d\d\d\d\d\d/],
2205        ['HHmm', /\d\d\d\d/],
2206        ['HH', /\d\d/]
2207    ];
2208
2209    var aspNetJsonRegex = /^\/?Date\((\-?\d+)/i;
2210
2211    // date from iso format
2212    function configFromISO(config) {
2213        var i, l,
2214            string = config._i,
2215            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),
2216            allowTime, dateFormat, timeFormat, tzFormat;
2217
2218        if (match) {
2219            getParsingFlags(config).iso = true;
2220
2221            for (i = 0, l = isoDates.length; i < l; i++) {
2222                if (isoDates[i][1].exec(match[1])) {
2223                    dateFormat = isoDates[i][0];
2224                    allowTime = isoDates[i][2] !== false;
2225                    break;
2226                }
2227            }
2228            if (dateFormat == null) {
2229                config._isValid = false;
2230                return;
2231            }
2232            if (match[3]) {
2233                for (i = 0, l = isoTimes.length; i < l; i++) {
2234                    if (isoTimes[i][1].exec(match[3])) {
2235                        // match[2] should be 'T' or space
2236                        timeFormat = (match[2] || ' ') + isoTimes[i][0];
2237                        break;
2238                    }
2239                }
2240                if (timeFormat == null) {
2241                    config._isValid = false;
2242                    return;
2243                }
2244            }
2245            if (!allowTime && timeFormat != null) {
2246                config._isValid = false;
2247                return;
2248            }
2249            if (match[4]) {
2250                if (tzRegex.exec(match[4])) {
2251                    tzFormat = 'Z';
2252                } else {
2253                    config._isValid = false;
2254                    return;
2255                }
2256            }
2257            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');
2258            configFromStringAndFormat(config);
2259        } else {
2260            config._isValid = false;
2261        }
2262    }
2263
2264    // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3
2265    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}))$/;
2266
2267    function extractFromRFC2822Strings(yearStr, monthStr, dayStr, hourStr, minuteStr, secondStr) {
2268        var result = [
2269            untruncateYear(yearStr),
2270            defaultLocaleMonthsShort.indexOf(monthStr),
2271            parseInt(dayStr, 10),
2272            parseInt(hourStr, 10),
2273            parseInt(minuteStr, 10)
2274        ];
2275
2276        if (secondStr) {
2277            result.push(parseInt(secondStr, 10));
2278        }
2279
2280        return result;
2281    }
2282
2283    function untruncateYear(yearStr) {
2284        var year = parseInt(yearStr, 10);
2285        if (year <= 49) {
2286            return 2000 + year;
2287        } else if (year <= 999) {
2288            return 1900 + year;
2289        }
2290        return year;
2291    }
2292
2293    function preprocessRFC2822(s) {
2294        // Remove comments and folding whitespace and replace multiple-spaces with a single space
2295        return s.replace(/\([^)]*\)|[\n\t]/g, ' ').replace(/(\s\s+)/g, ' ').replace(/^\s\s*/, '').replace(/\s\s*$/, '');
2296    }
2297
2298    function checkWeekday(weekdayStr, parsedInput, config) {
2299        if (weekdayStr) {
2300            // TODO: Replace the vanilla JS Date object with an indepentent day-of-week check.
2301            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),
2302                weekdayActual = new Date(parsedInput[0], parsedInput[1], parsedInput[2]).getDay();
2303            if (weekdayProvided !== weekdayActual) {
2304                getParsingFlags(config).weekdayMismatch = true;
2305                config._isValid = false;
2306                return false;
2307            }
2308        }
2309        return true;
2310    }
2311
2312    var obsOffsets = {
2313        UT: 0,
2314        GMT: 0,
2315        EDT: -4 * 60,
2316        EST: -5 * 60,
2317        CDT: -5 * 60,
2318        CST: -6 * 60,
2319        MDT: -6 * 60,
2320        MST: -7 * 60,
2321        PDT: -7 * 60,
2322        PST: -8 * 60
2323    };
2324
2325    function calculateOffset(obsOffset, militaryOffset, numOffset) {
2326        if (obsOffset) {
2327            return obsOffsets[obsOffset];
2328        } else if (militaryOffset) {
2329            // the only allowed military tz is Z
2330            return 0;
2331        } else {
2332            var hm = parseInt(numOffset, 10);
2333            var m = hm % 100, h = (hm - m) / 100;
2334            return h * 60 + m;
2335        }
2336    }
2337
2338    // date and time from ref 2822 format
2339    function configFromRFC2822(config) {
2340        var match = rfc2822.exec(preprocessRFC2822(config._i));
2341        if (match) {
2342            var parsedArray = extractFromRFC2822Strings(match[4], match[3], match[2], match[5], match[6], match[7]);
2343            if (!checkWeekday(match[1], parsedArray, config)) {
2344                return;
2345            }
2346
2347            config._a = parsedArray;
2348            config._tzm = calculateOffset(match[8], match[9], match[10]);
2349
2350            config._d = createUTCDate.apply(null, config._a);
2351            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);
2352
2353            getParsingFlags(config).rfc2822 = true;
2354        } else {
2355            config._isValid = false;
2356        }
2357    }
2358
2359    // date from iso format or fallback
2360    function configFromString(config) {
2361        var matched = aspNetJsonRegex.exec(config._i);
2362
2363        if (matched !== null) {
2364            config._d = new Date(+matched[1]);
2365            return;
2366        }
2367
2368        configFromISO(config);
2369        if (config._isValid === false) {
2370            delete config._isValid;
2371        } else {
2372            return;
2373        }
2374
2375        configFromRFC2822(config);
2376        if (config._isValid === false) {
2377            delete config._isValid;
2378        } else {
2379            return;
2380        }
2381
2382        // Final attempt, use Input Fallback
2383        hooks.createFromInputFallback(config);
2384    }
2385
2386    hooks.createFromInputFallback = deprecate(
2387        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +
2388        'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +
2389        'discouraged and will be removed in an upcoming major release. Please refer to ' +
2390        'http://momentjs.com/guides/#/warnings/js-date/ for more info.',
2391        function (config) {
2392            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));
2393        }
2394    );
2395
2396    // constant that refers to the ISO standard
2397    hooks.ISO_8601 = function () {};
2398
2399    // constant that refers to the RFC 2822 form
2400    hooks.RFC_2822 = function () {};
2401
2402    // date from string and format string
2403    function configFromStringAndFormat(config) {
2404        // TODO: Move this to another part of the creation flow to prevent circular deps
2405        if (config._f === hooks.ISO_8601) {
2406            configFromISO(config);
2407            return;
2408        }
2409        if (config._f === hooks.RFC_2822) {
2410            configFromRFC2822(config);
2411            return;
2412        }
2413        config._a = [];
2414        getParsingFlags(config).empty = true;
2415
2416        // This array is used to make a Date, either with `new Date` or `Date.UTC`
2417        var string = '' + config._i,
2418            i, parsedInput, tokens, token, skipped,
2419            stringLength = string.length,
2420            totalParsedInputLength = 0;
2421
2422        tokens = expandFormat(config._f, config._locale).match(formattingTokens) || [];
2423
2424        for (i = 0; i < tokens.length; i++) {
2425            token = tokens[i];
2426            parsedInput = (string.match(getParseRegexForToken(token, config)) || [])[0];
2427            // console.log('token', token, 'parsedInput', parsedInput,
2428            //         'regex', getParseRegexForToken(token, config));
2429            if (parsedInput) {
2430                skipped = string.substr(0, string.indexOf(parsedInput));
2431                if (skipped.length > 0) {
2432                    getParsingFlags(config).unusedInput.push(skipped);
2433                }
2434                string = string.slice(string.indexOf(parsedInput) + parsedInput.length);
2435                totalParsedInputLength += parsedInput.length;
2436            }
2437            // don't parse if it's not a known token
2438            if (formatTokenFunctions[token]) {
2439                if (parsedInput) {
2440                    getParsingFlags(config).empty = false;
2441                }
2442                else {
2443                    getParsingFlags(config).unusedTokens.push(token);
2444                }
2445                addTimeToArrayFromToken(token, parsedInput, config);
2446            }
2447            else if (config._strict && !parsedInput) {
2448                getParsingFlags(config).unusedTokens.push(token);
2449            }
2450        }
2451
2452        // add remaining unparsed input length to the string
2453        getParsingFlags(config).charsLeftOver = stringLength - totalParsedInputLength;
2454        if (string.length > 0) {
2455            getParsingFlags(config).unusedInput.push(string);
2456        }
2457
2458        // clear _12h flag if hour is <= 12
2459        if (config._a[HOUR] <= 12 &&
2460            getParsingFlags(config).bigHour === true &&
2461            config._a[HOUR] > 0) {
2462            getParsingFlags(config).bigHour = undefined;
2463        }
2464
2465        getParsingFlags(config).parsedDateParts = config._a.slice(0);
2466        getParsingFlags(config).meridiem = config._meridiem;
2467        // handle meridiem
2468        config._a[HOUR] = meridiemFixWrap(config._locale, config._a[HOUR], config._meridiem);
2469
2470        configFromArray(config);
2471        checkOverflow(config);
2472    }
2473
2474
2475    function meridiemFixWrap (locale, hour, meridiem) {
2476        var isPm;
2477
2478        if (meridiem == null) {
2479            // nothing to do
2480            return hour;
2481        }
2482        if (locale.meridiemHour != null) {
2483            return locale.meridiemHour(hour, meridiem);
2484        } else if (locale.isPM != null) {
2485            // Fallback
2486            isPm = locale.isPM(meridiem);
2487            if (isPm && hour < 12) {
2488                hour += 12;
2489            }
2490            if (!isPm && hour === 12) {
2491                hour = 0;
2492            }
2493            return hour;
2494        } else {
2495            // this is not supposed to happen
2496            return hour;
2497        }
2498    }
2499
2500    // date from string and array of format strings
2501    function configFromStringAndArray(config) {
2502        var tempConfig,
2503            bestMoment,
2504
2505            scoreToBeat,
2506            i,
2507            currentScore;
2508
2509        if (config._f.length === 0) {
2510            getParsingFlags(config).invalidFormat = true;
2511            config._d = new Date(NaN);
2512            return;
2513        }
2514
2515        for (i = 0; i < config._f.length; i++) {
2516            currentScore = 0;
2517            tempConfig = copyConfig({}, config);
2518            if (config._useUTC != null) {
2519                tempConfig._useUTC = config._useUTC;
2520            }
2521            tempConfig._f = config._f[i];
2522            configFromStringAndFormat(tempConfig);
2523
2524            if (!isValid(tempConfig)) {
2525                continue;
2526            }
2527
2528            // if there is any input that was not parsed add a penalty for that format
2529            currentScore += getParsingFlags(tempConfig).charsLeftOver;
2530
2531            //or tokens
2532            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;
2533
2534            getParsingFlags(tempConfig).score = currentScore;
2535
2536            if (scoreToBeat == null || currentScore < scoreToBeat) {
2537                scoreToBeat = currentScore;
2538                bestMoment = tempConfig;
2539            }
2540        }
2541
2542        extend(config, bestMoment || tempConfig);
2543    }
2544
2545    function configFromObject(config) {
2546        if (config._d) {
2547            return;
2548        }
2549
2550        var i = normalizeObjectUnits(config._i);
2551        config._a = map([i.year, i.month, i.day || i.date, i.hour, i.minute, i.second, i.millisecond], function (obj) {
2552            return obj && parseInt(obj, 10);
2553        });
2554
2555        configFromArray(config);
2556    }
2557
2558    function createFromConfig (config) {
2559        var res = new Moment(checkOverflow(prepareConfig(config)));
2560        if (res._nextDay) {
2561            // Adding is smart enough around DST
2562            res.add(1, 'd');
2563            res._nextDay = undefined;
2564        }
2565
2566        return res;
2567    }
2568
2569    function prepareConfig (config) {
2570        var input = config._i,
2571            format = config._f;
2572
2573        config._locale = config._locale || getLocale(config._l);
2574
2575        if (input === null || (format === undefined && input === '')) {
2576            return createInvalid({nullInput: true});
2577        }
2578
2579        if (typeof input === 'string') {
2580            config._i = input = config._locale.preparse(input);
2581        }
2582
2583        if (isMoment(input)) {
2584            return new Moment(checkOverflow(input));
2585        } else if (isDate(input)) {
2586            config._d = input;
2587        } else if (isArray(format)) {
2588            configFromStringAndArray(config);
2589        } else if (format) {
2590            configFromStringAndFormat(config);
2591        }  else {
2592            configFromInput(config);
2593        }
2594
2595        if (!isValid(config)) {
2596            config._d = null;
2597        }
2598
2599        return config;
2600    }
2601
2602    function configFromInput(config) {
2603        var input = config._i;
2604        if (isUndefined(input)) {
2605            config._d = new Date(hooks.now());
2606        } else if (isDate(input)) {
2607            config._d = new Date(input.valueOf());
2608        } else if (typeof input === 'string') {
2609            configFromString(config);
2610        } else if (isArray(input)) {
2611            config._a = map(input.slice(0), function (obj) {
2612                return parseInt(obj, 10);
2613            });
2614            configFromArray(config);
2615        } else if (isObject(input)) {
2616            configFromObject(config);
2617        } else if (isNumber(input)) {
2618            // from milliseconds
2619            config._d = new Date(input);
2620        } else {
2621            hooks.createFromInputFallback(config);
2622        }
2623    }
2624
2625    function createLocalOrUTC (input, format, locale, strict, isUTC) {
2626        var c = {};
2627
2628        if (locale === true || locale === false) {
2629            strict = locale;
2630            locale = undefined;
2631        }
2632
2633        if ((isObject(input) && isObjectEmpty(input)) ||
2634                (isArray(input) && input.length === 0)) {
2635            input = undefined;
2636        }
2637        // object construction must be done this way.
2638        // https://github.com/moment/moment/issues/1423
2639        c._isAMomentObject = true;
2640        c._useUTC = c._isUTC = isUTC;
2641        c._l = locale;
2642        c._i = input;
2643        c._f = format;
2644        c._strict = strict;
2645
2646        return createFromConfig(c);
2647    }
2648
2649    function createLocal (input, format, locale, strict) {
2650        return createLocalOrUTC(input, format, locale, strict, false);
2651    }
2652
2653    var prototypeMin = deprecate(
2654        'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',
2655        function () {
2656            var other = createLocal.apply(null, arguments);
2657            if (this.isValid() && other.isValid()) {
2658                return other < this ? this : other;
2659            } else {
2660                return createInvalid();
2661            }
2662        }
2663    );
2664
2665    var prototypeMax = deprecate(
2666        'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',
2667        function () {
2668            var other = createLocal.apply(null, arguments);
2669            if (this.isValid() && other.isValid()) {
2670                return other > this ? this : other;
2671            } else {
2672                return createInvalid();
2673            }
2674        }
2675    );
2676
2677    // Pick a moment m from moments so that m[fn](other) is true for all
2678    // other. This relies on the function fn to be transitive.
2679    //
2680    // moments should either be an array of moment objects or an array, whose
2681    // first element is an array of moment objects.
2682    function pickBy(fn, moments) {
2683        var res, i;
2684        if (moments.length === 1 && isArray(moments[0])) {
2685            moments = moments[0];
2686        }
2687        if (!moments.length) {
2688            return createLocal();
2689        }
2690        res = moments[0];
2691        for (i = 1; i < moments.length; ++i) {
2692            if (!moments[i].isValid() || moments[i][fn](res)) {
2693                res = moments[i];
2694            }
2695        }
2696        return res;
2697    }
2698
2699    // TODO: Use [].sort instead?
2700    function min () {
2701        var args = [].slice.call(arguments, 0);
2702
2703        return pickBy('isBefore', args);
2704    }
2705
2706    function max () {
2707        var args = [].slice.call(arguments, 0);
2708
2709        return pickBy('isAfter', args);
2710    }
2711
2712    var now = function () {
2713        return Date.now ? Date.now() : +(new Date());
2714    };
2715
2716    var ordering = ['year', 'quarter', 'month', 'week', 'day', 'hour', 'minute', 'second', 'millisecond'];
2717
2718    function isDurationValid(m) {
2719        for (var key in m) {
2720            if (!(indexOf.call(ordering, key) !== -1 && (m[key] == null || !isNaN(m[key])))) {
2721                return false;
2722            }
2723        }
2724
2725        var unitHasDecimal = false;
2726        for (var i = 0; i < ordering.length; ++i) {
2727            if (m[ordering[i]]) {
2728                if (unitHasDecimal) {
2729                    return false; // only allow non-integers for smallest unit
2730                }
2731                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {
2732                    unitHasDecimal = true;
2733                }
2734            }
2735        }
2736
2737        return true;
2738    }
2739
2740    function isValid$1() {
2741        return this._isValid;
2742    }
2743
2744    function createInvalid$1() {
2745        return createDuration(NaN);
2746    }
2747
2748    function Duration (duration) {
2749        var normalizedInput = normalizeObjectUnits(duration),
2750            years = normalizedInput.year || 0,
2751            quarters = normalizedInput.quarter || 0,
2752            months = normalizedInput.month || 0,
2753            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,
2754            days = normalizedInput.day || 0,
2755            hours = normalizedInput.hour || 0,
2756            minutes = normalizedInput.minute || 0,
2757            seconds = normalizedInput.second || 0,
2758            milliseconds = normalizedInput.millisecond || 0;
2759
2760        this._isValid = isDurationValid(normalizedInput);
2761
2762        // representation for dateAddRemove
2763        this._milliseconds = +milliseconds +
2764            seconds * 1e3 + // 1000
2765            minutes * 6e4 + // 1000 * 60
2766            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
2767        // Because of dateAddRemove treats 24 hours as different from a
2768        // day when working around DST, we need to store them separately
2769        this._days = +days +
2770            weeks * 7;
2771        // It is impossible to translate months into days without knowing
2772        // which months you are are talking about, so we have to store
2773        // it separately.
2774        this._months = +months +
2775            quarters * 3 +
2776            years * 12;
2777
2778        this._data = {};
2779
2780        this._locale = getLocale();
2781
2782        this._bubble();
2783    }
2784
2785    function isDuration (obj) {
2786        return obj instanceof Duration;
2787    }
2788
2789    function absRound (number) {
2790        if (number < 0) {
2791            return Math.round(-1 * number) * -1;
2792        } else {
2793            return Math.round(number);
2794        }
2795    }
2796
2797    // FORMATTING
2798
2799    function offset (token, separator) {
2800        addFormatToken(token, 0, 0, function () {
2801            var offset = this.utcOffset();
2802            var sign = '+';
2803            if (offset < 0) {
2804                offset = -offset;
2805                sign = '-';
2806            }
2807            return sign + zeroFill(~~(offset / 60), 2) + separator + zeroFill(~~(offset) % 60, 2);
2808        });
2809    }
2810
2811    offset('Z', ':');
2812    offset('ZZ', '');
2813
2814    // PARSING
2815
2816    addRegexToken('Z',  matchShortOffset);
2817    addRegexToken('ZZ', matchShortOffset);
2818    addParseToken(['Z', 'ZZ'], function (input, array, config) {
2819        config._useUTC = true;
2820        config._tzm = offsetFromString(matchShortOffset, input);
2821    });
2822
2823    // HELPERS
2824
2825    // timezone chunker
2826    // '+10:00' > ['10',  '00']
2827    // '-1530'  > ['-15', '30']
2828    var chunkOffset = /([\+\-]|\d\d)/gi;
2829
2830    function offsetFromString(matcher, string) {
2831        var matches = (string || '').match(matcher);
2832
2833        if (matches === null) {
2834            return null;
2835        }
2836
2837        var chunk   = matches[matches.length - 1] || [];
2838        var parts   = (chunk + '').match(chunkOffset) || ['-', 0, 0];
2839        var minutes = +(parts[1] * 60) + toInt(parts[2]);
2840
2841        return minutes === 0 ?
2842          0 :
2843          parts[0] === '+' ? minutes : -minutes;
2844    }
2845
2846    // Return a moment from input, that is local/utc/zone equivalent to model.
2847    function cloneWithOffset(input, model) {
2848        var res, diff;
2849        if (model._isUTC) {
2850            res = model.clone();
2851            diff = (isMoment(input) || isDate(input) ? input.valueOf() : createLocal(input).valueOf()) - res.valueOf();
2852            // Use low-level api, because this fn is low-level api.
2853            res._d.setTime(res._d.valueOf() + diff);
2854            hooks.updateOffset(res, false);
2855            return res;
2856        } else {
2857            return createLocal(input).local();
2858        }
2859    }
2860
2861    function getDateOffset (m) {
2862        // On Firefox.24 Date#getTimezoneOffset returns a floating point.
2863        // https://github.com/moment/moment/pull/1871
2864        return -Math.round(m._d.getTimezoneOffset() / 15) * 15;
2865    }
2866
2867    // HOOKS
2868
2869    // This function will be called whenever a moment is mutated.
2870    // It is intended to keep the offset in sync with the timezone.
2871    hooks.updateOffset = function () {};
2872
2873    // MOMENTS
2874
2875    // keepLocalTime = true means only change the timezone, without
2876    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
2877    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
2878    // +0200, so we adjust the time as needed, to be valid.
2879    //
2880    // Keeping the time actually adds/subtracts (one hour)
2881    // from the actual represented time. That is why we call updateOffset
2882    // a second time. In case it wants us to change the offset again
2883    // _changeInProgress == true case, then we have to adjust, because
2884    // there is no such time in the given timezone.
2885    function getSetOffset (input, keepLocalTime, keepMinutes) {
2886        var offset = this._offset || 0,
2887            localAdjust;
2888        if (!this.isValid()) {
2889            return input != null ? this : NaN;
2890        }
2891        if (input != null) {
2892            if (typeof input === 'string') {
2893                input = offsetFromString(matchShortOffset, input);
2894                if (input === null) {
2895                    return this;
2896                }
2897            } else if (Math.abs(input) < 16 && !keepMinutes) {
2898                input = input * 60;
2899            }
2900            if (!this._isUTC && keepLocalTime) {
2901                localAdjust = getDateOffset(this);
2902            }
2903            this._offset = input;
2904            this._isUTC = true;
2905            if (localAdjust != null) {
2906                this.add(localAdjust, 'm');
2907            }
2908            if (offset !== input) {
2909                if (!keepLocalTime || this._changeInProgress) {
2910                    addSubtract(this, createDuration(input - offset, 'm'), 1, false);
2911                } else if (!this._changeInProgress) {
2912                    this._changeInProgress = true;
2913                    hooks.updateOffset(this, true);
2914                    this._changeInProgress = null;
2915                }
2916            }
2917            return this;
2918        } else {
2919            return this._isUTC ? offset : getDateOffset(this);
2920        }
2921    }
2922
2923    function getSetZone (input, keepLocalTime) {
2924        if (input != null) {
2925            if (typeof input !== 'string') {
2926                input = -input;
2927            }
2928
2929            this.utcOffset(input, keepLocalTime);
2930
2931            return this;
2932        } else {
2933            return -this.utcOffset();
2934        }
2935    }
2936
2937    function setOffsetToUTC (keepLocalTime) {
2938        return this.utcOffset(0, keepLocalTime);
2939    }
2940
2941    function setOffsetToLocal (keepLocalTime) {
2942        if (this._isUTC) {
2943            this.utcOffset(0, keepLocalTime);
2944            this._isUTC = false;
2945
2946            if (keepLocalTime) {
2947                this.subtract(getDateOffset(this), 'm');
2948            }
2949        }
2950        return this;
2951    }
2952
2953    function setOffsetToParsedOffset () {
2954        if (this._tzm != null) {
2955            this.utcOffset(this._tzm, false, true);
2956        } else if (typeof this._i === 'string') {
2957            var tZone = offsetFromString(matchOffset, this._i);
2958            if (tZone != null) {
2959                this.utcOffset(tZone);
2960            }
2961            else {
2962                this.utcOffset(0, true);
2963            }
2964        }
2965        return this;
2966    }
2967
2968    function hasAlignedHourOffset (input) {
2969        if (!this.isValid()) {
2970            return false;
2971        }
2972        input = input ? createLocal(input).utcOffset() : 0;
2973
2974        return (this.utcOffset() - input) % 60 === 0;
2975    }
2976
2977    function isDaylightSavingTime () {
2978        return (
2979            this.utcOffset() > this.clone().month(0).utcOffset() ||
2980            this.utcOffset() > this.clone().month(5).utcOffset()
2981        );
2982    }
2983
2984    function isDaylightSavingTimeShifted () {
2985        if (!isUndefined(this._isDSTShifted)) {
2986            return this._isDSTShifted;
2987        }
2988
2989        var c = {};
2990
2991        copyConfig(c, this);
2992        c = prepareConfig(c);
2993
2994        if (c._a) {
2995            var other = c._isUTC ? createUTC(c._a) : createLocal(c._a);
2996            this._isDSTShifted = this.isValid() &&
2997                compareArrays(c._a, other.toArray()) > 0;
2998        } else {
2999            this._isDSTShifted = false;
3000        }
3001
3002        return this._isDSTShifted;
3003    }
3004
3005    function isLocal () {
3006        return this.isValid() ? !this._isUTC : false;
3007    }
3008
3009    function isUtcOffset () {
3010        return this.isValid() ? this._isUTC : false;
3011    }
3012
3013    function isUtc () {
3014        return this.isValid() ? this._isUTC && this._offset === 0 : false;
3015    }
3016
3017    // ASP.NET json date format regex
3018    var aspNetRegex = /^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/;
3019
3020    // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html
3021    // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere
3022    // and further modified to allow for strings containing both week and day
3023    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)?)?$/;
3024
3025    function createDuration (input, key) {
3026        var duration = input,
3027            // matching against regexp is expensive, do it on demand
3028            match = null,
3029            sign,
3030            ret,
3031            diffRes;
3032
3033        if (isDuration(input)) {
3034            duration = {
3035                ms : input._milliseconds,
3036                d  : input._days,
3037                M  : input._months
3038            };
3039        } else if (isNumber(input)) {
3040            duration = {};
3041            if (key) {
3042                duration[key] = input;
3043            } else {
3044                duration.milliseconds = input;
3045            }
3046        } else if (!!(match = aspNetRegex.exec(input))) {
3047            sign = (match[1] === '-') ? -1 : 1;
3048            duration = {
3049                y  : 0,
3050                d  : toInt(match[DATE])                         * sign,
3051                h  : toInt(match[HOUR])                         * sign,
3052                m  : toInt(match[MINUTE])                       * sign,
3053                s  : toInt(match[SECOND])                       * sign,
3054                ms : toInt(absRound(match[MILLISECOND] * 1000)) * sign // the millisecond decimal point is included in the match
3055            };
3056        } else if (!!(match = isoRegex.exec(input))) {
3057            sign = (match[1] === '-') ? -1 : 1;
3058            duration = {
3059                y : parseIso(match[2], sign),
3060                M : parseIso(match[3], sign),
3061                w : parseIso(match[4], sign),
3062                d : parseIso(match[5], sign),
3063                h : parseIso(match[6], sign),
3064                m : parseIso(match[7], sign),
3065                s : parseIso(match[8], sign)
3066            };
3067        } else if (duration == null) {// checks for null or undefined
3068            duration = {};
3069        } else if (typeof duration === 'object' && ('from' in duration || 'to' in duration)) {
3070            diffRes = momentsDifference(createLocal(duration.from), createLocal(duration.to));
3071
3072            duration = {};
3073            duration.ms = diffRes.milliseconds;
3074            duration.M = diffRes.months;
3075        }
3076
3077        ret = new Duration(duration);
3078
3079        if (isDuration(input) && hasOwnProp(input, '_locale')) {
3080            ret._locale = input._locale;
3081        }
3082
3083        return ret;
3084    }
3085
3086    createDuration.fn = Duration.prototype;
3087    createDuration.invalid = createInvalid$1;
3088
3089    function parseIso (inp, sign) {
3090        // We'd normally use ~~inp for this, but unfortunately it also
3091        // converts floats to ints.
3092        // inp may be undefined, so careful calling replace on it.
3093        var res = inp && parseFloat(inp.replace(',', '.'));
3094        // apply sign while we're at it
3095        return (isNaN(res) ? 0 : res) * sign;
3096    }
3097
3098    function positiveMomentsDifference(base, other) {
3099        var res = {};
3100
3101        res.months = other.month() - base.month() +
3102            (other.year() - base.year()) * 12;
3103        if (base.clone().add(res.months, 'M').isAfter(other)) {
3104            --res.months;
3105        }
3106
3107        res.milliseconds = +other - +(base.clone().add(res.months, 'M'));
3108
3109        return res;
3110    }
3111
3112    function momentsDifference(base, other) {
3113        var res;
3114        if (!(base.isValid() && other.isValid())) {
3115            return {milliseconds: 0, months: 0};
3116        }
3117
3118        other = cloneWithOffset(other, base);
3119        if (base.isBefore(other)) {
3120            res = positiveMomentsDifference(base, other);
3121        } else {
3122            res = positiveMomentsDifference(other, base);
3123            res.milliseconds = -res.milliseconds;
3124            res.months = -res.months;
3125        }
3126
3127        return res;
3128    }
3129
3130    // TODO: remove 'name' arg after deprecation is removed
3131    function createAdder(direction, name) {
3132        return function (val, period) {
3133            var dur, tmp;
3134            //invert the arguments, but complain about it
3135            if (period !== null && !isNaN(+period)) {
3136                deprecateSimple(name, 'moment().' + name  + '(period, number) is deprecated. Please use moment().' + name + '(number, period). ' +
3137                'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.');
3138                tmp = val; val = period; period = tmp;
3139            }
3140
3141            val = typeof val === 'string' ? +val : val;
3142            dur = createDuration(val, period);
3143            addSubtract(this, dur, direction);
3144            return this;
3145        };
3146    }
3147
3148    function addSubtract (mom, duration, isAdding, updateOffset) {
3149        var milliseconds = duration._milliseconds,
3150            days = absRound(duration._days),
3151            months = absRound(duration._months);
3152
3153        if (!mom.isValid()) {
3154            // No op
3155            return;
3156        }
3157
3158        updateOffset = updateOffset == null ? true : updateOffset;
3159
3160        if (months) {
3161            setMonth(mom, get(mom, 'Month') + months * isAdding);
3162        }
3163        if (days) {
3164            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);
3165        }
3166        if (milliseconds) {
3167            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);
3168        }
3169        if (updateOffset) {
3170            hooks.updateOffset(mom, days || months);
3171        }
3172    }
3173
3174    var add      = createAdder(1, 'add');
3175    var subtract = createAdder(-1, 'subtract');
3176
3177    function getCalendarFormat(myMoment, now) {
3178        var diff = myMoment.diff(now, 'days', true);
3179        return diff < -6 ? 'sameElse' :
3180                diff < -1 ? 'lastWeek' :
3181                diff < 0 ? 'lastDay' :
3182                diff < 1 ? 'sameDay' :
3183                diff < 2 ? 'nextDay' :
3184                diff < 7 ? 'nextWeek' : 'sameElse';
3185    }
3186
3187    function calendar$1 (time, formats) {
3188        // We want to compare the start of today, vs this.
3189        // Getting start-of-today depends on whether we're local/utc/offset or not.
3190        var now = time || createLocal(),
3191            sod = cloneWithOffset(now, this).startOf('day'),
3192            format = hooks.calendarFormat(this, sod) || 'sameElse';
3193
3194        var output = formats && (isFunction(formats[format]) ? formats[format].call(this, now) : formats[format]);
3195
3196        return this.format(output || this.localeData().calendar(format, this, createLocal(now)));
3197    }
3198
3199    function clone () {
3200        return new Moment(this);
3201    }
3202
3203    function isAfter (input, units) {
3204        var localInput = isMoment(input) ? input : createLocal(input);
3205        if (!(this.isValid() && localInput.isValid())) {
3206            return false;
3207        }
3208        units = normalizeUnits(units) || 'millisecond';
3209        if (units === 'millisecond') {
3210            return this.valueOf() > localInput.valueOf();
3211        } else {
3212            return localInput.valueOf() < this.clone().startOf(units).valueOf();
3213        }
3214    }
3215
3216    function isBefore (input, units) {
3217        var localInput = isMoment(input) ? input : createLocal(input);
3218        if (!(this.isValid() && localInput.isValid())) {
3219            return false;
3220        }
3221        units = normalizeUnits(units) || 'millisecond';
3222        if (units === 'millisecond') {
3223            return this.valueOf() < localInput.valueOf();
3224        } else {
3225            return this.clone().endOf(units).valueOf() < localInput.valueOf();
3226        }
3227    }
3228
3229    function isBetween (from, to, units, inclusivity) {
3230        var localFrom = isMoment(from) ? from : createLocal(from),
3231            localTo = isMoment(to) ? to : createLocal(to);
3232        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {
3233            return false;
3234        }
3235        inclusivity = inclusivity || '()';
3236        return (inclusivity[0] === '(' ? this.isAfter(localFrom, units) : !this.isBefore(localFrom, units)) &&
3237            (inclusivity[1] === ')' ? this.isBefore(localTo, units) : !this.isAfter(localTo, units));
3238    }
3239
3240    function isSame (input, units) {
3241        var localInput = isMoment(input) ? input : createLocal(input),
3242            inputMs;
3243        if (!(this.isValid() && localInput.isValid())) {
3244            return false;
3245        }
3246        units = normalizeUnits(units) || 'millisecond';
3247        if (units === 'millisecond') {
3248            return this.valueOf() === localInput.valueOf();
3249        } else {
3250            inputMs = localInput.valueOf();
3251            return this.clone().startOf(units).valueOf() <= inputMs && inputMs <= this.clone().endOf(units).valueOf();
3252        }
3253    }
3254
3255    function isSameOrAfter (input, units) {
3256        return this.isSame(input, units) || this.isAfter(input, units);
3257    }
3258
3259    function isSameOrBefore (input, units) {
3260        return this.isSame(input, units) || this.isBefore(input, units);
3261    }
3262
3263    function diff (input, units, asFloat) {
3264        var that,
3265            zoneDelta,
3266            output;
3267
3268        if (!this.isValid()) {
3269            return NaN;
3270        }
3271
3272        that = cloneWithOffset(input, this);
3273
3274        if (!that.isValid()) {
3275            return NaN;
3276        }
3277
3278        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;
3279
3280        units = normalizeUnits(units);
3281
3282        switch (units) {
3283            case 'year': output = monthDiff(this, that) / 12; break;
3284            case 'month': output = monthDiff(this, that); break;
3285            case 'quarter': output = monthDiff(this, that) / 3; break;
3286            case 'second': output = (this - that) / 1e3; break; // 1000
3287            case 'minute': output = (this - that) / 6e4; break; // 1000 * 60
3288            case 'hour': output = (this - that) / 36e5; break; // 1000 * 60 * 60
3289            case 'day': output = (this - that - zoneDelta) / 864e5; break; // 1000 * 60 * 60 * 24, negate dst
3290            case 'week': output = (this - that - zoneDelta) / 6048e5; break; // 1000 * 60 * 60 * 24 * 7, negate dst
3291            default: output = this - that;
3292        }
3293
3294        return asFloat ? output : absFloor(output);
3295    }
3296
3297    function monthDiff (a, b) {
3298        // difference in months
3299        var wholeMonthDiff = ((b.year() - a.year()) * 12) + (b.month() - a.month()),
3300            // b is in (anchor - 1 month, anchor + 1 month)
3301            anchor = a.clone().add(wholeMonthDiff, 'months'),
3302            anchor2, adjust;
3303
3304        if (b - anchor < 0) {
3305            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');
3306            // linear across the month
3307            adjust = (b - anchor) / (anchor - anchor2);
3308        } else {
3309            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');
3310            // linear across the month
3311            adjust = (b - anchor) / (anchor2 - anchor);
3312        }
3313
3314        //check for negative zero, return zero if negative zero
3315        return -(wholeMonthDiff + adjust) || 0;
3316    }
3317
3318    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';
3319    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';
3320
3321    function toString () {
3322        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');
3323    }
3324
3325    function toISOString(keepOffset) {
3326        if (!this.isValid()) {
3327            return null;
3328        }
3329        var utc = keepOffset !== true;
3330        var m = utc ? this.clone().utc() : this;
3331        if (m.year() < 0 || m.year() > 9999) {
3332            return formatMoment(m, utc ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ');
3333        }
3334        if (isFunction(Date.prototype.toISOString)) {
3335            // native implementation is ~50x faster, use it when we can
3336            if (utc) {
3337                return this.toDate().toISOString();
3338            } else {
3339                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000).toISOString().replace('Z', formatMoment(m, 'Z'));
3340            }
3341        }
3342        return formatMoment(m, utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ');
3343    }
3344
3345    /**
3346     * Return a human readable representation of a moment that can
3347     * also be evaluated to get a new moment which is the same
3348     *
3349     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects
3350     */
3351    function inspect () {
3352        if (!this.isValid()) {
3353            return 'moment.invalid(/* ' + this._i + ' */)';
3354        }
3355        var func = 'moment';
3356        var zone = '';
3357        if (!this.isLocal()) {
3358            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';
3359            zone = 'Z';
3360        }
3361        var prefix = '[' + func + '("]';
3362        var year = (0 <= this.year() && this.year() <= 9999) ? 'YYYY' : 'YYYYYY';
3363        var datetime = '-MM-DD[T]HH:mm:ss.SSS';
3364        var suffix = zone + '[")]';
3365
3366        return this.format(prefix + year + datetime + suffix);
3367    }
3368
3369    function format (inputString) {
3370        if (!inputString) {
3371            inputString = this.isUtc() ? hooks.defaultFormatUtc : hooks.defaultFormat;
3372        }
3373        var output = formatMoment(this, inputString);
3374        return this.localeData().postformat(output);
3375    }
3376
3377    function from (time, withoutSuffix) {
3378        if (this.isValid() &&
3379                ((isMoment(time) && time.isValid()) ||
3380                 createLocal(time).isValid())) {
3381            return createDuration({to: this, from: time}).locale(this.locale()).humanize(!withoutSuffix);
3382        } else {
3383            return this.localeData().invalidDate();
3384        }
3385    }
3386
3387    function fromNow (withoutSuffix) {
3388        return this.from(createLocal(), withoutSuffix);
3389    }
3390
3391    function to (time, withoutSuffix) {
3392        if (this.isValid() &&
3393                ((isMoment(time) && time.isValid()) ||
3394                 createLocal(time).isValid())) {
3395            return createDuration({from: this, to: time}).locale(this.locale()).humanize(!withoutSuffix);
3396        } else {
3397            return this.localeData().invalidDate();
3398        }
3399    }
3400
3401    function toNow (withoutSuffix) {
3402        return this.to(createLocal(), withoutSuffix);
3403    }
3404
3405    // If passed a locale key, it will set the locale for this
3406    // instance.  Otherwise, it will return the locale configuration
3407    // variables for this instance.
3408    function locale (key) {
3409        var newLocaleData;
3410
3411        if (key === undefined) {
3412            return this._locale._abbr;
3413        } else {
3414            newLocaleData = getLocale(key);
3415            if (newLocaleData != null) {
3416                this._locale = newLocaleData;
3417            }
3418            return this;
3419        }
3420    }
3421
3422    var lang = deprecate(
3423        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',
3424        function (key) {
3425            if (key === undefined) {
3426                return this.localeData();
3427            } else {
3428                return this.locale(key);
3429            }
3430        }
3431    );
3432
3433    function localeData () {
3434        return this._locale;
3435    }
3436
3437    var MS_PER_SECOND = 1000;
3438    var MS_PER_MINUTE = 60 * MS_PER_SECOND;
3439    var MS_PER_HOUR = 60 * MS_PER_MINUTE;
3440    var MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;
3441
3442    // actual modulo - handles negative numbers (for dates before 1970):
3443    function mod$1(dividend, divisor) {
3444        return (dividend % divisor + divisor) % divisor;
3445    }
3446
3447    function localStartOfDate(y, m, d) {
3448        // the date constructor remaps years 0-99 to 1900-1999
3449        if (y < 100 && y >= 0) {
3450            // preserve leap years using a full 400 year cycle, then reset
3451            return new Date(y + 400, m, d) - MS_PER_400_YEARS;
3452        } else {
3453            return new Date(y, m, d).valueOf();
3454        }
3455    }
3456
3457    function utcStartOfDate(y, m, d) {
3458        // Date.UTC remaps years 0-99 to 1900-1999
3459        if (y < 100 && y >= 0) {
3460            // preserve leap years using a full 400 year cycle, then reset
3461            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;
3462        } else {
3463            return Date.UTC(y, m, d);
3464        }
3465    }
3466
3467    function startOf (units) {
3468        var time;
3469        units = normalizeUnits(units);
3470        if (units === undefined || units === 'millisecond' || !this.isValid()) {
3471            return this;
3472        }
3473
3474        var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
3475
3476        switch (units) {
3477            case 'year':
3478                time = startOfDate(this.year(), 0, 1);
3479                break;
3480            case 'quarter':
3481                time = startOfDate(this.year(), this.month() - this.month() % 3, 1);
3482                break;
3483            case 'month':
3484                time = startOfDate(this.year(), this.month(), 1);
3485                break;
3486            case 'week':
3487                time = startOfDate(this.year(), this.month(), this.date() - this.weekday());
3488                break;
3489            case 'isoWeek':
3490                time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1));
3491                break;
3492            case 'day':
3493            case 'date':
3494                time = startOfDate(this.year(), this.month(), this.date());
3495                break;
3496            case 'hour':
3497                time = this._d.valueOf();
3498                time -= mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR);
3499                break;
3500            case 'minute':
3501                time = this._d.valueOf();
3502                time -= mod$1(time, MS_PER_MINUTE);
3503                break;
3504            case 'second':
3505                time = this._d.valueOf();
3506                time -= mod$1(time, MS_PER_SECOND);
3507                break;
3508        }
3509
3510        this._d.setTime(time);
3511        hooks.updateOffset(this, true);
3512        return this;
3513    }
3514
3515    function endOf (units) {
3516        var time;
3517        units = normalizeUnits(units);
3518        if (units === undefined || units === 'millisecond' || !this.isValid()) {
3519            return this;
3520        }
3521
3522        var startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;
3523
3524        switch (units) {
3525            case 'year':
3526                time = startOfDate(this.year() + 1, 0, 1) - 1;
3527                break;
3528            case 'quarter':
3529                time = startOfDate(this.year(), this.month() - this.month() % 3 + 3, 1) - 1;
3530                break;
3531            case 'month':
3532                time = startOfDate(this.year(), this.month() + 1, 1) - 1;
3533                break;
3534            case 'week':
3535                time = startOfDate(this.year(), this.month(), this.date() - this.weekday() + 7) - 1;
3536                break;
3537            case 'isoWeek':
3538                time = startOfDate(this.year(), this.month(), this.date() - (this.isoWeekday() - 1) + 7) - 1;
3539                break;
3540            case 'day':
3541            case 'date':
3542                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;
3543                break;
3544            case 'hour':
3545                time = this._d.valueOf();
3546                time += MS_PER_HOUR - mod$1(time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE), MS_PER_HOUR) - 1;
3547                break;
3548            case 'minute':
3549                time = this._d.valueOf();
3550                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;
3551                break;
3552            case 'second':
3553                time = this._d.valueOf();
3554                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;
3555                break;
3556        }
3557
3558        this._d.setTime(time);
3559        hooks.updateOffset(this, true);
3560        return this;
3561    }
3562
3563    function valueOf () {
3564        return this._d.valueOf() - ((this._offset || 0) * 60000);
3565    }
3566
3567    function unix () {
3568        return Math.floor(this.valueOf() / 1000);
3569    }
3570
3571    function toDate () {
3572        return new Date(this.valueOf());
3573    }
3574
3575    function toArray () {
3576        var m = this;
3577        return [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second(), m.millisecond()];
3578    }
3579
3580    function toObject () {
3581        var m = this;
3582        return {
3583            years: m.year(),
3584            months: m.month(),
3585            date: m.date(),
3586            hours: m.hours(),
3587            minutes: m.minutes(),
3588            seconds: m.seconds(),
3589            milliseconds: m.milliseconds()
3590        };
3591    }
3592
3593    function toJSON () {
3594        // new Date(NaN).toJSON() === null
3595        return this.isValid() ? this.toISOString() : null;
3596    }
3597
3598    function isValid$2 () {
3599        return 
vendor: 1,856 bytes, lines 3599-3666
3599isValid(this);
3600    }
3601
3602    function parsingFlags () {
3603        return extend({}, getParsingFlags(this));
3604    }
3605
3606    function invalidAt () {
3607        return getParsingFlags(this).overflow;
3608    }
3609
3610    function creationData() {
3611        return {
3612            input: this._i,
3613            format: this._f,
3614            locale: this._locale,
3615            isUTC: this._isUTC,
3616            strict: this._strict
3617        };
3618    }
3619
3620    // FORMATTING
3621
3622    addFormatToken(0, ['gg', 2], 0, function () {
3623        return this.weekYear() % 100;
3624    });
3625
3626    addFormatToken(0, ['GG', 2], 0, function () {
3627        return this.isoWeekYear() % 100;
3628    });
3629
3630    function addWeekYearFormatToken (token, getter) {
3631        addFormatToken(0, [token, token.length], 0, getter);
3632    }
3633
3634    addWeekYearFormatToken('gggg',     'weekYear');
3635    addWeekYearFormatToken('ggggg',    'weekYear');
3636    addWeekYearFormatToken('GGGG',  'isoWeekYear');
3637    addWeekYearFormatToken('GGGGG', 'isoWeekYear');
3638
3639    // ALIASES
3640
3641    addUnitAlias('weekYear', 'gg');
3642    addUnitAlias('isoWeekYear', 'GG');
3643
3644    // PRIORITY
3645
3646    addUnitPriority('weekYear', 1);
3647    addUnitPriority('isoWeekYear', 1);
3648
3649
3650    // PARSING
3651
3652    addRegexToken('G',      matchSigned);
3653    addRegexToken('g',      matchSigned);
3654    addRegexToken('GG',     match1to2, match2);
3655    addRegexToken('gg',     match1to2, match2);
3656    addRegexToken('GGGG',   match1to4, match4);
3657    addRegexToken('gggg',   match1to4, match4);
3658    addRegexToken('GGGGG',  match1to6, match6);
3659    addRegexToken('ggggg',  match1to6, match6);
3660
3661    addWeekParseToken(['gggg', 'ggggg', 'GGGG', 'GGGGG'], function (input, week, config, token) {
3662        week[token.substr(0, 2)] = toInt(input);
3663    });
3664
3665    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {
3666        week[token] = 
vendor: 1,815 bytes, lines 3666-3731
3666hooks.parseTwoDigitYear(input);
3667    });
3668
3669    // MOMENTS
3670
3671    function getSetWeekYear (input) {
3672        return getSetWeekYearHelper.call(this,
3673                input,
3674                this.week(),
3675                this.weekday(),
3676                this.localeData()._week.dow,
3677                this.localeData()._week.doy);
3678    }
3679
3680    function getSetISOWeekYear (input) {
3681        return getSetWeekYearHelper.call(this,
3682                input, this.isoWeek(), this.isoWeekday(), 1, 4);
3683    }
3684
3685    function getISOWeeksInYear () {
3686        return weeksInYear(this.year(), 1, 4);
3687    }
3688
3689    function getWeeksInYear () {
3690        var weekInfo = this.localeData()._week;
3691        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);
3692    }
3693
3694    function getSetWeekYearHelper(input, week, weekday, dow, doy) {
3695        var weeksTarget;
3696        if (input == null) {
3697            return weekOfYear(this, dow, doy).year;
3698        } else {
3699            weeksTarget = weeksInYear(input, dow, doy);
3700            if (week > weeksTarget) {
3701                week = weeksTarget;
3702            }
3703            return setWeekAll.call(this, input, week, weekday, dow, doy);
3704        }
3705    }
3706
3707    function setWeekAll(weekYear, week, weekday, dow, doy) {
3708        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),
3709            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);
3710
3711        this.year(date.getUTCFullYear());
3712        this.month(date.getUTCMonth());
3713        this.date(date.getUTCDate());
3714        return this;
3715    }
3716
3717    // FORMATTING
3718
3719    addFormatToken('Q', 0, 'Qo', 'quarter');
3720
3721    // ALIASES
3722
3723    addUnitAlias('quarter', 'Q');
3724
3725    // PRIORITY
3726
3727    addUnitPriority('quarter', 7);
3728
3729    // PARSING
3730
3731    addRegexToken('Q', match1);
vendor: 26,509 bytes, lines 3732-4541
3732    addParseToken('Q', function (input, array) {
3733        array[MONTH] = (toInt(input) - 1) * 3;
3734    });
3735
3736    // MOMENTS
3737
3738    function getSetQuarter (input) {
3739        return input == null ? Math.ceil((this.month() + 1) / 3) : this.month((input - 1) * 3 + this.month() % 3);
3740    }
3741
3742    // FORMATTING
3743
3744    addFormatToken('D', ['DD', 2], 'Do', 'date');
3745
3746    // ALIASES
3747
3748    addUnitAlias('date', 'D');
3749
3750    // PRIORITY
3751    addUnitPriority('date', 9);
3752
3753    // PARSING
3754
3755    addRegexToken('D',  match1to2);
3756    addRegexToken('DD', match1to2, match2);
3757    addRegexToken('Do', function (isStrict, locale) {
3758        // TODO: Remove "ordinalParse" fallback in next major release.
3759        return isStrict ?
3760          (locale._dayOfMonthOrdinalParse || locale._ordinalParse) :
3761          locale._dayOfMonthOrdinalParseLenient;
3762    });
3763
3764    addParseToken(['D', 'DD'], DATE);
3765    addParseToken('Do', function (input, array) {
3766        array[DATE] = toInt(input.match(match1to2)[0]);
3767    });
3768
3769    // MOMENTS
3770
3771    var getSetDayOfMonth = makeGetSet('Date', true);
3772
3773    // FORMATTING
3774
3775    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');
3776
3777    // ALIASES
3778
3779    addUnitAlias('dayOfYear', 'DDD');
3780
3781    // PRIORITY
3782    addUnitPriority('dayOfYear', 4);
3783
3784    // PARSING
3785
3786    addRegexToken('DDD',  match1to3);
3787    addRegexToken('DDDD', match3);
3788    addParseToken(['DDD', 'DDDD'], function (input, array, config) {
3789        config._dayOfYear = toInt(input);
3790    });
3791
3792    // HELPERS
3793
3794    // MOMENTS
3795
3796    function getSetDayOfYear (input) {
3797        var dayOfYear = Math.round((this.clone().startOf('day') - this.clone().startOf('year')) / 864e5) + 1;
3798        return input == null ? dayOfYear : this.add((input - dayOfYear), 'd');
3799    }
3800
3801    // FORMATTING
3802
3803    addFormatToken('m', ['mm', 2], 0, 'minute');
3804
3805    // ALIASES
3806
3807    addUnitAlias('minute', 'm');
3808
3809    // PRIORITY
3810
3811    addUnitPriority('minute', 14);
3812
3813    // PARSING
3814
3815    addRegexToken('m',  match1to2);
3816    addRegexToken('mm', match1to2, match2);
3817    addParseToken(['m', 'mm'], MINUTE);
3818
3819    // MOMENTS
3820
3821    var getSetMinute = makeGetSet('Minutes', false);
3822
3823    // FORMATTING
3824
3825    addFormatToken('s', ['ss', 2], 0, 'second');
3826
3827    // ALIASES
3828
3829    addUnitAlias('second', 's');
3830
3831    // PRIORITY
3832
3833    addUnitPriority('second', 15);
3834
3835    // PARSING
3836
3837    addRegexToken('s',  match1to2);
3838    addRegexToken('ss', match1to2, match2);
3839    addParseToken(['s', 'ss'], SECOND);
3840
3841    // MOMENTS
3842
3843    var getSetSecond = makeGetSet('Seconds', false);
3844
3845    // FORMATTING
3846
3847    addFormatToken('S', 0, 0, function () {
3848        return ~~(this.millisecond() / 100);
3849    });
3850
3851    addFormatToken(0, ['SS', 2], 0, function () {
3852        return ~~(this.millisecond() / 10);
3853    });
3854
3855    addFormatToken(0, ['SSS', 3], 0, 'millisecond');
3856    addFormatToken(0, ['SSSS', 4], 0, function () {
3857        return this.millisecond() * 10;
3858    });
3859    addFormatToken(0, ['SSSSS', 5], 0, function () {
3860        return this.millisecond() * 100;
3861    });
3862    addFormatToken(0, ['SSSSSS', 6], 0, function () {
3863        return this.millisecond() * 1000;
3864    });
3865    addFormatToken(0, ['SSSSSSS', 7], 0, function () {
3866        return this.millisecond() * 10000;
3867    });
3868    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {
3869        return this.millisecond() * 100000;
3870    });
3871    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {
3872        return this.millisecond() * 1000000;
3873    });
3874
3875
3876    // ALIASES
3877
3878    addUnitAlias('millisecond', 'ms');
3879
3880    // PRIORITY
3881
3882    addUnitPriority('millisecond', 16);
3883
3884    // PARSING
3885
3886    addRegexToken('S',    match1to3, match1);
3887    addRegexToken('SS',   match1to3, match2);
3888    addRegexToken('SSS',  match1to3, match3);
3889
3890    var token;
3891    for (token = 'SSSS'; token.length <= 9; token += 'S') {
3892        addRegexToken(token, matchUnsigned);
3893    }
3894
3895    function parseMs(input, array) {
3896        array[MILLISECOND] = toInt(('0.' + input) * 1000);
3897    }
3898
3899    for (token = 'S'; token.length <= 9; token += 'S') {
3900        addParseToken(token, parseMs);
3901    }
3902    // MOMENTS
3903
3904    var getSetMillisecond = makeGetSet('Milliseconds', false);
3905
3906    // FORMATTING
3907
3908    addFormatToken('z',  0, 0, 'zoneAbbr');
3909    addFormatToken('zz', 0, 0, 'zoneName');
3910
3911    // MOMENTS
3912
3913    function getZoneAbbr () {
3914        return this._isUTC ? 'UTC' : '';
3915    }
3916
3917    function getZoneName () {
3918        return this._isUTC ? 'Coordinated Universal Time' : '';
3919    }
3920
3921    var proto = Moment.prototype;
3922
3923    proto.add               = add;
3924    proto.calendar          = calendar$1;
3925    proto.clone             = clone;
3926    proto.diff              = diff;
3927    proto.endOf             = endOf;
3928    proto.format            = format;
3929    proto.from              = from;
3930    proto.fromNow           = fromNow;
3931    proto.to                = to;
3932    proto.toNow             = toNow;
3933    proto.get               = stringGet;
3934    proto.invalidAt         = invalidAt;
3935    proto.isAfter           = isAfter;
3936    proto.isBefore          = isBefore;
3937    proto.isBetween         = isBetween;
3938    proto.isSame            = isSame;
3939    proto.isSameOrAfter     = isSameOrAfter;
3940    proto.isSameOrBefore    = isSameOrBefore;
3941    proto.isValid           = isValid$2;
3942    proto.lang              = lang;
3943    proto.locale            = locale;
3944    proto.localeData        = localeData;
3945    proto.max               = prototypeMax;
3946    proto.min               = prototypeMin;
3947    proto.parsingFlags      = parsingFlags;
3948    proto.set               = stringSet;
3949    proto.startOf           = startOf;
3950    proto.subtract          = subtract;
3951    proto.toArray           = toArray;
3952    proto.toObject          = toObject;
3953    proto.toDate            = toDate;
3954    proto.toISOString       = toISOString;
3955    proto.inspect           = inspect;
3956    proto.toJSON            = toJSON;
3957    proto.toString          = toString;
3958    proto.unix              = unix;
3959    proto.valueOf           = valueOf;
3960    proto.creationData      = creationData;
3961    proto.year       = getSetYear;
3962    proto.isLeapYear = getIsLeapYear;
3963    proto.weekYear    = getSetWeekYear;
3964    proto.isoWeekYear = getSetISOWeekYear;
3965    proto.quarter = proto.quarters = getSetQuarter;
3966    proto.month       = getSetMonth;
3967    proto.daysInMonth = getDaysInMonth;
3968    proto.week           = proto.weeks        = getSetWeek;
3969    proto.isoWeek        = proto.isoWeeks     = getSetISOWeek;
3970    proto.weeksInYear    = getWeeksInYear;
3971    proto.isoWeeksInYear = getISOWeeksInYear;
3972    proto.date       = getSetDayOfMonth;
3973    proto.day        = proto.days             = getSetDayOfWeek;
3974    proto.weekday    = getSetLocaleDayOfWeek;
3975    proto.isoWeekday = getSetISODayOfWeek;
3976    proto.dayOfYear  = getSetDayOfYear;
3977    proto.hour = proto.hours = getSetHour;
3978    proto.minute = proto.minutes = getSetMinute;
3979    proto.second = proto.seconds = getSetSecond;
3980    proto.millisecond = proto.milliseconds = getSetMillisecond;
3981    proto.utcOffset            = getSetOffset;
3982    proto.utc                  = setOffsetToUTC;
3983    proto.local                = setOffsetToLocal;
3984    proto.parseZone            = setOffsetToParsedOffset;
3985    proto.hasAlignedHourOffset = hasAlignedHourOffset;
3986    proto.isDST                = isDaylightSavingTime;
3987    proto.isLocal              = isLocal;
3988    proto.isUtcOffset          = isUtcOffset;
3989    proto.isUtc                = isUtc;
3990    proto.isUTC                = isUtc;
3991    proto.zoneAbbr = getZoneAbbr;
3992    proto.zoneName = getZoneName;
3993    proto.dates  = deprecate('dates accessor is deprecated. Use date instead.', getSetDayOfMonth);
3994    proto.months = deprecate('months accessor is deprecated. Use month instead', getSetMonth);
3995    proto.years  = deprecate('years accessor is deprecated. Use year instead', getSetYear);
3996    proto.zone   = deprecate('moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/', getSetZone);
3997    proto.isDSTShifted = deprecate('isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information', isDaylightSavingTimeShifted);
3998
3999    function createUnix (input) {
4000        return createLocal(input * 1000);
4001    }
4002
4003    function createInZone () {
4004        return createLocal.apply(null, arguments).parseZone();
4005    }
4006
4007    function preParsePostFormat (string) {
4008        return string;
4009    }
4010
4011    var proto$1 = Locale.prototype;
4012
4013    proto$1.calendar        = calendar;
4014    proto$1.longDateFormat  = longDateFormat;
4015    proto$1.invalidDate     = invalidDate;
4016    proto$1.ordinal         = ordinal;
4017    proto$1.preparse        = preParsePostFormat;
4018    proto$1.postformat      = preParsePostFormat;
4019    proto$1.relativeTime    = relativeTime;
4020    proto$1.pastFuture      = pastFuture;
4021    proto$1.set             = set;
4022
4023    proto$1.months            =        localeMonths;
4024    proto$1.monthsShort       =        localeMonthsShort;
4025    proto$1.monthsParse       =        localeMonthsParse;
4026    proto$1.monthsRegex       = monthsRegex;
4027    proto$1.monthsShortRegex  = monthsShortRegex;
4028    proto$1.week = localeWeek;
4029    proto$1.firstDayOfYear = localeFirstDayOfYear;
4030    proto$1.firstDayOfWeek = localeFirstDayOfWeek;
4031
4032    proto$1.weekdays       =        localeWeekdays;
4033    proto$1.weekdaysMin    =        localeWeekdaysMin;
4034    proto$1.weekdaysShort  =        localeWeekdaysShort;
4035    proto$1.weekdaysParse  =        localeWeekdaysParse;
4036
4037    proto$1.weekdaysRegex       =        weekdaysRegex;
4038    proto$1.weekdaysShortRegex  =        weekdaysShortRegex;
4039    proto$1.weekdaysMinRegex    =        weekdaysMinRegex;
4040
4041    proto$1.isPM = localeIsPM;
4042    proto$1.meridiem = localeMeridiem;
4043
4044    function get$1 (format, index, field, setter) {
4045        var locale = getLocale();
4046        var utc = createUTC().set(setter, index);
4047        return locale[field](utc, format);
4048    }
4049
4050    function listMonthsImpl (format, index, field) {
4051        if (isNumber(format)) {
4052            index = format;
4053            format = undefined;
4054        }
4055
4056        format = format || '';
4057
4058        if (index != null) {
4059            return get$1(format, index, field, 'month');
4060        }
4061
4062        var i;
4063        var out = [];
4064        for (i = 0; i < 12; i++) {
4065            out[i] = get$1(format, i, field, 'month');
4066        }
4067        return out;
4068    }
4069
4070    // ()
4071    // (5)
4072    // (fmt, 5)
4073    // (fmt)
4074    // (true)
4075    // (true, 5)
4076    // (true, fmt, 5)
4077    // (true, fmt)
4078    function listWeekdaysImpl (localeSorted, format, index, field) {
4079        if (typeof localeSorted === 'boolean') {
4080            if (isNumber(format)) {
4081                index = format;
4082                format = undefined;
4083            }
4084
4085            format = format || '';
4086        } else {
4087            format = localeSorted;
4088            index = format;
4089            localeSorted = false;
4090
4091            if (isNumber(format)) {
4092                index = format;
4093                format = undefined;
4094            }
4095
4096            format = format || '';
4097        }
4098
4099        var locale = getLocale(),
4100            shift = localeSorted ? locale._week.dow : 0;
4101
4102        if (index != null) {
4103            return get$1(format, (index + shift) % 7, field, 'day');
4104        }
4105
4106        var i;
4107        var out = [];
4108        for (i = 0; i < 7; i++) {
4109            out[i] = get$1(format, (i + shift) % 7, field, 'day');
4110        }
4111        return out;
4112    }
4113
4114    function listMonths (format, index) {
4115        return listMonthsImpl(format, index, 'months');
4116    }
4117
4118    function listMonthsShort (format, index) {
4119        return listMonthsImpl(format, index, 'monthsShort');
4120    }
4121
4122    function listWeekdays (localeSorted, format, index) {
4123        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');
4124    }
4125
4126    function listWeekdaysShort (localeSorted, format, index) {
4127        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');
4128    }
4129
4130    function listWeekdaysMin (localeSorted, format, index) {
4131        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');
4132    }
4133
4134    getSetGlobalLocale('en', {
4135        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
4136        ordinal : function (number) {
4137            var b = number % 10,
4138                output = (toInt(number % 100 / 10) === 1) ? 'th' :
4139                (b === 1) ? 'st' :
4140                (b === 2) ? 'nd' :
4141                (b === 3) ? 'rd' : 'th';
4142            return number + output;
4143        }
4144    });
4145
4146    // Side effect imports
4147
4148    hooks.lang = deprecate('moment.lang is deprecated. Use moment.locale instead.', getSetGlobalLocale);
4149    hooks.langData = deprecate('moment.langData is deprecated. Use moment.localeData instead.', getLocale);
4150
4151    var mathAbs = Math.abs;
4152
4153    function abs () {
4154        var data           = this._data;
4155
4156        this._milliseconds = mathAbs(this._milliseconds);
4157        this._days         = mathAbs(this._days);
4158        this._months       = mathAbs(this._months);
4159
4160        data.milliseconds  = mathAbs(data.milliseconds);
4161        data.seconds       = mathAbs(data.seconds);
4162        data.minutes       = mathAbs(data.minutes);
4163        data.hours         = mathAbs(data.hours);
4164        data.months        = mathAbs(data.months);
4165        data.years         = mathAbs(data.years);
4166
4167        return this;
4168    }
4169
4170    function addSubtract$1 (duration, input, value, direction) {
4171        var other = createDuration(input, value);
4172
4173        duration._milliseconds += direction * other._milliseconds;
4174        duration._days         += direction * other._days;
4175        duration._months       += direction * other._months;
4176
4177        return duration._bubble();
4178    }
4179
4180    // supports only 2.0-style add(1, 's') or add(duration)
4181    function add$1 (input, value) {
4182        return addSubtract$1(this, input, value, 1);
4183    }
4184
4185    // supports only 2.0-style subtract(1, 's') or subtract(duration)
4186    function subtract$1 (input, value) {
4187        return addSubtract$1(this, input, value, -1);
4188    }
4189
4190    function absCeil (number) {
4191        if (number < 0) {
4192            return Math.floor(number);
4193        } else {
4194            return Math.ceil(number);
4195        }
4196    }
4197
4198    function bubble () {
4199        var milliseconds = this._milliseconds;
4200        var days         = this._days;
4201        var months       = this._months;
4202        var data         = this._data;
4203        var seconds, minutes, hours, years, monthsFromDays;
4204
4205        // if we have a mix of positive and negative values, bubble down first
4206        // check: https://github.com/moment/moment/issues/2166
4207        if (!((milliseconds >= 0 && days >= 0 && months >= 0) ||
4208                (milliseconds <= 0 && days <= 0 && months <= 0))) {
4209            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;
4210            days = 0;
4211            months = 0;
4212        }
4213
4214        // The following code bubbles up values, see the tests for
4215        // examples of what that means.
4216        data.milliseconds = milliseconds % 1000;
4217
4218        seconds           = absFloor(milliseconds / 1000);
4219        data.seconds      = seconds % 60;
4220
4221        minutes           = absFloor(seconds / 60);
4222        data.minutes      = minutes % 60;
4223
4224        hours             = absFloor(minutes / 60);
4225        data.hours        = hours % 24;
4226
4227        days += absFloor(hours / 24);
4228
4229        // convert days to months
4230        monthsFromDays = absFloor(daysToMonths(days));
4231        months += monthsFromDays;
4232        days -= absCeil(monthsToDays(monthsFromDays));
4233
4234        // 12 months -> 1 year
4235        years = absFloor(months / 12);
4236        months %= 12;
4237
4238        data.days   = days;
4239        data.months = months;
4240        data.years  = years;
4241
4242        return this;
4243    }
4244
4245    function daysToMonths (days) {
4246        // 400 years have 146097 days (taking into account leap year rules)
4247        // 400 years have 12 months === 4800
4248        return days * 4800 / 146097;
4249    }
4250
4251    function monthsToDays (months) {
4252        // the reverse of daysToMonths
4253        return months * 146097 / 4800;
4254    }
4255
4256    function as (units) {
4257        if (!this.isValid()) {
4258            return NaN;
4259        }
4260        var days;
4261        var months;
4262        var milliseconds = this._milliseconds;
4263
4264        units = normalizeUnits(units);
4265
4266        if (units === 'month' || units === 'quarter' || units === 'year') {
4267            days = this._days + milliseconds / 864e5;
4268            months = this._months + daysToMonths(days);
4269            switch (units) {
4270                case 'month':   return months;
4271                case 'quarter': return months / 3;
4272                case 'year':    return months / 12;
4273            }
4274        } else {
4275            // handle milliseconds separately because of floating point math errors (issue #1867)
4276            days = this._days + Math.round(monthsToDays(this._months));
4277            switch (units) {
4278                case 'week'   : return days / 7     + milliseconds / 6048e5;
4279                case 'day'    : return days         + milliseconds / 864e5;
4280                case 'hour'   : return days * 24    + milliseconds / 36e5;
4281                case 'minute' : return days * 1440  + milliseconds / 6e4;
4282                case 'second' : return days * 86400 + milliseconds / 1000;
4283                // Math.floor prevents floating point math errors here
4284                case 'millisecond': return Math.floor(days * 864e5) + milliseconds;
4285                default: throw new Error('Unknown unit ' + units);
4286            }
4287        }
4288    }
4289
4290    // TODO: Use this.as('ms')?
4291    function valueOf$1 () {
4292        if (!this.isValid()) {
4293            return NaN;
4294        }
4295        return (
4296            this._milliseconds +
4297            this._days * 864e5 +
4298            (this._months % 12) * 2592e6 +
4299            toInt(this._months / 12) * 31536e6
4300        );
4301    }
4302
4303    function makeAs (alias) {
4304        return function () {
4305            return this.as(alias);
4306        };
4307    }
4308
4309    var asMilliseconds = makeAs('ms');
4310    var asSeconds      = makeAs('s');
4311    var asMinutes      = makeAs('m');
4312    var asHours        = makeAs('h');
4313    var asDays         = makeAs('d');
4314    var asWeeks        = makeAs('w');
4315    var asMonths       = makeAs('M');
4316    var asQuarters     = makeAs('Q');
4317    var asYears        = makeAs('y');
4318
4319    function clone$1 () {
4320        return createDuration(this);
4321    }
4322
4323    function get$2 (units) {
4324        units = normalizeUnits(units);
4325        return this.isValid() ? this[units + 's']() : NaN;
4326    }
4327
4328    function makeGetter(name) {
4329        return function () {
4330            return this.isValid() ? this._data[name] : NaN;
4331        };
4332    }
4333
4334    var milliseconds = makeGetter('milliseconds');
4335    var seconds      = makeGetter('seconds');
4336    var minutes      = makeGetter('minutes');
4337    var hours        = makeGetter('hours');
4338    var days         = makeGetter('days');
4339    var months       = makeGetter('months');
4340    var years        = makeGetter('years');
4341
4342    function weeks () {
4343        return absFloor(this.days() / 7);
4344    }
4345
4346    var round = Math.round;
4347    var thresholds = {
4348        ss: 44,         // a few seconds to seconds
4349        s : 45,         // seconds to minute
4350        m : 45,         // minutes to hour
4351        h : 22,         // hours to day
4352        d : 26,         // days to month
4353        M : 11          // months to year
4354    };
4355
4356    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
4357    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {
4358        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);
4359    }
4360
4361    function relativeTime$1 (posNegDuration, withoutSuffix, locale) {
4362        var duration = createDuration(posNegDuration).abs();
4363        var seconds  = round(duration.as('s'));
4364        var minutes  = round(duration.as('m'));
4365        var hours    = round(duration.as('h'));
4366        var days     = round(duration.as('d'));
4367        var months   = round(duration.as('M'));
4368        var years    = round(duration.as('y'));
4369
4370        var a = seconds <= thresholds.ss && ['s', seconds]  ||
4371                seconds < thresholds.s   && ['ss', seconds] ||
4372                minutes <= 1             && ['m']           ||
4373                minutes < thresholds.m   && ['mm', minutes] ||
4374                hours   <= 1             && ['h']           ||
4375                hours   < thresholds.h   && ['hh', hours]   ||
4376                days    <= 1             && ['d']           ||
4377                days    < thresholds.d   && ['dd', days]    ||
4378                months  <= 1             && ['M']           ||
4379                months  < thresholds.M   && ['MM', months]  ||
4380                years   <= 1             && ['y']           || ['yy', years];
4381
4382        a[2] = withoutSuffix;
4383        a[3] = +posNegDuration > 0;
4384        a[4] = locale;
4385        return substituteTimeAgo.apply(null, a);
4386    }
4387
4388    // This function allows you to set the rounding function for relative time strings
4389    function getSetRelativeTimeRounding (roundingFunction) {
4390        if (roundingFunction === undefined) {
4391            return round;
4392        }
4393        if (typeof(roundingFunction) === 'function') {
4394            round = roundingFunction;
4395            return true;
4396        }
4397        return false;
4398    }
4399
4400    // This function allows you to set a threshold for relative time strings
4401    function getSetRelativeTimeThreshold (threshold, limit) {
4402        if (thresholds[threshold] === undefined) {
4403            return false;
4404        }
4405        if (limit === undefined) {
4406            return thresholds[threshold];
4407        }
4408        thresholds[threshold] = limit;
4409        if (threshold === 's') {
4410            thresholds.ss = limit - 1;
4411        }
4412        return true;
4413    }
4414
4415    function humanize (withSuffix) {
4416        if (!this.isValid()) {
4417            return this.localeData().invalidDate();
4418        }
4419
4420        var locale = this.localeData();
4421        var output = relativeTime$1(this, !withSuffix, locale);
4422
4423        if (withSuffix) {
4424            output = locale.pastFuture(+this, output);
4425        }
4426
4427        return locale.postformat(output);
4428    }
4429
4430    var abs$1 = Math.abs;
4431
4432    function sign(x) {
4433        return ((x > 0) - (x < 0)) || +x;
4434    }
4435
4436    function toISOString$1() {
4437        // for ISO strings we do not use the normal bubbling rules:
4438        //  * milliseconds bubble up until they become hours
4439        //  * days do not bubble at all
4440        //  * months bubble up until they become years
4441        // This is because there is no context-free conversion between hours and days
4442        // (think of clock changes)
4443        // and also not between days and months (28-31 days per month)
4444        if (!this.isValid()) {
4445            return this.localeData().invalidDate();
4446        }
4447
4448        var seconds = abs$1(this._milliseconds) / 1000;
4449        var days         = abs$1(this._days);
4450        var months       = abs$1(this._months);
4451        var minutes, hours, years;
4452
4453        // 3600 seconds -> 60 minutes -> 1 hour
4454        minutes           = absFloor(seconds / 60);
4455        hours             = absFloor(minutes / 60);
4456        seconds %= 60;
4457        minutes %= 60;
4458
4459        // 12 months -> 1 year
4460        years  = absFloor(months / 12);
4461        months %= 12;
4462
4463
4464        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
4465        var Y = years;
4466        var M = months;
4467        var D = days;
4468        var h = hours;
4469        var m = minutes;
4470        var s = seconds ? seconds.toFixed(3).replace(/\.?0+$/, '') : '';
4471        var total = this.asSeconds();
4472
4473        if (!total) {
4474            // this is the same as C#'s (Noda) and python (isodate)...
4475            // but not other JS (goog.date)
4476            return 'P0D';
4477        }
4478
4479        var totalSign = total < 0 ? '-' : '';
4480        var ymSign = sign(this._months) !== sign(total) ? '-' : '';
4481        var daysSign = sign(this._days) !== sign(total) ? '-' : '';
4482        var hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';
4483
4484        return totalSign + 'P' +
4485            (Y ? ymSign + Y + 'Y' : '') +
4486            (M ? ymSign + M + 'M' : '') +
4487            (D ? daysSign + D + 'D' : '') +
4488            ((h || m || s) ? 'T' : '') +
4489            (h ? hmsSign + h + 'H' : '') +
4490            (m ? hmsSign + m + 'M' : '') +
4491            (s ? hmsSign + s + 'S' : '');
4492    }
4493
4494    var proto$2 = Duration.prototype;
4495
4496    proto$2.isValid        = isValid$1;
4497    proto$2.abs            = abs;
4498    proto$2.add            = add$1;
4499    proto$2.subtract       = subtract$1;
4500    proto$2.as             = as;
4501    proto$2.asMilliseconds = asMilliseconds;
4502    proto$2.asSeconds      = asSeconds;
4503    proto$2.asMinutes      = asMinutes;
4504    proto$2.asHours        = asHours;
4505    proto$2.asDays         = asDays;
4506    proto$2.asWeeks        = asWeeks;
4507    proto$2.asMonths       = asMonths;
4508    proto$2.asQuarters     = asQuarters;
4509    proto$2.asYears        = asYears;
4510    proto$2.valueOf        = valueOf$1;
4511    proto$2._bubble        = bubble;
4512    proto$2.clone          = clone$1;
4513    proto$2.get            = get$2;
4514    proto$2.milliseconds   = milliseconds;
4515    proto$2.seconds        = seconds;
4516    proto$2.minutes        = minutes;
4517    proto$2.hours          = hours;
4518    proto$2.days           = days;
4519    proto$2.weeks          = weeks;
4520    proto$2.months         = months;
4521    proto$2.years          = years;
4522    proto$2.humanize       = humanize;
4523    proto$2.toISOString    = toISOString$1;
4524    proto$2.toString       = toISOString$1;
4525    proto$2.toJSON         = toISOString$1;
4526    proto$2.locale         = locale;
4527    proto$2.localeData     = localeData;
4528
4529    proto$2.toIsoString = deprecate('toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)', toISOString$1);
4530    proto$2.lang = lang;
4531
4532    // Side effect imports
4533
4534    // FORMATTING
4535
4536    addFormatToken('X', 0, 0, 'unix');
4537    addFormatToken('x', 0, 0, 'valueOf');
4538
4539    // PARSING
4540
4541    addRegexToken('x', matchSigned);
vendor: 29,352 bytes, lines 4542-5287
4542    addRegexToken('X', matchTimestamp);
4543    addParseToken('X', function (input, array, config) {
4544        config._d = new Date(parseFloat(input, 10) * 1000);
4545    });
4546    addParseToken('x', function (input, array, config) {
4547        config._d = new Date(toInt(input));
4548    });
4549
4550    // Side effect imports
4551
4552    //! moment.js
4553
4554    hooks.version = '2.24.0';
4555
4556    setHookCallback(createLocal);
4557
4558    hooks.fn                    = proto;
4559    hooks.min                   = min;
4560    hooks.max                   = max;
4561    hooks.now                   = now;
4562    hooks.utc                   = createUTC;
4563    hooks.unix                  = createUnix;
4564    hooks.months                = listMonths;
4565    hooks.isDate                = isDate;
4566    hooks.locale                = getSetGlobalLocale;
4567    hooks.invalid               = createInvalid;
4568    hooks.duration              = createDuration;
4569    hooks.isMoment              = isMoment;
4570    hooks.weekdays              = listWeekdays;
4571    hooks.parseZone             = createInZone;
4572    hooks.localeData            = getLocale;
4573    hooks.isDuration            = isDuration;
4574    hooks.monthsShort           = listMonthsShort;
4575    hooks.weekdaysMin           = listWeekdaysMin;
4576    hooks.defineLocale          = defineLocale;
4577    hooks.updateLocale          = updateLocale;
4578    hooks.locales               = listLocales;
4579    hooks.weekdaysShort         = listWeekdaysShort;
4580    hooks.normalizeUnits        = normalizeUnits;
4581    hooks.relativeTimeRounding  = getSetRelativeTimeRounding;
4582    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;
4583    hooks.calendarFormat        = getCalendarFormat;
4584    hooks.prototype             = proto;
4585
4586    // currently HTML5 input type only supports 24-hour formats
4587    hooks.HTML5_FMT = {
4588        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm',             // <input type="datetime-local" />
4589        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss',  // <input type="datetime-local" step="1" />
4590        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS',   // <input type="datetime-local" step="0.001" />
4591        DATE: 'YYYY-MM-DD',                             // <input type="date" />
4592        TIME: 'HH:mm',                                  // <input type="time" />
4593        TIME_SECONDS: 'HH:mm:ss',                       // <input type="time" step="1" />
4594        TIME_MS: 'HH:mm:ss.SSS',                        // <input type="time" step="0.001" />
4595        WEEK: 'GGGG-[W]WW',                             // <input type="week" />
4596        MONTH: 'YYYY-MM'                                // <input type="month" />
4597    };
4598
4599    //! moment.js locale configuration
4600
4601    hooks.defineLocale('af', {
4602        months : 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split('_'),
4603        monthsShort : 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),
4604        weekdays : 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split('_'),
4605        weekdaysShort : 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),
4606        weekdaysMin : 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),
4607        meridiemParse: /vm|nm/i,
4608        isPM : function (input) {
4609            return /^nm$/i.test(input);
4610        },
4611        meridiem : function (hours, minutes, isLower) {
4612            if (hours < 12) {
4613                return isLower ? 'vm' : 'VM';
4614            } else {
4615                return isLower ? 'nm' : 'NM';
4616            }
4617        },
4618        longDateFormat : {
4619            LT : 'HH:mm',
4620            LTS : 'HH:mm:ss',
4621            L : 'DD/MM/YYYY',
4622            LL : 'D MMMM YYYY',
4623            LLL : 'D MMMM YYYY HH:mm',
4624            LLLL : 'dddd, D MMMM YYYY HH:mm'
4625        },
4626        calendar : {
4627            sameDay : '[Vandag om] LT',
4628            nextDay : '[Môre om] LT',
4629            nextWeek : 'dddd [om] LT',
4630            lastDay : '[Gister om] LT',
4631            lastWeek : '[Laas] dddd [om] LT',
4632            sameElse : 'L'
4633        },
4634        relativeTime : {
4635            future : 'oor %s',
4636            past : '%s gelede',
4637            s : '\'n paar sekondes',
4638            ss : '%d sekondes',
4639            m : '\'n minuut',
4640            mm : '%d minute',
4641            h : '\'n uur',
4642            hh : '%d ure',
4643            d : '\'n dag',
4644            dd : '%d dae',
4645            M : '\'n maand',
4646            MM : '%d maande',
4647            y : '\'n jaar',
4648            yy : '%d jaar'
4649        },
4650        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
4651        ordinal : function (number) {
4652            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de'); // Thanks to Joris Röling : https://github.com/jjupiter
4653        },
4654        week : {
4655            dow : 1, // Maandag is die eerste dag van die week.
4656            doy : 4  // Die week wat die 4de Januarie bevat is die eerste week van die jaar.
4657        }
4658    });
4659
4660    //! moment.js locale configuration
4661
4662    hooks.defineLocale('ar-dz', {
4663        months : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4664        monthsShort : 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4665        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4666        weekdaysShort : 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4667        weekdaysMin : 'أح_إث_ثلا_أر_خم_جم_سب'.split('_'),
4668        weekdaysParseExact : true,
4669        longDateFormat : {
4670            LT : 'HH:mm',
4671            LTS : 'HH:mm:ss',
4672            L : 'DD/MM/YYYY',
4673            LL : 'D MMMM YYYY',
4674            LLL : 'D MMMM YYYY HH:mm',
4675            LLLL : 'dddd D MMMM YYYY HH:mm'
4676        },
4677        calendar : {
4678            sameDay: '[اليوم على الساعة] LT',
4679            nextDay: '[غدا على الساعة] LT',
4680            nextWeek: 'dddd [على الساعة] LT',
4681            lastDay: '[أمس على الساعة] LT',
4682            lastWeek: 'dddd [على الساعة] LT',
4683            sameElse: 'L'
4684        },
4685        relativeTime : {
4686            future : 'في %s',
4687            past : 'منذ %s',
4688            s : 'ثوان',
4689            ss : '%d ثانية',
4690            m : 'دقيقة',
4691            mm : '%d دقائق',
4692            h : 'ساعة',
4693            hh : '%d ساعات',
4694            d : 'يوم',
4695            dd : '%d أيام',
4696            M : 'شهر',
4697            MM : '%d أشهر',
4698            y : 'سنة',
4699            yy : '%d سنوات'
4700        },
4701        week : {
4702            dow : 0, // Sunday is the first day of the week.
4703            doy : 4  // The week that contains Jan 4th is the first week of the year.
4704        }
4705    });
4706
4707    //! moment.js locale configuration
4708
4709    hooks.defineLocale('ar-kw', {
4710        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4711        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4712        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4713        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4714        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4715        weekdaysParseExact : true,
4716        longDateFormat : {
4717            LT : 'HH:mm',
4718            LTS : 'HH:mm:ss',
4719            L : 'DD/MM/YYYY',
4720            LL : 'D MMMM YYYY',
4721            LLL : 'D MMMM YYYY HH:mm',
4722            LLLL : 'dddd D MMMM YYYY HH:mm'
4723        },
4724        calendar : {
4725            sameDay: '[اليوم على الساعة] LT',
4726            nextDay: '[غدا على الساعة] LT',
4727            nextWeek: 'dddd [على الساعة] LT',
4728            lastDay: '[أمس على الساعة] LT',
4729            lastWeek: 'dddd [على الساعة] LT',
4730            sameElse: 'L'
4731        },
4732        relativeTime : {
4733            future : 'في %s',
4734            past : 'منذ %s',
4735            s : 'ثوان',
4736            ss : '%d ثانية',
4737            m : 'دقيقة',
4738            mm : '%d دقائق',
4739            h : 'ساعة',
4740            hh : '%d ساعات',
4741            d : 'يوم',
4742            dd : '%d أيام',
4743            M : 'شهر',
4744            MM : '%d أشهر',
4745            y : 'سنة',
4746            yy : '%d سنوات'
4747        },
4748        week : {
4749            dow : 0, // Sunday is the first day of the week.
4750            doy : 12  // The week that contains Jan 12th is the first week of the year.
4751        }
4752    });
4753
4754    //! moment.js locale configuration
4755
4756    var symbolMap = {
4757        '1': '1',
4758        '2': '2',
4759        '3': '3',
4760        '4': '4',
4761        '5': '5',
4762        '6': '6',
4763        '7': '7',
4764        '8': '8',
4765        '9': '9',
4766        '0': '0'
4767    }, pluralForm = function (n) {
4768        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
4769    }, plurals = {
4770        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
4771        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
4772        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
4773        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
4774        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
4775        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
4776    }, pluralize = function (u) {
4777        return function (number, withoutSuffix, string, isFuture) {
4778            var f = pluralForm(number),
4779                str = plurals[u][pluralForm(number)];
4780            if (f === 2) {
4781                str = str[withoutSuffix ? 0 : 1];
4782            }
4783            return str.replace(/%d/i, number);
4784        };
4785    }, months$1 = [
4786        'يناير',
4787        'فبراير',
4788        'مارس',
4789        'أبريل',
4790        'مايو',
4791        'يونيو',
4792        'يوليو',
4793        'أغسطس',
4794        'سبتمبر',
4795        'أكتوبر',
4796        'نوفمبر',
4797        'ديسمبر'
4798    ];
4799
4800    hooks.defineLocale('ar-ly', {
4801        months : months$1,
4802        monthsShort : months$1,
4803        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4804        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4805        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4806        weekdaysParseExact : true,
4807        longDateFormat : {
4808            LT : 'HH:mm',
4809            LTS : 'HH:mm:ss',
4810            L : 'D/\u200FM/\u200FYYYY',
4811            LL : 'D MMMM YYYY',
4812            LLL : 'D MMMM YYYY HH:mm',
4813            LLLL : 'dddd D MMMM YYYY HH:mm'
4814        },
4815        meridiemParse: /ص|م/,
4816        isPM : function (input) {
4817            return 'م' === input;
4818        },
4819        meridiem : function (hour, minute, isLower) {
4820            if (hour < 12) {
4821                return 'ص';
4822            } else {
4823                return 'م';
4824            }
4825        },
4826        calendar : {
4827            sameDay: '[اليوم عند الساعة] LT',
4828            nextDay: '[غدًا عند الساعة] LT',
4829            nextWeek: 'dddd [عند الساعة] LT',
4830            lastDay: '[أمس عند الساعة] LT',
4831            lastWeek: 'dddd [عند الساعة] LT',
4832            sameElse: 'L'
4833        },
4834        relativeTime : {
4835            future : 'بعد %s',
4836            past : 'منذ %s',
4837            s : pluralize('s'),
4838            ss : pluralize('s'),
4839            m : pluralize('m'),
4840            mm : pluralize('m'),
4841            h : pluralize('h'),
4842            hh : pluralize('h'),
4843            d : pluralize('d'),
4844            dd : pluralize('d'),
4845            M : pluralize('M'),
4846            MM : pluralize('M'),
4847            y : pluralize('y'),
4848            yy : pluralize('y')
4849        },
4850        preparse: function (string) {
4851            return string.replace(/،/g, ',');
4852        },
4853        postformat: function (string) {
4854            return string.replace(/\d/g, function (match) {
4855                return symbolMap[match];
4856            }).replace(/,/g, '،');
4857        },
4858        week : {
4859            dow : 6, // Saturday is the first day of the week.
4860            doy : 12  // The week that contains Jan 12th is the first week of the year.
4861        }
4862    });
4863
4864    //! moment.js locale configuration
4865
4866    hooks.defineLocale('ar-ma', {
4867        months : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4868        monthsShort : 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split('_'),
4869        weekdays : 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4870        weekdaysShort : 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),
4871        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4872        weekdaysParseExact : true,
4873        longDateFormat : {
4874            LT : 'HH:mm',
4875            LTS : 'HH:mm:ss',
4876            L : 'DD/MM/YYYY',
4877            LL : 'D MMMM YYYY',
4878            LLL : 'D MMMM YYYY HH:mm',
4879            LLLL : 'dddd D MMMM YYYY HH:mm'
4880        },
4881        calendar : {
4882            sameDay: '[اليوم على الساعة] LT',
4883            nextDay: '[غدا على الساعة] LT',
4884            nextWeek: 'dddd [على الساعة] LT',
4885            lastDay: '[أمس على الساعة] LT',
4886            lastWeek: 'dddd [على الساعة] LT',
4887            sameElse: 'L'
4888        },
4889        relativeTime : {
4890            future : 'في %s',
4891            past : 'منذ %s',
4892            s : 'ثوان',
4893            ss : '%d ثانية',
4894            m : 'دقيقة',
4895            mm : '%d دقائق',
4896            h : 'ساعة',
4897            hh : '%d ساعات',
4898            d : 'يوم',
4899            dd : '%d أيام',
4900            M : 'شهر',
4901            MM : '%d أشهر',
4902            y : 'سنة',
4903            yy : '%d سنوات'
4904        },
4905        week : {
4906            dow : 6, // Saturday is the first day of the week.
4907            doy : 12  // The week that contains Jan 12th is the first week of the year.
4908        }
4909    });
4910
4911    //! moment.js locale configuration
4912
4913    var symbolMap$1 = {
4914        '1': 'Ù¡',
4915        '2': 'Ù¢',
4916        '3': 'Ù£',
4917        '4': 'Ù¤',
4918        '5': 'Ù¥',
4919        '6': 'Ù¦',
4920        '7': 'Ù§',
4921        '8': 'Ù¨',
4922        '9': 'Ù©',
4923        '0': 'Ù '
4924    }, numberMap = {
4925        'Ù¡': '1',
4926        'Ù¢': '2',
4927        'Ù£': '3',
4928        'Ù¤': '4',
4929        'Ù¥': '5',
4930        'Ù¦': '6',
4931        'Ù§': '7',
4932        'Ù¨': '8',
4933        'Ù©': '9',
4934        'Ù ': '0'
4935    };
4936
4937    hooks.defineLocale('ar-sa', {
4938        months : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4939        monthsShort : 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
4940        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
4941        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
4942        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
4943        weekdaysParseExact : true,
4944        longDateFormat : {
4945            LT : 'HH:mm',
4946            LTS : 'HH:mm:ss',
4947            L : 'DD/MM/YYYY',
4948            LL : 'D MMMM YYYY',
4949            LLL : 'D MMMM YYYY HH:mm',
4950            LLLL : 'dddd D MMMM YYYY HH:mm'
4951        },
4952        meridiemParse: /ص|م/,
4953        isPM : function (input) {
4954            return 'م' === input;
4955        },
4956        meridiem : function (hour, minute, isLower) {
4957            if (hour < 12) {
4958                return 'ص';
4959            } else {
4960                return 'م';
4961            }
4962        },
4963        calendar : {
4964            sameDay: '[اليوم على الساعة] LT',
4965            nextDay: '[غدا على الساعة] LT',
4966            nextWeek: 'dddd [على الساعة] LT',
4967            lastDay: '[أمس على الساعة] LT',
4968            lastWeek: 'dddd [على الساعة] LT',
4969            sameElse: 'L'
4970        },
4971        relativeTime : {
4972            future : 'في %s',
4973            past : 'منذ %s',
4974            s : 'ثوان',
4975            ss : '%d ثانية',
4976            m : 'دقيقة',
4977            mm : '%d دقائق',
4978            h : 'ساعة',
4979            hh : '%d ساعات',
4980            d : 'يوم',
4981            dd : '%d أيام',
4982            M : 'شهر',
4983            MM : '%d أشهر',
4984            y : 'سنة',
4985            yy : '%d سنوات'
4986        },
4987        preparse: function (string) {
4988            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
4989                return numberMap[match];
4990            }).replace(/،/g, ',');
4991        },
4992        postformat: function (string) {
4993            return string.replace(/\d/g, function (match) {
4994                return symbolMap$1[match];
4995            }).replace(/,/g, '،');
4996        },
4997        week : {
4998            dow : 0, // Sunday is the first day of the week.
4999            doy : 6  // The week that contains Jan 6th is the first week of the year.
5000        }
5001    });
5002
5003    //! moment.js locale configuration
5004
5005    hooks.defineLocale('ar-tn', {
5006        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
5007        monthsShort: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split('_'),
5008        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
5009        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
5010        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),
5011        weekdaysParseExact : true,
5012        longDateFormat: {
5013            LT: 'HH:mm',
5014            LTS: 'HH:mm:ss',
5015            L: 'DD/MM/YYYY',
5016            LL: 'D MMMM YYYY',
5017            LLL: 'D MMMM YYYY HH:mm',
5018            LLLL: 'dddd D MMMM YYYY HH:mm'
5019        },
5020        calendar: {
5021            sameDay: '[اليوم على الساعة] LT',
5022            nextDay: '[غدا على الساعة] LT',
5023            nextWeek: 'dddd [على الساعة] LT',
5024            lastDay: '[أمس على الساعة] LT',
5025            lastWeek: 'dddd [على الساعة] LT',
5026            sameElse: 'L'
5027        },
5028        relativeTime: {
5029            future: 'في %s',
5030            past: 'منذ %s',
5031            s: 'ثوان',
5032            ss : '%d ثانية',
5033            m: 'دقيقة',
5034            mm: '%d دقائق',
5035            h: 'ساعة',
5036            hh: '%d ساعات',
5037            d: 'يوم',
5038            dd: '%d أيام',
5039            M: 'شهر',
5040            MM: '%d أشهر',
5041            y: 'سنة',
5042            yy: '%d سنوات'
5043        },
5044        week: {
5045            dow: 1, // Monday is the first day of the week.
5046            doy: 4 // The week that contains Jan 4th is the first week of the year.
5047        }
5048    });
5049
5050    //! moment.js locale configuration
5051
5052    var symbolMap$2 = {
5053        '1': 'Ù¡',
5054        '2': 'Ù¢',
5055        '3': 'Ù£',
5056        '4': 'Ù¤',
5057        '5': 'Ù¥',
5058        '6': 'Ù¦',
5059        '7': 'Ù§',
5060        '8': 'Ù¨',
5061        '9': 'Ù©',
5062        '0': 'Ù '
5063    }, numberMap$1 = {
5064        'Ù¡': '1',
5065        'Ù¢': '2',
5066        'Ù£': '3',
5067        'Ù¤': '4',
5068        'Ù¥': '5',
5069        'Ù¦': '6',
5070        'Ù§': '7',
5071        'Ù¨': '8',
5072        'Ù©': '9',
5073        'Ù ': '0'
5074    }, pluralForm$1 = function (n) {
5075        return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;
5076    }, plurals$1 = {
5077        s : ['أقل من ثانية', 'ثانية واحدة', ['ثانيتان', 'ثانيتين'], '%d ثوان', '%d ثانية', '%d ثانية'],
5078        m : ['أقل من دقيقة', 'دقيقة واحدة', ['دقيقتان', 'دقيقتين'], '%d دقائق', '%d دقيقة', '%d دقيقة'],
5079        h : ['أقل من ساعة', 'ساعة واحدة', ['ساعتان', 'ساعتين'], '%d ساعات', '%d ساعة', '%d ساعة'],
5080        d : ['أقل من يوم', 'يوم واحد', ['يومان', 'يومين'], '%d أيام', '%d يومًا', '%d يوم'],
5081        M : ['أقل من شهر', 'شهر واحد', ['شهران', 'شهرين'], '%d أشهر', '%d شهرا', '%d شهر'],
5082        y : ['أقل من عام', 'عام واحد', ['عامان', 'عامين'], '%d أعوام', '%d عامًا', '%d عام']
5083    }, pluralize$1 = function (u) {
5084        return function (number, withoutSuffix, string, isFuture) {
5085            var f = pluralForm$1(number),
5086                str = plurals$1[u][pluralForm$1(number)];
5087            if (f === 2) {
5088                str = str[withoutSuffix ? 0 : 1];
5089            }
5090            return str.replace(/%d/i, number);
5091        };
5092    }, months$2 = [
5093        'يناير',
5094        'فبراير',
5095        'مارس',
5096        'أبريل',
5097        'مايو',
5098        'يونيو',
5099        'يوليو',
5100        'أغسطس',
5101        'سبتمبر',
5102        'أكتوبر',
5103        'نوفمبر',
5104        'ديسمبر'
5105    ];
5106
5107    hooks.defineLocale('ar', {
5108        months : months$2,
5109        monthsShort : months$2,
5110        weekdays : 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),
5111        weekdaysShort : 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),
5112        weekdaysMin : 'ح_ن_ث_ر_خ_ج_س'.split('_'),
5113        weekdaysParseExact : true,
5114        longDateFormat : {
5115            LT : 'HH:mm',
5116            LTS : 'HH:mm:ss',
5117            L : 'D/\u200FM/\u200FYYYY',
5118            LL : 'D MMMM YYYY',
5119            LLL : 'D MMMM YYYY HH:mm',
5120            LLLL : 'dddd D MMMM YYYY HH:mm'
5121        },
5122        meridiemParse: /ص|م/,
5123        isPM : function (input) {
5124            return 'م' === input;
5125        },
5126        meridiem : function (hour, minute, isLower) {
5127            if (hour < 12) {
5128                return 'ص';
5129            } else {
5130                return 'م';
5131            }
5132        },
5133        calendar : {
5134            sameDay: '[اليوم عند الساعة] LT',
5135            nextDay: '[غدًا عند الساعة] LT',
5136            nextWeek: 'dddd [عند الساعة] LT',
5137            lastDay: '[أمس عند الساعة] LT',
5138            lastWeek: 'dddd [عند الساعة] LT',
5139            sameElse: 'L'
5140        },
5141        relativeTime : {
5142            future : 'بعد %s',
5143            past : 'منذ %s',
5144            s : pluralize$1('s'),
5145            ss : pluralize$1('s'),
5146            m : pluralize$1('m'),
5147            mm : pluralize$1('m'),
5148            h : pluralize$1('h'),
5149            hh : pluralize$1('h'),
5150            d : pluralize$1('d'),
5151            dd : pluralize$1('d'),
5152            M : pluralize$1('M'),
5153            MM : pluralize$1('M'),
5154            y : pluralize$1('y'),
5155            yy : pluralize$1('y')
5156        },
5157        preparse: function (string) {
5158            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
5159                return numberMap$1[match];
5160            }).replace(/،/g, ',');
5161        },
5162        postformat: function (string) {
5163            return string.replace(/\d/g, function (match) {
5164                return symbolMap$2[match];
5165            }).replace(/,/g, '،');
5166        },
5167        week : {
5168            dow : 6, // Saturday is the first day of the week.
5169            doy : 12  // The week that contains Jan 12th is the first week of the year.
5170        }
5171    });
5172
5173    //! moment.js locale configuration
5174
5175    var suffixes = {
5176        1: '-inci',
5177        5: '-inci',
5178        8: '-inci',
5179        70: '-inci',
5180        80: '-inci',
5181        2: '-nci',
5182        7: '-nci',
5183        20: '-nci',
5184        50: '-nci',
5185        3: '-üncü',
5186        4: '-üncü',
5187        100: '-üncü',
5188        6: '-ncı',
5189        9: '-uncu',
5190        10: '-uncu',
5191        30: '-uncu',
5192        60: '-ıncı',
5193        90: '-ıncı'
5194    };
5195
5196    hooks.defineLocale('az', {
5197        months : 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split('_'),
5198        monthsShort : 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),
5199        weekdays : 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split('_'),
5200        weekdaysShort : 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),
5201        weekdaysMin : 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),
5202        weekdaysParseExact : true,
5203        longDateFormat : {
5204            LT : 'HH:mm',
5205            LTS : 'HH:mm:ss',
5206            L : 'DD.MM.YYYY',
5207            LL : 'D MMMM YYYY',
5208            LLL : 'D MMMM YYYY HH:mm',
5209            LLLL : 'dddd, D MMMM YYYY HH:mm'
5210        },
5211        calendar : {
5212            sameDay : '[bugün saat] LT',
5213            nextDay : '[sabah saat] LT',
5214            nextWeek : '[gələn həftə] dddd [saat] LT',
5215            lastDay : '[dünən] LT',
5216            lastWeek : '[keçən həftə] dddd [saat] LT',
5217            sameElse : 'L'
5218        },
5219        relativeTime : {
5220            future : '%s sonra',
5221            past : '%s əvvəl',
5222            s : 'birneçə saniyə',
5223            ss : '%d saniyə',
5224            m : 'bir dəqiqə',
5225            mm : '%d dəqiqə',
5226            h : 'bir saat',
5227            hh : '%d saat',
5228            d : 'bir gün',
5229            dd : '%d gün',
5230            M : 'bir ay',
5231            MM : '%d ay',
5232            y : 'bir il',
5233            yy : '%d il'
5234        },
5235        meridiemParse: /gecə|səhər|gündüz|axşam/,
5236        isPM : function (input) {
5237            return /^(gündüz|axşam)$/.test(input);
5238        },
5239        meridiem : function (hour, minute, isLower) {
5240            if (hour < 4) {
5241                return 'gecə';
5242            } else if (hour < 12) {
5243                return 'səhər';
5244            } else if (hour < 17) {
5245                return 'gündüz';
5246            } else {
5247                return 'axşam';
5248            }
5249        },
5250        dayOfMonthOrdinalParse: /\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,
5251        ordinal : function (number) {
5252            if (number === 0) {  // special case for zero
5253                return number + '-ıncı';
5254            }
5255            var a = number % 10,
5256                b = number % 100 - a,
5257                c = number >= 100 ? 100 : null;
5258            return number + (suffixes[a] || suffixes[b] || suffixes[c]);
5259        },
5260        week : {
5261            dow : 1, // Monday is the first day of the week.
5262            doy : 7  // The week that contains Jan 7th is the first week of the year.
5263        }
5264    });
5265
5266    //! moment.js locale configuration
5267
5268    function plural(word, num) {
5269        var forms = word.split('_');
5270        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]);
5271    }
5272    function relativeTimeWithPlural(number, withoutSuffix, key) {
5273        var format = {
5274            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
5275            'mm': withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',
5276            'hh': withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',
5277            'dd': 'дзень_дні_дзён',
5278            'MM': 'месяц_месяцы_месяцаў',
5279            'yy': 'год_гады_гадоў'
5280        };
5281        if (key === 'm') {
5282            return withoutSuffix ? 'хвіліна' : 'хвіліну';
5283        }
5284        else if (key === 'h') {
5285            return withoutSuffix ? 'гадзіна' : 'гадзіну';
5286        }
5287        else {
5288            return number + ' ' + plural(format[key], +number);
5289        }
5290    }
5291
5292    hooks.defineLocale('be', {
5293        months : {
5294            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split('_'),
5295            standalone: 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split('_')
5296        },
5297        monthsShort : 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),
5298        weekdays : {
5299            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split('_'),
5300            standalone: 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split('_'),
5301            isFormat: /\[ ?[Ууў] ?(?:мінулую|наступную)? ?\] ?dddd/
5302        },
5303        weekdaysShort : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
5304        weekdaysMin : 'нд_пн_ат_ср_чц_пт_сб'.split('_'),
5305        longDateFormat : {
5306            LT : 'HH:mm',
5307            LTS : 'HH:mm:ss',
5308            L : 'DD.MM.YYYY',
5309            LL : 'D MMMM YYYY г.',
vendor: 35,111 bytes, lines 5310-6189
5310            LLL : 'D MMMM YYYY г., HH:mm',
5311            LLLL : 'dddd, D MMMM YYYY г., HH:mm'
5312        },
5313        calendar : {
5314            sameDay: '[Сёння ў] LT',
5315            nextDay: '[Заўтра ў] LT',
5316            lastDay: '[Учора ў] LT',
5317            nextWeek: function () {
5318                return '[У] dddd [ў] LT';
5319            },
5320            lastWeek: function () {
5321                switch (this.day()) {
5322                    case 0:
5323                    case 3:
5324                    case 5:
5325                    case 6:
5326                        return '[У мінулую] dddd [ў] LT';
5327                    case 1:
5328                    case 2:
5329                    case 4:
5330                        return '[У мінулы] dddd [ў] LT';
5331                }
5332            },
5333            sameElse: 'L'
5334        },
5335        relativeTime : {
5336            future : 'праз %s',
5337            past : '%s таму',
5338            s : 'некалькі секунд',
5339            m : relativeTimeWithPlural,
5340            mm : relativeTimeWithPlural,
5341            h : relativeTimeWithPlural,
5342            hh : relativeTimeWithPlural,
5343            d : 'дзень',
5344            dd : relativeTimeWithPlural,
5345            M : 'месяц',
5346            MM : relativeTimeWithPlural,
5347            y : 'год',
5348            yy : relativeTimeWithPlural
5349        },
5350        meridiemParse: /ночы|раніцы|дня|вечара/,
5351        isPM : function (input) {
5352            return /^(дня|вечара)$/.test(input);
5353        },
5354        meridiem : function (hour, minute, isLower) {
5355            if (hour < 4) {
5356                return 'ночы';
5357            } else if (hour < 12) {
5358                return 'раніцы';
5359            } else if (hour < 17) {
5360                return 'дня';
5361            } else {
5362                return 'вечара';
5363            }
5364        },
5365        dayOfMonthOrdinalParse: /\d{1,2}-(і|ы|га)/,
5366        ordinal: function (number, period) {
5367            switch (period) {
5368                case 'M':
5369                case 'd':
5370                case 'DDD':
5371                case 'w':
5372                case 'W':
5373                    return (number % 10 === 2 || number % 10 === 3) && (number % 100 !== 12 && number % 100 !== 13) ? number + '-і' : number + '-ы';
5374                case 'D':
5375                    return number + '-га';
5376                default:
5377                    return number;
5378            }
5379        },
5380        week : {
5381            dow : 1, // Monday is the first day of the week.
5382            doy : 7  // The week that contains Jan 7th is the first week of the year.
5383        }
5384    });
5385
5386    //! moment.js locale configuration
5387
5388    hooks.defineLocale('bg', {
5389        months : 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split('_'),
5390        monthsShort : 'янр_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),
5391        weekdays : 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split('_'),
5392        weekdaysShort : 'нед_пон_вто_сря_чет_пет_съб'.split('_'),
5393        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
5394        longDateFormat : {
5395            LT : 'H:mm',
5396            LTS : 'H:mm:ss',
5397            L : 'D.MM.YYYY',
5398            LL : 'D MMMM YYYY',
5399            LLL : 'D MMMM YYYY H:mm',
5400            LLLL : 'dddd, D MMMM YYYY H:mm'
5401        },
5402        calendar : {
5403            sameDay : '[Днес в] LT',
5404            nextDay : '[Утре в] LT',
5405            nextWeek : 'dddd [в] LT',
5406            lastDay : '[Вчера в] LT',
5407            lastWeek : function () {
5408                switch (this.day()) {
5409                    case 0:
5410                    case 3:
5411                    case 6:
5412                        return '[В изминалата] dddd [в] LT';
5413                    case 1:
5414                    case 2:
5415                    case 4:
5416                    case 5:
5417                        return '[В изминалия] dddd [в] LT';
5418                }
5419            },
5420            sameElse : 'L'
5421        },
5422        relativeTime : {
5423            future : 'след %s',
5424            past : 'преди %s',
5425            s : 'няколко секунди',
5426            ss : '%d секунди',
5427            m : 'минута',
5428            mm : '%d минути',
5429            h : 'час',
5430            hh : '%d часа',
5431            d : 'ден',
5432            dd : '%d дни',
5433            M : 'месец',
5434            MM : '%d месеца',
5435            y : 'година',
5436            yy : '%d години'
5437        },
5438        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
5439        ordinal : function (number) {
5440            var lastDigit = number % 10,
5441                last2Digits = number % 100;
5442            if (number === 0) {
5443                return number + '-ев';
5444            } else if (last2Digits === 0) {
5445                return number + '-ен';
5446            } else if (last2Digits > 10 && last2Digits < 20) {
5447                return number + '-ти';
5448            } else if (lastDigit === 1) {
5449                return number + '-ви';
5450            } else if (lastDigit === 2) {
5451                return number + '-ри';
5452            } else if (lastDigit === 7 || lastDigit === 8) {
5453                return number + '-ми';
5454            } else {
5455                return number + '-ти';
5456            }
5457        },
5458        week : {
5459            dow : 1, // Monday is the first day of the week.
5460            doy : 7  // The week that contains Jan 7th is the first week of the year.
5461        }
5462    });
5463
5464    //! moment.js locale configuration
5465
5466    hooks.defineLocale('bm', {
5467        months : 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split('_'),
5468        monthsShort : 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),
5469        weekdays : 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),
5470        weekdaysShort : 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),
5471        weekdaysMin : 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),
5472        longDateFormat : {
5473            LT : 'HH:mm',
5474            LTS : 'HH:mm:ss',
5475            L : 'DD/MM/YYYY',
5476            LL : 'MMMM [tile] D [san] YYYY',
5477            LLL : 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',
5478            LLLL : 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm'
5479        },
5480        calendar : {
5481            sameDay : '[Bi lɛrɛ] LT',
5482            nextDay : '[Sini lɛrɛ] LT',
5483            nextWeek : 'dddd [don lɛrɛ] LT',
5484            lastDay : '[Kunu lɛrɛ] LT',
5485            lastWeek : 'dddd [tɛmɛnen lɛrɛ] LT',
5486            sameElse : 'L'
5487        },
5488        relativeTime : {
5489            future : '%s kɔnɔ',
5490            past : 'a bɛ %s bɔ',
5491            s : 'sanga dama dama',
5492            ss : 'sekondi %d',
5493            m : 'miniti kelen',
5494            mm : 'miniti %d',
5495            h : 'lɛrɛ kelen',
5496            hh : 'lɛrɛ %d',
5497            d : 'tile kelen',
5498            dd : 'tile %d',
5499            M : 'kalo kelen',
5500            MM : 'kalo %d',
5501            y : 'san kelen',
5502            yy : 'san %d'
5503        },
5504        week : {
5505            dow : 1, // Monday is the first day of the week.
5506            doy : 4  // The week that contains Jan 4th is the first week of the year.
5507        }
5508    });
5509
5510    //! moment.js locale configuration
5511
5512    var symbolMap$3 = {
5513        '1': 'à§§',
5514        '2': '২',
5515        '3': 'à§©',
5516        '4': '৪',
5517        '5': 'à§«',
5518        '6': '৬',
5519        '7': 'à§­',
5520        '8': 'à§®',
5521        '9': '৯',
5522        '0': '০'
5523    },
5524    numberMap$2 = {
5525        'à§§': '1',
5526        '২': '2',
5527        'à§©': '3',
5528        '৪': '4',
5529        'à§«': '5',
5530        '৬': '6',
5531        'à§­': '7',
5532        'à§®': '8',
5533        '৯': '9',
5534        '০': '0'
5535    };
5536
5537    hooks.defineLocale('bn', {
5538        months : 'জানুয়ারী_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split('_'),
5539        monthsShort : 'জানু_ফেব_মার্চ_এপ্র_মে_জুন_জুল_আগ_সেপ্ট_অক্টো_নভে_ডিসে'.split('_'),
5540        weekdays : 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split('_'),
5541        weekdaysShort : 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),
5542        weekdaysMin : 'রবি_সোম_মঙ্গ_বুধ_বৃহঃ_শুক্র_শনি'.split('_'),
5543        longDateFormat : {
5544            LT : 'A h:mm সময়',
5545            LTS : 'A h:mm:ss সময়',
5546            L : 'DD/MM/YYYY',
5547            LL : 'D MMMM YYYY',
5548            LLL : 'D MMMM YYYY, A h:mm সময়',
5549            LLLL : 'dddd, D MMMM YYYY, A h:mm সময়'
5550        },
5551        calendar : {
5552            sameDay : '[আজ] LT',
5553            nextDay : '[আগামীকাল] LT',
5554            nextWeek : 'dddd, LT',
5555            lastDay : '[গতকাল] LT',
5556            lastWeek : '[গত] dddd, LT',
5557            sameElse : 'L'
5558        },
5559        relativeTime : {
5560            future : '%s পরে',
5561            past : '%s আগে',
5562            s : 'কয়েক সেকেন্ড',
5563            ss : '%d সেকেন্ড',
5564            m : 'এক মিনিট',
5565            mm : '%d মিনিট',
5566            h : 'এক ঘন্টা',
5567            hh : '%d ঘন্টা',
5568            d : 'এক দিন',
5569            dd : '%d দিন',
5570            M : 'এক মাস',
5571            MM : '%d মাস',
5572            y : 'এক বছর',
5573            yy : '%d বছর'
5574        },
5575        preparse: function (string) {
5576            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {
5577                return numberMap$2[match];
5578            });
5579        },
5580        postformat: function (string) {
5581            return string.replace(/\d/g, function (match) {
5582                return symbolMap$3[match];
5583            });
5584        },
5585        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,
5586        meridiemHour : function (hour, meridiem) {
5587            if (hour === 12) {
5588                hour = 0;
5589            }
5590            if ((meridiem === 'রাত' && hour >= 4) ||
5591                    (meridiem === 'দুপুর' && hour < 5) ||
5592                    meridiem === 'বিকাল') {
5593                return hour + 12;
5594            } else {
5595                return hour;
5596            }
5597        },
5598        meridiem : function (hour, minute, isLower) {
5599            if (hour < 4) {
5600                return 'রাত';
5601            } else if (hour < 10) {
5602                return 'সকাল';
5603            } else if (hour < 17) {
5604                return 'দুপুর';
5605            } else if (hour < 20) {
5606                return 'বিকাল';
5607            } else {
5608                return 'রাত';
5609            }
5610        },
5611        week : {
5612            dow : 0, // Sunday is the first day of the week.
5613            doy : 6  // The week that contains Jan 6th is the first week of the year.
5614        }
5615    });
5616
5617    //! moment.js locale configuration
5618
5619    var symbolMap$4 = {
5620        '1': '༡',
5621        '2': '༢',
5622        '3': '༣',
5623        '4': '༤',
5624        '5': '༥',
5625        '6': '༦',
5626        '7': '༧',
5627        '8': '༨',
5628        '9': '༩',
5629        '0': '༠'
5630    },
5631    numberMap$3 = {
5632        '༡': '1',
5633        '༢': '2',
5634        '༣': '3',
5635        '༤': '4',
5636        '༥': '5',
5637        '༦': '6',
5638        '༧': '7',
5639        '༨': '8',
5640        '༩': '9',
5641        '༠': '0'
5642    };
5643
5644    hooks.defineLocale('bo', {
5645        months : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5646        monthsShort : 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split('_'),
5647        weekdays : 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split('_'),
5648        weekdaysShort : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5649        weekdaysMin : 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split('_'),
5650        longDateFormat : {
5651            LT : 'A h:mm',
5652            LTS : 'A h:mm:ss',
5653            L : 'DD/MM/YYYY',
5654            LL : 'D MMMM YYYY',
5655            LLL : 'D MMMM YYYY, A h:mm',
5656            LLLL : 'dddd, D MMMM YYYY, A h:mm'
5657        },
5658        calendar : {
5659            sameDay : '[དི་རིང] LT',
5660            nextDay : '[སང་ཉིན] LT',
5661            nextWeek : '[བདུན་ཕྲག་རྗེས་མ], LT',
5662            lastDay : '[ཁ་སང] LT',
5663            lastWeek : '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',
5664            sameElse : 'L'
5665        },
5666        relativeTime : {
5667            future : '%s ལ་',
5668            past : '%s སྔན་ལ',
5669            s : 'ལམ་སང',
5670            ss : '%d སྐར་ཆ།',
5671            m : 'སྐར་མ་གཅིག',
5672            mm : '%d སྐར་མ',
5673            h : 'ཆུ་ཚོད་གཅིག',
5674            hh : '%d ཆུ་ཚོད',
5675            d : 'ཉིན་གཅིག',
5676            dd : '%d ཉིན་',
5677            M : 'ཟླ་བ་གཅིག',
5678            MM : '%d ཟླ་བ',
5679            y : 'ལོ་གཅིག',
5680            yy : '%d ལོ'
5681        },
5682        preparse: function (string) {
5683            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {
5684                return numberMap$3[match];
5685            });
5686        },
5687        postformat: function (string) {
5688            return string.replace(/\d/g, function (match) {
5689                return symbolMap$4[match];
5690            });
5691        },
5692        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,
5693        meridiemHour : function (hour, meridiem) {
5694            if (hour === 12) {
5695                hour = 0;
5696            }
5697            if ((meridiem === 'མཚན་མོ' && hour >= 4) ||
5698                    (meridiem === 'ཉིན་གུང' && hour < 5) ||
5699                    meridiem === 'དགོང་དག') {
5700                return hour + 12;
5701            } else {
5702                return hour;
5703            }
5704        },
5705        meridiem : function (hour, minute, isLower) {
5706            if (hour < 4) {
5707                return 'མཚན་མོ';
5708            } else if (hour < 10) {
5709                return 'ཞོགས་ཀས';
5710            } else if (hour < 17) {
5711                return 'ཉིན་གུང';
5712            } else if (hour < 20) {
5713                return 'དགོང་དག';
5714            } else {
5715                return 'མཚན་མོ';
5716            }
5717        },
5718        week : {
5719            dow : 0, // Sunday is the first day of the week.
5720            doy : 6  // The week that contains Jan 6th is the first week of the year.
5721        }
5722    });
5723
5724    //! moment.js locale configuration
5725
5726    function relativeTimeWithMutation(number, withoutSuffix, key) {
5727        var format = {
5728            'mm': 'munutenn',
5729            'MM': 'miz',
5730            'dd': 'devezh'
5731        };
5732        return number + ' ' + mutation(format[key], number);
5733    }
5734    function specialMutationForYears(number) {
5735        switch (lastNumber(number)) {
5736            case 1:
5737            case 3:
5738            case 4:
5739            case 5:
5740            case 9:
5741                return number + ' bloaz';
5742            default:
5743                return number + ' vloaz';
5744        }
5745    }
5746    function lastNumber(number) {
5747        if (number > 9) {
5748            return lastNumber(number % 10);
5749        }
5750        return number;
5751    }
5752    function mutation(text, number) {
5753        if (number === 2) {
5754            return softMutation(text);
5755        }
5756        return text;
5757    }
5758    function softMutation(text) {
5759        var mutationTable = {
5760            'm': 'v',
5761            'b': 'v',
5762            'd': 'z'
5763        };
5764        if (mutationTable[text.charAt(0)] === undefined) {
5765            return text;
5766        }
5767        return mutationTable[text.charAt(0)] + text.substring(1);
5768    }
5769
5770    hooks.defineLocale('br', {
5771        months : 'Genver_C\'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split('_'),
5772        monthsShort : 'Gen_C\'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),
5773        weekdays : 'Sul_Lun_Meurzh_Merc\'her_Yaou_Gwener_Sadorn'.split('_'),
5774        weekdaysShort : 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),
5775        weekdaysMin : 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),
5776        weekdaysParseExact : true,
5777        longDateFormat : {
5778            LT : 'h[e]mm A',
5779            LTS : 'h[e]mm:ss A',
5780            L : 'DD/MM/YYYY',
5781            LL : 'D [a viz] MMMM YYYY',
5782            LLL : 'D [a viz] MMMM YYYY h[e]mm A',
5783            LLLL : 'dddd, D [a viz] MMMM YYYY h[e]mm A'
5784        },
5785        calendar : {
5786            sameDay : '[Hiziv da] LT',
5787            nextDay : '[Warc\'hoazh da] LT',
5788            nextWeek : 'dddd [da] LT',
5789            lastDay : '[Dec\'h da] LT',
5790            lastWeek : 'dddd [paset da] LT',
5791            sameElse : 'L'
5792        },
5793        relativeTime : {
5794            future : 'a-benn %s',
5795            past : '%s \'zo',
5796            s : 'un nebeud segondennoù',
5797            ss : '%d eilenn',
5798            m : 'ur vunutenn',
5799            mm : relativeTimeWithMutation,
5800            h : 'un eur',
5801            hh : '%d eur',
5802            d : 'un devezh',
5803            dd : relativeTimeWithMutation,
5804            M : 'ur miz',
5805            MM : relativeTimeWithMutation,
5806            y : 'ur bloaz',
5807            yy : specialMutationForYears
5808        },
5809        dayOfMonthOrdinalParse: /\d{1,2}(añ|vet)/,
5810        ordinal : function (number) {
5811            var output = (number === 1) ? 'añ' : 'vet';
5812            return number + output;
5813        },
5814        week : {
5815            dow : 1, // Monday is the first day of the week.
5816            doy : 4  // The week that contains Jan 4th is the first week of the year.
5817        }
5818    });
5819
5820    //! moment.js locale configuration
5821
5822    function translate(number, withoutSuffix, key) {
5823        var result = number + ' ';
5824        switch (key) {
5825            case 'ss':
5826                if (number === 1) {
5827                    result += 'sekunda';
5828                } else if (number === 2 || number === 3 || number === 4) {
5829                    result += 'sekunde';
5830                } else {
5831                    result += 'sekundi';
5832                }
5833                return result;
5834            case 'm':
5835                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
5836            case 'mm':
5837                if (number === 1) {
5838                    result += 'minuta';
5839                } else if (number === 2 || number === 3 || number === 4) {
5840                    result += 'minute';
5841                } else {
5842                    result += 'minuta';
5843                }
5844                return result;
5845            case 'h':
5846                return withoutSuffix ? 'jedan sat' : 'jednog sata';
5847            case 'hh':
5848                if (number === 1) {
5849                    result += 'sat';
5850                } else if (number === 2 || number === 3 || number === 4) {
5851                    result += 'sata';
5852                } else {
5853                    result += 'sati';
5854                }
5855                return result;
5856            case 'dd':
5857                if (number === 1) {
5858                    result += 'dan';
5859                } else {
5860                    result += 'dana';
5861                }
5862                return result;
5863            case 'MM':
5864                if (number === 1) {
5865                    result += 'mjesec';
5866                } else if (number === 2 || number === 3 || number === 4) {
5867                    result += 'mjeseca';
5868                } else {
5869                    result += 'mjeseci';
5870                }
5871                return result;
5872            case 'yy':
5873                if (number === 1) {
5874                    result += 'godina';
5875                } else if (number === 2 || number === 3 || number === 4) {
5876                    result += 'godine';
5877                } else {
5878                    result += 'godina';
5879                }
5880                return result;
5881        }
5882    }
5883
5884    hooks.defineLocale('bs', {
5885        months : 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split('_'),
5886        //monthsShort : 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split('_'),
5887		monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
5888        monthsParseExact: true,
5889        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
5890        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
5891        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
5892        weekdaysParseExact : true,
5893        longDateFormat : {
5894            LT : 'H:mm',
5895            LTS : 'H:mm:ss',
5896            L : 'DD.MM.YYYY',
5897            LL : 'D. MMMM YYYY',
5898            LLL : 'D. MMMM YYYY H:mm',
5899            LLLL : 'dddd, D. MMMM YYYY H:mm'
5900        },
5901        calendar : {
5902            sameDay  : '[danas u] LT',
5903            nextDay  : '[sutra u] LT',
5904            nextWeek : function () {
5905                switch (this.day()) {
5906                    case 0:
5907                        return '[u] [nedjelju] [u] LT';
5908                    case 3:
5909                        return '[u] [srijedu] [u] LT';
5910                    case 6:
5911                        return '[u] [subotu] [u] LT';
5912                    case 1:
5913                    case 2:
5914                    case 4:
5915                    case 5:
5916                        return '[u] dddd [u] LT';
5917                }
5918            },
5919            lastDay  : '[jučer u] LT',
5920            lastWeek : function () {
5921                switch (this.day()) {
5922                    case 0:
5923                    case 3:
5924                        return '[prošlu] dddd [u] LT';
5925                    case 6:
5926                        return '[prošle] [subote] [u] LT';
5927                    case 1:
5928                    case 2:
5929                    case 4:
5930                    case 5:
5931                        return '[prošli] dddd [u] LT';
5932                }
5933            },
5934            sameElse : 'L'
5935        },
5936        relativeTime : {
5937            future : 'za %s',
5938            past   : 'prije %s',
5939            s      : 'par sekundi',
5940            ss     : translate,
5941            m      : translate,
5942            mm     : translate,
5943            h      : translate,
5944            hh     : translate,
5945            d      : 'dan',
5946            dd     : translate,
5947            M      : 'mjesec',
5948            MM     : translate,
5949            y      : 'godinu',
5950            yy     : translate
5951        },
5952        dayOfMonthOrdinalParse: /\d{1,2}\./,
5953        ordinal : '%d.',
5954        week : {
5955            dow : 1, // Monday is the first day of the week.
5956            doy : 7  // The week that contains Jan 7th is the first week of the year.
5957        }
5958    });
5959
5960    //! moment.js locale configuration
5961
5962    hooks.defineLocale('ca', {
5963        months : {
5964            standalone: 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split('_'),
5965            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('_'),
5966            isFormat: /D[oD]?(\s)+MMMM/
5967        },
5968        monthsShort : 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split('_'),
5969        monthsParseExact : true,
5970        weekdays : 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split('_'),
5971        weekdaysShort : 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),
5972        weekdaysMin : 'dg_dl_dt_dc_dj_dv_ds'.split('_'),
5973        weekdaysParseExact : true,
5974        longDateFormat : {
5975            LT : 'H:mm',
5976            LTS : 'H:mm:ss',
5977            L : 'DD/MM/YYYY',
5978            LL : 'D MMMM [de] YYYY',
5979            ll : 'D MMM YYYY',
5980            LLL : 'D MMMM [de] YYYY [a les] H:mm',
5981            lll : 'D MMM YYYY, H:mm',
5982            LLLL : 'dddd D MMMM [de] YYYY [a les] H:mm',
5983            llll : 'ddd D MMM YYYY, H:mm'
5984        },
5985        calendar : {
5986            sameDay : function () {
5987                return '[avui a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5988            },
5989            nextDay : function () {
5990                return '[demà a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5991            },
5992            nextWeek : function () {
5993                return 'dddd [a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5994            },
5995            lastDay : function () {
5996                return '[ahir a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
5997            },
5998            lastWeek : function () {
5999                return '[el] dddd [passat a ' + ((this.hours() !== 1) ? 'les' : 'la') + '] LT';
6000            },
6001            sameElse : 'L'
6002        },
6003        relativeTime : {
6004            future : 'd\'aquí %s',
6005            past : 'fa %s',
6006            s : 'uns segons',
6007            ss : '%d segons',
6008            m : 'un minut',
6009            mm : '%d minuts',
6010            h : 'una hora',
6011            hh : '%d hores',
6012            d : 'un dia',
6013            dd : '%d dies',
6014            M : 'un mes',
6015            MM : '%d mesos',
6016            y : 'un any',
6017            yy : '%d anys'
6018        },
6019        dayOfMonthOrdinalParse: /\d{1,2}(r|n|t|è|a)/,
6020        ordinal : function (number, period) {
6021            var output = (number === 1) ? 'r' :
6022                (number === 2) ? 'n' :
6023                (number === 3) ? 'r' :
6024                (number === 4) ? 't' : 'è';
6025            if (period === 'w' || period === 'W') {
6026                output = 'a';
6027            }
6028            return number + output;
6029        },
6030        week : {
6031            dow : 1, // Monday is the first day of the week.
6032            doy : 4  // The week that contains Jan 4th is the first week of the year.
6033        }
6034    });
6035
6036    //! moment.js locale configuration
6037
6038    var months$3 = 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split('_'),
6039        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_');
6040
6041    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];
6042    // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
6043    // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
6044    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;
6045
6046    function plural$1(n) {
6047        return (n > 1) && (n < 5) && (~~(n / 10) !== 1);
6048    }
6049    function translate$1(number, withoutSuffix, key, isFuture) {
6050        var result = number + ' ';
6051        switch (key) {
6052            case 's':  // a few seconds / in a few seconds / a few seconds ago
6053                return (withoutSuffix || isFuture) ? 'pár sekund' : 'pár sekundami';
6054            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
6055                if (withoutSuffix || isFuture) {
6056                    return result + (plural$1(number) ? 'sekundy' : 'sekund');
6057                } else {
6058                    return result + 'sekundami';
6059                }
6060                break;
6061            case 'm':  // a minute / in a minute / a minute ago
6062                return withoutSuffix ? 'minuta' : (isFuture ? 'minutu' : 'minutou');
6063            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
6064                if (withoutSuffix || isFuture) {
6065                    return result + (plural$1(number) ? 'minuty' : 'minut');
6066                } else {
6067                    return result + 'minutami';
6068                }
6069                break;
6070            case 'h':  // an hour / in an hour / an hour ago
6071                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
6072            case 'hh': // 9 hours / in 9 hours / 9 hours ago
6073                if (withoutSuffix || isFuture) {
6074                    return result + (plural$1(number) ? 'hodiny' : 'hodin');
6075                } else {
6076                    return result + 'hodinami';
6077                }
6078                break;
6079            case 'd':  // a day / in a day / a day ago
6080                return (withoutSuffix || isFuture) ? 'den' : 'dnem';
6081            case 'dd': // 9 days / in 9 days / 9 days ago
6082                if (withoutSuffix || isFuture) {
6083                    return result + (plural$1(number) ? 'dny' : 'dní');
6084                } else {
6085                    return result + 'dny';
6086                }
6087                break;
6088            case 'M':  // a month / in a month / a month ago
6089                return (withoutSuffix || isFuture) ? 'měsíc' : 'měsícem';
6090            case 'MM': // 9 months / in 9 months / 9 months ago
6091                if (withoutSuffix || isFuture) {
6092                    return result + (plural$1(number) ? 'měsíce' : 'měsíců');
6093                } else {
6094                    return result + 'měsíci';
6095                }
6096                break;
6097            case 'y':  // a year / in a year / a year ago
6098                return (withoutSuffix || isFuture) ? 'rok' : 'rokem';
6099            case 'yy': // 9 years / in 9 years / 9 years ago
6100                if (withoutSuffix || isFuture) {
6101                    return result + (plural$1(number) ? 'roky' : 'let');
6102                } else {
6103                    return result + 'lety';
6104                }
6105                break;
6106        }
6107    }
6108
6109    hooks.defineLocale('cs', {
6110        months : months$3,
6111        monthsShort : monthsShort,
6112        monthsRegex : monthsRegex$1,
6113        monthsShortRegex : monthsRegex$1,
6114        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.
6115        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.
6116        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,
6117        monthsShortStrictRegex : /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,
6118        monthsParse : monthsParse,
6119        longMonthsParse : monthsParse,
6120        shortMonthsParse : monthsParse,
6121        weekdays : 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),
6122        weekdaysShort : 'ne_po_út_st_čt_pá_so'.split('_'),
6123        weekdaysMin : 'ne_po_út_st_čt_pá_so'.split('_'),
6124        longDateFormat : {
6125            LT: 'H:mm',
6126            LTS : 'H:mm:ss',
6127            L : 'DD.MM.YYYY',
6128            LL : 'D. MMMM YYYY',
6129            LLL : 'D. MMMM YYYY H:mm',
6130            LLLL : 'dddd D. MMMM YYYY H:mm',
6131            l : 'D. M. YYYY'
6132        },
6133        calendar : {
6134            sameDay: '[dnes v] LT',
6135            nextDay: '[zítra v] LT',
6136            nextWeek: function () {
6137                switch (this.day()) {
6138                    case 0:
6139                        return '[v neděli v] LT';
6140                    case 1:
6141                    case 2:
6142                        return '[v] dddd [v] LT';
6143                    case 3:
6144                        return '[ve středu v] LT';
6145                    case 4:
6146                        return '[ve čtvrtek v] LT';
6147                    case 5:
6148                        return '[v pátek v] LT';
6149                    case 6:
6150                        return '[v sobotu v] LT';
6151                }
6152            },
6153            lastDay: '[včera v] LT',
6154            lastWeek: function () {
6155                switch (this.day()) {
6156                    case 0:
6157                        return '[minulou neděli v] LT';
6158                    case 1:
6159                    case 2:
6160                        return '[minulé] dddd [v] LT';
6161                    case 3:
6162                        return '[minulou středu v] LT';
6163                    case 4:
6164                    case 5:
6165                        return '[minulý] dddd [v] LT';
6166                    case 6:
6167                        return '[minulou sobotu v] LT';
6168                }
6169            },
6170            sameElse: 'L'
6171        },
6172        relativeTime : {
6173            future : 'za %s',
6174            past : 'před %s',
6175            s : translate$1,
6176            ss : translate$1,
6177            m : translate$1,
6178            mm : translate$1,
6179            h : translate$1,
6180            hh : translate$1,
6181            d : translate$1,
6182            dd : translate$1,
6183            M : translate$1,
6184            MM : translate$1,
6185            y : translate$1,
6186            yy : translate$1
6187        },
6188        dayOfMonthOrdinalParse : /\d{1,2}\./,
6189        ordinal : '%d.',
vendor: 4,387 bytes, lines 6190-6294
6190        week : {
6191            dow : 1, // Monday is the first day of the week.
6192            doy : 4  // The week that contains Jan 4th is the first week of the year.
6193        }
6194    });
6195
6196    //! moment.js locale configuration
6197
6198    hooks.defineLocale('cv', {
6199        months : 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split('_'),
6200        monthsShort : 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),
6201        weekdays : 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split('_'),
6202        weekdaysShort : 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),
6203        weekdaysMin : 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),
6204        longDateFormat : {
6205            LT : 'HH:mm',
6206            LTS : 'HH:mm:ss',
6207            L : 'DD-MM-YYYY',
6208            LL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',
6209            LLL : 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',
6210            LLLL : 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm'
6211        },
6212        calendar : {
6213            sameDay: '[Паян] LT [сехетре]',
6214            nextDay: '[Ыран] LT [сехетре]',
6215            lastDay: '[Ӗнер] LT [сехетре]',
6216            nextWeek: '[Ҫитес] dddd LT [сехетре]',
6217            lastWeek: '[Иртнӗ] dddd LT [сехетре]',
6218            sameElse: 'L'
6219        },
6220        relativeTime : {
6221            future : function (output) {
6222                var affix = /сехет$/i.exec(output) ? 'рен' : /ҫул$/i.exec(output) ? 'тан' : 'ран';
6223                return output + affix;
6224            },
6225            past : '%s каялла',
6226            s : 'пӗр-ик ҫеккунт',
6227            ss : '%d ҫеккунт',
6228            m : 'пӗр минут',
6229            mm : '%d минут',
6230            h : 'пӗр сехет',
6231            hh : '%d сехет',
6232            d : 'пӗр кун',
6233            dd : '%d кун',
6234            M : 'пӗр уйӑх',
6235            MM : '%d уйӑх',
6236            y : 'пӗр ҫул',
6237            yy : '%d ҫул'
6238        },
6239        dayOfMonthOrdinalParse: /\d{1,2}-мӗш/,
6240        ordinal : '%d-мӗш',
6241        week : {
6242            dow : 1, // Monday is the first day of the week.
6243            doy : 7  // The week that contains Jan 7th is the first week of the year.
6244        }
6245    });
6246
6247    //! moment.js locale configuration
6248
6249    hooks.defineLocale('cy', {
6250        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split('_'),
6251        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split('_'),
6252        weekdays: 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split('_'),
6253        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),
6254        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),
6255        weekdaysParseExact : true,
6256        // time formats are the same as en-gb
6257        longDateFormat: {
6258            LT: 'HH:mm',
6259            LTS : 'HH:mm:ss',
6260            L: 'DD/MM/YYYY',
6261            LL: 'D MMMM YYYY',
6262            LLL: 'D MMMM YYYY HH:mm',
6263            LLLL: 'dddd, D MMMM YYYY HH:mm'
6264        },
6265        calendar: {
6266            sameDay: '[Heddiw am] LT',
6267            nextDay: '[Yfory am] LT',
6268            nextWeek: 'dddd [am] LT',
6269            lastDay: '[Ddoe am] LT',
6270            lastWeek: 'dddd [diwethaf am] LT',
6271            sameElse: 'L'
6272        },
6273        relativeTime: {
6274            future: 'mewn %s',
6275            past: '%s yn ôl',
6276            s: 'ychydig eiliadau',
6277            ss: '%d eiliad',
6278            m: 'munud',
6279            mm: '%d munud',
6280            h: 'awr',
6281            hh: '%d awr',
6282            d: 'diwrnod',
6283            dd: '%d diwrnod',
6284            M: 'mis',
6285            MM: '%d mis',
6286            y: 'blwyddyn',
6287            yy: '%d flynedd'
6288        },
6289        dayOfMonthOrdinalParse: /\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,
6290        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh
6291        ordinal: function (number) {
6292            var b = number,
6293                output = '',
6294                lookup = [
vendor: 16,516 bytes, lines 6295-6714
6295                    '', 'af', 'il', 'ydd', 'ydd', 'ed', 'ed', 'ed', 'fed', 'fed', 'fed', // 1af to 10fed
6296                    'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'eg', 'fed', 'eg', 'fed' // 11eg to 20fed
6297                ];
6298            if (b > 20) {
6299                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {
6300                    output = 'fed'; // not 30ain, 70ain or 90ain
6301                } else {
6302                    output = 'ain';
6303                }
6304            } else if (b > 0) {
6305                output = lookup[b];
6306            }
6307            return number + output;
6308        },
6309        week : {
6310            dow : 1, // Monday is the first day of the week.
6311            doy : 4  // The week that contains Jan 4th is the first week of the year.
6312        }
6313    });
6314
6315    //! moment.js locale configuration
6316
6317    hooks.defineLocale('da', {
6318        months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
6319        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
6320        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
6321        weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
6322        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
6323        longDateFormat : {
6324            LT : 'HH:mm',
6325            LTS : 'HH:mm:ss',
6326            L : 'DD.MM.YYYY',
6327            LL : 'D. MMMM YYYY',
6328            LLL : 'D. MMMM YYYY HH:mm',
6329            LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'
6330        },
6331        calendar : {
6332            sameDay : '[i dag kl.] LT',
6333            nextDay : '[i morgen kl.] LT',
6334            nextWeek : 'på dddd [kl.] LT',
6335            lastDay : '[i går kl.] LT',
6336            lastWeek : '[i] dddd[s kl.] LT',
6337            sameElse : 'L'
6338        },
6339        relativeTime : {
6340            future : 'om %s',
6341            past : '%s siden',
6342            s : 'få sekunder',
6343            ss : '%d sekunder',
6344            m : 'et minut',
6345            mm : '%d minutter',
6346            h : 'en time',
6347            hh : '%d timer',
6348            d : 'en dag',
6349            dd : '%d dage',
6350            M : 'en måned',
6351            MM : '%d måneder',
6352            y : 'et år',
6353            yy : '%d år'
6354        },
6355        dayOfMonthOrdinalParse: /\d{1,2}\./,
6356        ordinal : '%d.',
6357        week : {
6358            dow : 1, // Monday is the first day of the week.
6359            doy : 4  // The week that contains Jan 4th is the first week of the year.
6360        }
6361    });
6362
6363    //! moment.js locale configuration
6364
6365    function processRelativeTime(number, withoutSuffix, key, isFuture) {
6366        var format = {
6367            'm': ['eine Minute', 'einer Minute'],
6368            'h': ['eine Stunde', 'einer Stunde'],
6369            'd': ['ein Tag', 'einem Tag'],
6370            'dd': [number + ' Tage', number + ' Tagen'],
6371            'M': ['ein Monat', 'einem Monat'],
6372            'MM': [number + ' Monate', number + ' Monaten'],
6373            'y': ['ein Jahr', 'einem Jahr'],
6374            'yy': [number + ' Jahre', number + ' Jahren']
6375        };
6376        return withoutSuffix ? format[key][0] : format[key][1];
6377    }
6378
6379    hooks.defineLocale('de-at', {
6380        months : 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6381        monthsShort : 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
6382        monthsParseExact : true,
6383        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6384        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6385        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6386        weekdaysParseExact : true,
6387        longDateFormat : {
6388            LT: 'HH:mm',
6389            LTS: 'HH:mm:ss',
6390            L : 'DD.MM.YYYY',
6391            LL : 'D. MMMM YYYY',
6392            LLL : 'D. MMMM YYYY HH:mm',
6393            LLLL : 'dddd, D. MMMM YYYY HH:mm'
6394        },
6395        calendar : {
6396            sameDay: '[heute um] LT [Uhr]',
6397            sameElse: 'L',
6398            nextDay: '[morgen um] LT [Uhr]',
6399            nextWeek: 'dddd [um] LT [Uhr]',
6400            lastDay: '[gestern um] LT [Uhr]',
6401            lastWeek: '[letzten] dddd [um] LT [Uhr]'
6402        },
6403        relativeTime : {
6404            future : 'in %s',
6405            past : 'vor %s',
6406            s : 'ein paar Sekunden',
6407            ss : '%d Sekunden',
6408            m : processRelativeTime,
6409            mm : '%d Minuten',
6410            h : processRelativeTime,
6411            hh : '%d Stunden',
6412            d : processRelativeTime,
6413            dd : processRelativeTime,
6414            M : processRelativeTime,
6415            MM : processRelativeTime,
6416            y : processRelativeTime,
6417            yy : processRelativeTime
6418        },
6419        dayOfMonthOrdinalParse: /\d{1,2}\./,
6420        ordinal : '%d.',
6421        week : {
6422            dow : 1, // Monday is the first day of the week.
6423            doy : 4  // The week that contains Jan 4th is the first week of the year.
6424        }
6425    });
6426
6427    //! moment.js locale configuration
6428
6429    function processRelativeTime$1(number, withoutSuffix, key, isFuture) {
6430        var format = {
6431            'm': ['eine Minute', 'einer Minute'],
6432            'h': ['eine Stunde', 'einer Stunde'],
6433            'd': ['ein Tag', 'einem Tag'],
6434            'dd': [number + ' Tage', number + ' Tagen'],
6435            'M': ['ein Monat', 'einem Monat'],
6436            'MM': [number + ' Monate', number + ' Monaten'],
6437            'y': ['ein Jahr', 'einem Jahr'],
6438            'yy': [number + ' Jahre', number + ' Jahren']
6439        };
6440        return withoutSuffix ? format[key][0] : format[key][1];
6441    }
6442
6443    hooks.defineLocale('de-ch', {
6444        months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
6445        //monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.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		monthsShort : 'Jan_Feb_März_Apr_Mai_Juni_Juli_Aug_Sep_Okt_Nov_Dez'.split('_'),
6512        monthsParseExact : true,
6513        weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
6514        weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
6515        weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
6516        weekdaysParseExact : true,
6517        longDateFormat : {
6518            LT: 'HH:mm',
6519            LTS: 'HH:mm:ss',
6520            L : 'DD.MM.YYYY',
6521            LL : 'D. MMMM YYYY',
6522            LLL : 'D. MMMM YYYY HH:mm',
6523            LLLL : 'dddd, D. MMMM YYYY HH:mm'
6524        },
6525        calendar : {
6526            sameDay: '[heute um] LT [Uhr]',
6527            sameElse: 'L',
6528            nextDay: '[morgen um] LT [Uhr]',
6529            nextWeek: 'dddd [um] LT [Uhr]',
6530            lastDay: '[gestern um] LT [Uhr]',
6531            lastWeek: '[letzten] dddd [um] LT [Uhr]'
6532        },
6533        relativeTime : {
6534            future : 'in %s',
6535            past : 'vor %s',
6536            s : 'ein paar Sekunden',
6537            ss : '%d Sekunden',
6538            m : processRelativeTime$2,
6539            mm : '%d Minuten',
6540            h : processRelativeTime$2,
6541            hh : '%d Stunden',
6542            d : processRelativeTime$2,
6543            dd : processRelativeTime$2,
6544            M : processRelativeTime$2,
6545            MM : processRelativeTime$2,
6546            y : processRelativeTime$2,
6547            yy : processRelativeTime$2
6548        },
6549        dayOfMonthOrdinalParse: /\d{1,2}\./,
6550        ordinal : '%d.',
6551        week : {
6552            dow : 1, // Monday is the first day of the week.
6553            doy : 4  // The week that contains Jan 4th is the first week of the year.
6554        }
6555    });
6556
6557    //! moment.js locale configuration
6558
6559    var months$4 = [
6560        'ޖެނުއަރީ',
6561        'ފެބްރުއަރީ',
6562        'މާރިޗު',
6563        'އޭޕްރީލު',
6564        'މޭ',
6565        'ޖޫން',
6566        'ޖުލައި',
6567        'އޯގަސްޓު',
6568        'ސެޕްޓެމްބަރު',
6569        'އޮކްޓޯބަރު',
6570        'ނޮވެމްބަރު',
6571        'ޑިސެމްބަރު'
6572    ], weekdays = [
6573        'އާދިއްތަ',
6574        'ހޯމަ',
6575        'އަންގާރަ',
6576        'ބުދަ',
6577        'ބުރާސްފަތި',
6578        'ހުކުރު',
6579        'ހޮނިހިރު'
6580    ];
6581
6582    hooks.defineLocale('dv', {
6583        months : months$4,
6584        monthsShort : months$4,
6585        weekdays : weekdays,
6586        weekdaysShort : weekdays,
6587        weekdaysMin : 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),
6588        longDateFormat : {
6589
6590            LT : 'HH:mm',
6591            LTS : 'HH:mm:ss',
6592            L : 'D/M/YYYY',
6593            LL : 'D MMMM YYYY',
6594            LLL : 'D MMMM YYYY HH:mm',
6595            LLLL : 'dddd D MMMM YYYY HH:mm'
6596        },
6597        meridiemParse: /މކ|މފ/,
6598        isPM : function (input) {
6599            return 'މފ' === input;
6600        },
6601        meridiem : function (hour, minute, isLower) {
6602            if (hour < 12) {
6603                return 'މކ';
6604            } else {
6605                return 'މފ';
6606            }
6607        },
6608        calendar : {
6609            sameDay : '[މިއަދު] LT',
6610            nextDay : '[މާދަމާ] LT',
6611            nextWeek : 'dddd LT',
6612            lastDay : '[އިއްޔެ] LT',
6613            lastWeek : '[ފާއިތުވި] dddd LT',
6614            sameElse : 'L'
6615        },
6616        relativeTime : {
6617            future : 'ތެރޭގައި %s',
6618            past : 'ކުރިން %s',
6619            s : 'ސިކުންތުކޮޅެއް',
6620            ss : 'd% ސިކުންތު',
6621            m : 'މިނިޓެއް',
6622            mm : 'މިނިޓު %d',
6623            h : 'ގަޑިއިރެއް',
6624            hh : 'ގަޑިއިރު %d',
6625            d : 'ދުވަހެއް',
6626            dd : 'ދުވަސް %d',
6627            M : 'މަހެއް',
6628            MM : 'މަސް %d',
6629            y : 'އަހަރެއް',
6630            yy : 'އަހަރު %d'
6631        },
6632        preparse: function (string) {
6633            return string.replace(/،/g, ',');
6634        },
6635        postformat: function (string) {
6636            return string.replace(/,/g, '،');
6637        },
6638        week : {
6639            dow : 7,  // Sunday is the first day of the week.
6640            doy : 12  // The week that contains Jan 12th is the first week of the year.
6641        }
6642    });
6643
6644    //! moment.js locale configuration
6645
6646    hooks.defineLocale('el', {
6647        monthsNominativeEl : 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split('_'),
6648        monthsGenitiveEl : 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split('_'),
6649        months : function (momentToFormat, format) {
6650            if (!momentToFormat) {
6651                return this._monthsNominativeEl;
6652            } else if (typeof format === 'string' && /D/.test(format.substring(0, format.indexOf('MMMM')))) { // if there is a day number before 'MMMM'
6653                return this._monthsGenitiveEl[momentToFormat.month()];
6654            } else {
6655                return this._monthsNominativeEl[momentToFormat.month()];
6656            }
6657        },
6658        monthsShort : 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),
6659        weekdays : 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split('_'),
6660        weekdaysShort : 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),
6661        weekdaysMin : 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),
6662        meridiem : function (hours, minutes, isLower) {
6663            if (hours > 11) {
6664                return isLower ? 'μμ' : 'ΜΜ';
6665            } else {
6666                return isLower ? 'πμ' : 'ΠΜ';
6667            }
6668        },
6669        isPM : function (input) {
6670            return ((input + '').toLowerCase()[0] === 'μ');
6671        },
6672        meridiemParse : /[ΠΜ]\.?Μ?\.?/i,
6673        longDateFormat : {
6674            LT : 'h:mm A',
6675            LTS : 'h:mm:ss A',
6676            L : 'DD/MM/YYYY',
6677            LL : 'D MMMM YYYY',
6678            LLL : 'D MMMM YYYY h:mm A',
6679            LLLL : 'dddd, D MMMM YYYY h:mm A'
6680        },
6681        calendarEl : {
6682            sameDay : '[Σήμερα {}] LT',
6683            nextDay : '[Αύριο {}] LT',
6684            nextWeek : 'dddd [{}] LT',
6685            lastDay : '[Χθες {}] LT',
6686            lastWeek : function () {
6687                switch (this.day()) {
6688                    case 6:
6689                        return '[το προηγούμενο] dddd [{}] LT';
6690                    default:
6691                        return '[την προηγούμενη] dddd [{}] LT';
6692                }
6693            },
6694            sameElse : 'L'
6695        },
6696        calendar : function (key, mom) {
6697            var output = this._calendarEl[key],
6698                hours = mom && mom.hours();
6699            if (isFunction(output)) {
6700                output = output.apply(mom);
6701            }
6702            return output.replace('{}', (hours % 12 === 1 ? 'στη' : 'στις'));
6703        },
6704        relativeTime : {
6705            future : 'σε %s',
6706            past : '%s πριν',
6707            s : 'λίγα δευτερόλεπτα',
6708            ss : '%d δευτερόλεπτα',
6709            m : 'ένα λεπτό',
6710            mm : '%d λεπτά',
6711            h : 'μία ώρα',
6712            hh : '%d ώρες',
6713            d : 'μία μέρα',
6714            dd : '%d μέρες',
6715            M : 'ένας μήνας',
6716            MM : '%d μήνες',
6717            y : 'ένας χρόνος',
6718            yy : '%d χρόνια'
6719        },
6720        dayOfMonthOrdinalParse: /\d{1,2}η/,
6721        ordinal: '%dη',
6722        week : {
6723            dow : 1, // Monday is the first day of the week.
6724            doy : 4  // The week that contains Jan 4st is the first week of the year.
6725        }
6726    });
6727
6728    //! moment.js locale configuration
6729
6730    hooks.defineLocale('en-SG', {
6731        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6732        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6733        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6734        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6735        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6736        longDateFormat : {
6737            LT : 'HH:mm',
6738            LTS : 'HH:mm:ss',
6739            L : 'DD/MM/YYYY',
6740            LL : 'D MMMM YYYY',
6741            LLL : 'D MMMM YYYY HH:mm',
6742            LLLL : 'dddd, D MMMM YYYY HH:mm'
6743        },
6744        calendar : {
6745            sameDay : '[Today at] LT',
6746            nextDay : '[Tomorrow at] LT',
6747            nextWeek : 'dddd [at] LT',
6748            lastDay : '[Yesterday at] LT',
6749            lastWeek : '[Last] dddd [at] LT',
6750            sameElse : 'L'
6751        },
6752        relativeTime : {
6753            future : 'in %s',
6754            past : '%s ago',
6755            s : 'a few seconds',
6756            ss : '%d seconds',
6757            m : 'a minute',
6758            mm : '%d minutes',
6759            h : 'an hour',
6760            hh : '%d hours',
6761            d : 'a day',
6762            dd : '%d days',
6763            M : 'a month',
6764            MM : '%d months',
6765            y : 'a year',
6766            yy : '%d years'
6767        },
6768        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6769        ordinal : function (number) {
6770            var b = number % 10,
6771                output = (~~(number % 100 / 10) === 1) ? 'th' :
6772                (b === 1) ? 'st' :
6773                (b === 2) ? 'nd' :
6774                (b === 3) ? 'rd' : 'th';
6775            return number + output;
6776        },
6777        week : {
6778            dow : 1, // Monday is the first day of the week.
6779            doy : 4  // The week that contains Jan 4th is the first week of the year.
6780        }
6781    });
6782
6783    //! moment.js locale configuration
6784
6785    hooks.defineLocale('en-au', {
6786        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6787        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6788        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6789        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6790        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6791        longDateFormat : {
6792            LT : 'h:mm A',
6793            LTS : 'h:mm:ss A',
6794            L : 'DD/MM/YYYY',
6795            LL : 'D MMMM YYYY',
6796            LLL : 'D MMMM YYYY h:mm A',
6797            LLLL : 'dddd, D MMMM YYYY h:mm A'
6798        },
6799        calendar : {
6800            sameDay : '[Today at] LT',
6801            nextDay : '[Tomorrow at] LT',
6802            nextWeek : 'dddd [at] LT',
6803            lastDay : '[Yesterday at] LT',
6804            lastWeek : '[Last] dddd [at] LT',
6805            sameElse : 'L'
6806        },
6807        relativeTime : {
6808            future : 'in %s',
6809            past : '%s ago',
6810            s : 'a few seconds',
6811            ss : '%d seconds',
6812            m : 'a minute',
6813            mm : '%d minutes',
6814            h : 'an hour',
6815            hh : '%d hours',
6816            d : 'a day',
6817            dd : '%d days',
6818            M : 'a month',
6819            MM : '%d months',
6820            y : 'a year',
6821            yy : '%d years'
6822        },
6823        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6824        ordinal : function (number) {
6825            var b = number % 10,
6826                output = (~~(number % 100 / 10) === 1) ? 'th' :
6827                (b === 1) ? 'st' :
6828                (b === 2) ? 'nd' :
6829                (b === 3) ? 'rd' : 'th';
6830            return number + output;
6831        },
6832        week : {
6833            dow : 1, // Monday is the first day of the week.
6834            doy : 4  // The week that contains Jan 4th is the first week of the year.
6835        }
6836    });
6837
6838    //! moment.js locale configuration
6839
6840    hooks.defineLocale('en-ca', {
6841        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6842        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6843        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6844        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6845        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6846        longDateFormat : {
6847            LT : 'h:mm A',
6848            LTS : 'h:mm:ss A',
6849            L : 'YYYY-MM-DD',
6850            LL : 'MMMM D, YYYY',
6851            LLL : 'MMMM D, YYYY h:mm A',
6852            LLLL : 'dddd, MMMM D, YYYY h:mm A'
6853        },
6854        calendar : {
6855            sameDay : '[Today at] LT',
6856            nextDay : '[Tomorrow at] LT',
6857            nextWeek : 'dddd [at] LT',
6858            lastDay : '[Yesterday at] LT',
6859            lastWeek : '[Last] dddd [at] LT',
6860            sameElse : 'L'
6861        },
6862        relativeTime : {
6863            future : 'in %s',
6864            past : '%s ago',
6865            s : 'a few seconds',
6866            ss : '%d seconds',
6867            m : 'a minute',
6868            mm : '%d minutes',
6869            h : 'an hour',
6870            hh : '%d hours',
6871            d : 'a day',
6872            dd : '%d days',
6873            M : 'a month',
6874            MM : '%d months',
6875            y : 'a year',
6876            yy : '%d years'
6877        },
6878        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6879        ordinal : function (number) {
6880            var b = number % 10,
6881                output = (~~(number % 100 / 10) === 1) ? 'th' :
6882                (b === 1) ? 'st' :
6883                (b === 2) ? 'nd' :
6884                (b === 3) ? 'rd' : 'th';
6885            return number + output;
6886        }
6887    });
6888
6889    //! moment.js locale configuration
6890
6891    hooks.defineLocale('en-gb', {
6892        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6893        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6894        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6895        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6896        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6897        longDateFormat : {
6898            LT : 'HH:mm',
6899            LTS : 'HH:mm:ss',
6900            L : 'DD/MM/YYYY',
6901            LL : 'D MMMM YYYY',
6902            LLL : 'D MMMM YYYY HH:mm',
6903            LLLL : 'dddd, D MMMM YYYY HH:mm'
6904        },
6905        calendar : {
6906            sameDay : '[Today at] LT',
6907            nextDay : '[Tomorrow at] LT',
6908            nextWeek : 'dddd [at] LT',
6909            lastDay : '[Yesterday at] LT',
6910            lastWeek : '[Last] dddd [at] LT',
6911            sameElse : 'L'
6912        },
6913        relativeTime : {
6914            future : 'in %s',
6915            past : '%s ago',
6916            s : 'a few seconds',
6917            ss : '%d seconds',
6918            m : 'a minute',
6919            mm : '%d minutes',
6920            h : 'an hour',
6921            hh : '%d hours',
6922            d : 'a day',
6923            dd : '%d days',
6924            M : 'a month',
6925            MM : '%d months',
6926            y : 'a year',
6927            yy : '%d years'
6928        },
6929        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6930        ordinal : function (number) {
6931            var b = number % 10,
6932                output = (~~(number % 100 / 10) === 1) ? 'th' :
6933                (b === 1) ? 'st' :
6934                (b === 2) ? 'nd' :
6935                (b === 3) ? 'rd' : 'th';
6936            return number + output;
6937        },
6938        week : {
6939            dow : 1, // Monday is the first day of the week.
6940            doy : 4  // The week that contains Jan 4th is the first week of the year.
6941        }
6942    });
6943
6944    //! moment.js locale configuration
6945
6946    hooks.defineLocale('en-ie', {
6947        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
6948        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
6949        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
6950        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
6951        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
6952        longDateFormat : {
6953            LT : 'HH:mm',
6954            LTS : 'HH:mm:ss',
6955            L : 'DD/MM/YYYY',
6956            LL : 'D MMMM YYYY',
6957            LLL : 'D MMMM YYYY HH:mm',
6958            LLLL : 'dddd D MMMM YYYY HH:mm'
6959        },
6960        calendar : {
6961            sameDay : '[Today at] LT',
6962            nextDay : '[Tomorrow at] LT',
6963            nextWeek : 'dddd [at] LT',
6964            lastDay : '[Yesterday at] LT',
6965            lastWeek : '[Last] dddd [at] LT',
6966            sameElse : 'L'
6967        },
6968        relativeTime : {
6969            future : 'in %s',
6970            past : '%s ago',
6971            s : 'a few seconds',
6972            ss : '%d seconds',
6973            m : 'a minute',
6974            mm : '%d minutes',
6975            h : 'an hour',
6976            hh : '%d hours',
6977            d : 'a day',
6978            dd : '%d days',
6979            M : 'a month',
6980            MM : '%d months',
6981            y : 'a year',
6982            yy : '%d years'
6983        },
6984        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
6985        ordinal : function (number) {
6986            var b = number % 10,
6987                output = (~~(number % 100 / 10) === 1) ? 'th' :
6988                (b === 1) ? 'st' :
6989                (b === 2) ? 'nd' :
6990                (b === 3) ? 'rd' : 'th';
6991            return number + output;
6992        },
6993        week : {
6994            dow : 1, // Monday is the first day of the week.
6995            doy : 4  // The week that contains Jan 4th is the first week of the year.
6996        }
6997    });
vendor: 21,856 bytes, lines 6998-7527
6998
6999    //! moment.js locale configuration
7000
7001    hooks.defineLocale('en-il', {
7002        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
7003        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
7004        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
7005        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
7006        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
7007        longDateFormat : {
7008            LT : 'HH:mm',
7009            LTS : 'HH:mm:ss',
7010            L : 'DD/MM/YYYY',
7011            LL : 'D MMMM YYYY',
7012            LLL : 'D MMMM YYYY HH:mm',
7013            LLLL : 'dddd, D MMMM YYYY HH:mm'
7014        },
7015        calendar : {
7016            sameDay : '[Today at] LT',
7017            nextDay : '[Tomorrow at] LT',
7018            nextWeek : 'dddd [at] LT',
7019            lastDay : '[Yesterday at] LT',
7020            lastWeek : '[Last] dddd [at] LT',
7021            sameElse : 'L'
7022        },
7023        relativeTime : {
7024            future : 'in %s',
7025            past : '%s ago',
7026            s : 'a few seconds',
7027            m : 'a minute',
7028            mm : '%d minutes',
7029            h : 'an hour',
7030            hh : '%d hours',
7031            d : 'a day',
7032            dd : '%d days',
7033            M : 'a month',
7034            MM : '%d months',
7035            y : 'a year',
7036            yy : '%d years'
7037        },
7038        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
7039        ordinal : function (number) {
7040            var b = number % 10,
7041                output = (~~(number % 100 / 10) === 1) ? 'th' :
7042                (b === 1) ? 'st' :
7043                (b === 2) ? 'nd' :
7044                (b === 3) ? 'rd' : 'th';
7045            return number + output;
7046        }
7047    });
7048
7049    //! moment.js locale configuration
7050
7051    hooks.defineLocale('en-nz', {
7052        months : 'January_February_March_April_May_June_July_August_September_October_November_December'.split('_'),
7053        monthsShort : 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),
7054        weekdays : 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),
7055        weekdaysShort : 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),
7056        weekdaysMin : 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),
7057        longDateFormat : {
7058            LT : 'h:mm A',
7059            LTS : 'h:mm:ss A',
7060            L : 'DD/MM/YYYY',
7061            LL : 'D MMMM YYYY',
7062            LLL : 'D MMMM YYYY h:mm A',
7063            LLLL : 'dddd, D MMMM YYYY h:mm A'
7064        },
7065        calendar : {
7066            sameDay : '[Today at] LT',
7067            nextDay : '[Tomorrow at] LT',
7068            nextWeek : 'dddd [at] LT',
7069            lastDay : '[Yesterday at] LT',
7070            lastWeek : '[Last] dddd [at] LT',
7071            sameElse : 'L'
7072        },
7073        relativeTime : {
7074            future : 'in %s',
7075            past : '%s ago',
7076            s : 'a few seconds',
7077            ss : '%d seconds',
7078            m : 'a minute',
7079            mm : '%d minutes',
7080            h : 'an hour',
7081            hh : '%d hours',
7082            d : 'a day',
7083            dd : '%d days',
7084            M : 'a month',
7085            MM : '%d months',
7086            y : 'a year',
7087            yy : '%d years'
7088        },
7089        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
7090        ordinal : function (number) {
7091            var b = number % 10,
7092                output = (~~(number % 100 / 10) === 1) ? 'th' :
7093                (b === 1) ? 'st' :
7094                (b === 2) ? 'nd' :
7095                (b === 3) ? 'rd' : 'th';
7096            return number + output;
7097        },
7098        week : {
7099            dow : 1, // Monday is the first day of the week.
7100            doy : 4  // The week that contains Jan 4th is the first week of the year.
7101        }
7102    });
7103
7104    //! moment.js locale configuration
7105
7106    hooks.defineLocale('eo', {
7107        months : 'januaro_februaro_marto_aprilo_majo_junio_julio_aÅ­gusto_septembro_oktobro_novembro_decembro'.split('_'),
7108        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aÅ­g_sep_okt_nov_dec'.split('_'),
7109        weekdays : 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),
7110        weekdaysShort : 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),
7111        weekdaysMin : 'di_lu_ma_me_ĵa_ve_sa'.split('_'),
7112        longDateFormat : {
7113            LT : 'HH:mm',
7114            LTS : 'HH:mm:ss',
7115            L : 'YYYY-MM-DD',
7116            LL : 'D[-a de] MMMM, YYYY',
7117            LLL : 'D[-a de] MMMM, YYYY HH:mm',
7118            LLLL : 'dddd, [la] D[-a de] MMMM, YYYY HH:mm'
7119        },
7120        meridiemParse: /[ap]\.t\.m/i,
7121        isPM: function (input) {
7122            return input.charAt(0).toLowerCase() === 'p';
7123        },
7124        meridiem : function (hours, minutes, isLower) {
7125            if (hours > 11) {
7126                return isLower ? 'p.t.m.' : 'P.T.M.';
7127            } else {
7128                return isLower ? 'a.t.m.' : 'A.T.M.';
7129            }
7130        },
7131        calendar : {
7132            sameDay : '[HodiaÅ­ je] LT',
7133            nextDay : '[MorgaÅ­ je] LT',
7134            nextWeek : 'dddd [je] LT',
7135            lastDay : '[HieraÅ­ je] LT',
7136            lastWeek : '[pasinta] dddd [je] LT',
7137            sameElse : 'L'
7138        },
7139        relativeTime : {
7140            future : 'post %s',
7141            past : 'antaÅ­ %s',
7142            s : 'sekundoj',
7143            ss : '%d sekundoj',
7144            m : 'minuto',
7145            mm : '%d minutoj',
7146            h : 'horo',
7147            hh : '%d horoj',
7148            d : 'tago',//ne 'diurno', ĉar estas uzita por proksimumo
7149            dd : '%d tagoj',
7150            M : 'monato',
7151            MM : '%d monatoj',
7152            y : 'jaro',
7153            yy : '%d jaroj'
7154        },
7155        dayOfMonthOrdinalParse: /\d{1,2}a/,
7156        ordinal : '%da',
7157        week : {
7158            dow : 1, // Monday is the first day of the week.
7159            doy : 7  // The week that contains Jan 7th is the first week of the year.
7160        }
7161    });
7162
7163    //! moment.js locale configuration
7164
7165    //var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7166     //   monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7167		
7168	var monthsShortDot = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
7169        monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7170
7171    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];
7172    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;
7173
7174    hooks.defineLocale('es-do', {
7175        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7176        monthsShort : function (m, format) {
7177            if (!m) {
7178                return monthsShortDot;
7179            } else if (/-MMM-/.test(format)) {
7180                return monthsShort$1[m.month()];
7181            } else {
7182                return monthsShortDot[m.month()];
7183            }
7184        },
7185        monthsRegex: monthsRegex$2,
7186        monthsShortRegex: monthsRegex$2,
7187        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7188        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7189        monthsParse: monthsParse$1,
7190        longMonthsParse: monthsParse$1,
7191        shortMonthsParse: monthsParse$1,
7192        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7193        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7194        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7195        weekdaysParseExact : true,
7196        longDateFormat : {
7197            LT : 'h:mm A',
7198            LTS : 'h:mm:ss A',
7199            L : 'DD/MM/YYYY',
7200            LL : 'D [de] MMMM [de] YYYY',
7201            LLL : 'D [de] MMMM [de] YYYY h:mm A',
7202            LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'
7203        },
7204        calendar : {
7205            sameDay : function () {
7206                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7207            },
7208            nextDay : function () {
7209                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7210            },
7211            nextWeek : function () {
7212                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7213            },
7214            lastDay : function () {
7215                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7216            },
7217            lastWeek : function () {
7218                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7219            },
7220            sameElse : 'L'
7221        },
7222        relativeTime : {
7223            future : 'en %s',
7224            past : 'hace %s',
7225            s : 'unos segundos',
7226            ss : '%d segundos',
7227            m : 'un minuto',
7228            mm : '%d minutos',
7229            h : 'una hora',
7230            hh : '%d horas',
7231            d : 'un día',
7232            dd : '%d días',
7233            M : 'un mes',
7234            MM : '%d meses',
7235            y : 'un año',
7236            yy : '%d años'
7237        },
7238        dayOfMonthOrdinalParse : /\d{1,2}º/,
7239        ordinal : '%dº',
7240        week : {
7241            dow : 1, // Monday is the first day of the week.
7242            doy : 4  // The week that contains Jan 4th is the first week of the year.
7243        }
7244    });
7245
7246    //! moment.js locale configuration
7247
7248    var monthsShortDot$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
7249        monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7250		
7251	//var monthsShortDot$1 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7252        //monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7253
7254    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];
7255    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;
7256
7257    hooks.defineLocale('es-us', {
7258        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7259        monthsShort : function (m, format) {
7260            if (!m) {
7261                return monthsShortDot$1;
7262            } else if (/-MMM-/.test(format)) {
7263                return monthsShort$2[m.month()];
7264            } else {
7265                return monthsShortDot$1[m.month()];
7266            }
7267        },
7268        monthsRegex: monthsRegex$3,
7269        monthsShortRegex: monthsRegex$3,
7270        monthsStrictRegex: /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7271        monthsShortStrictRegex: /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7272        monthsParse: monthsParse$2,
7273        longMonthsParse: monthsParse$2,
7274        shortMonthsParse: monthsParse$2,
7275        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7276        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7277        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7278        weekdaysParseExact : true,
7279        longDateFormat : {
7280            LT : 'h:mm A',
7281            LTS : 'h:mm:ss A',
7282            L : 'MM/DD/YYYY',
7283            LL : 'D [de] MMMM [de] YYYY',
7284            LLL : 'D [de] MMMM [de] YYYY h:mm A',
7285            LLLL : 'dddd, D [de] MMMM [de] YYYY h:mm A'
7286        },
7287        calendar : {
7288            sameDay : function () {
7289                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7290            },
7291            nextDay : function () {
7292                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7293            },
7294            nextWeek : function () {
7295                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7296            },
7297            lastDay : function () {
7298                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7299            },
7300            lastWeek : function () {
7301                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7302            },
7303            sameElse : 'L'
7304        },
7305        relativeTime : {
7306            future : 'en %s',
7307            past : 'hace %s',
7308            s : 'unos segundos',
7309            ss : '%d segundos',
7310            m : 'un minuto',
7311            mm : '%d minutos',
7312            h : 'una hora',
7313            hh : '%d horas',
7314            d : 'un día',
7315            dd : '%d días',
7316            M : 'un mes',
7317            MM : '%d meses',
7318            y : 'un año',
7319            yy : '%d años'
7320        },
7321        dayOfMonthOrdinalParse : /\d{1,2}º/,
7322        ordinal : '%dº',
7323        week : {
7324            dow : 0, // Sunday is the first day of the week.
7325            doy : 6  // The week that contains Jan 6th is the first week of the year.
7326        }
7327    });
7328
7329    //! moment.js locale configuration
7330
7331    //var monthsShortDot$2 = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_'),
7332     //   monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7333		
7334	var monthsShortDot$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),
7335        monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
7336
7337    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];
7338    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;
7339
7340    hooks.defineLocale('es', {
7341        months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
7342        monthsShort : function (m, format) {
7343            if (!m) {
7344                return monthsShortDot$2;
7345            } else if (/-MMM-/.test(format)) {
7346                return monthsShort$3[m.month()];
7347            } else {
7348                return monthsShortDot$2[m.month()];
7349            }
7350        },
7351        monthsRegex : monthsRegex$4,
7352        monthsShortRegex : monthsRegex$4,
7353        monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
7354        monthsShortStrictRegex : /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
7355        monthsParse : monthsParse$3,
7356        longMonthsParse : monthsParse$3,
7357        shortMonthsParse : monthsParse$3,
7358        weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
7359        weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
7360        weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
7361        weekdaysParseExact : true,
7362        longDateFormat : {
7363            LT : 'H:mm',
7364            LTS : 'H:mm:ss',
7365            L : 'DD/MM/YYYY',
7366            LL : 'D [de] MMMM [de] YYYY',
7367            LLL : 'D [de] MMMM [de] YYYY H:mm',
7368            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
7369        },
7370        calendar : {
7371            sameDay : function () {
7372                return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7373            },
7374            nextDay : function () {
7375                return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7376            },
7377            nextWeek : function () {
7378                return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7379            },
7380            lastDay : function () {
7381                return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7382            },
7383            lastWeek : function () {
7384                return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
7385            },
7386            sameElse : 'L'
7387        },
7388        relativeTime : {
7389            future : 'en %s',
7390            past : 'hace %s',
7391            s : 'unos segundos',
7392            ss : '%d segundos',
7393            m : 'un minuto',
7394            mm : '%d minutos',
7395            h : 'una hora',
7396            hh : '%d horas',
7397            d : 'un día',
7398            dd : '%d días',
7399            M : 'un mes',
7400            MM : '%d meses',
7401            y : 'un año',
7402            yy : '%d años'
7403        },
7404        dayOfMonthOrdinalParse : /\d{1,2}º/,
7405        ordinal : '%dº',
7406        week : {
7407            dow : 1, // Monday is the first day of the week.
7408            doy : 4  // The week that contains Jan 4th is the first week of the year.
7409        }
7410    });
7411
7412    //! moment.js locale configuration
7413
7414    function processRelativeTime$3(number, withoutSuffix, key, isFuture) {
7415        var format = {
7416            's' : ['mõne sekundi', 'mõni sekund', 'paar sekundit'],
7417            'ss': [number + 'sekundi', number + 'sekundit'],
7418            'm' : ['ühe minuti', 'üks minut'],
7419            'mm': [number + ' minuti', number + ' minutit'],
7420            'h' : ['ühe tunni', 'tund aega', 'üks tund'],
7421            'hh': [number + ' tunni', number + ' tundi'],
7422            'd' : ['ühe päeva', 'üks päev'],
7423            'M' : ['kuu aja', 'kuu aega', 'üks kuu'],
7424            'MM': [number + ' kuu', number + ' kuud'],
7425            'y' : ['ühe aasta', 'aasta', 'üks aasta'],
7426            'yy': [number + ' aasta', number + ' aastat']
7427        };
7428        if (withoutSuffix) {
7429            return format[key][2] ? format[key][2] : format[key][1];
7430        }
7431        return isFuture ? format[key][0] : format[key][1];
7432    }
7433
7434    hooks.defineLocale('et', {
7435        months        : 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split('_'),
7436        monthsShort   : 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),
7437        weekdays      : 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split('_'),
7438        weekdaysShort : 'P_E_T_K_N_R_L'.split('_'),
7439        weekdaysMin   : 'P_E_T_K_N_R_L'.split('_'),
7440        longDateFormat : {
7441            LT   : 'H:mm',
7442            LTS : 'H:mm:ss',
7443            L    : 'DD.MM.YYYY',
7444            LL   : 'D. MMMM YYYY',
7445            LLL  : 'D. MMMM YYYY H:mm',
7446            LLLL : 'dddd, D. MMMM YYYY H:mm'
7447        },
7448        calendar : {
7449            sameDay  : '[Täna,] LT',
7450            nextDay  : '[Homme,] LT',
7451            nextWeek : '[Järgmine] dddd LT',
7452            lastDay  : '[Eile,] LT',
7453            lastWeek : '[Eelmine] dddd LT',
7454            sameElse : 'L'
7455        },
7456        relativeTime : {
7457            future : '%s pärast',
7458            past   : '%s tagasi',
7459            s      : processRelativeTime$3,
7460            ss     : processRelativeTime$3,
7461            m      : processRelativeTime$3,
7462            mm     : processRelativeTime$3,
7463            h      : processRelativeTime$3,
7464            hh     : processRelativeTime$3,
7465            d      : processRelativeTime$3,
7466            dd     : '%d päeva',
7467            M      : processRelativeTime$3,
7468            MM     : processRelativeTime$3,
7469            y      : processRelativeTime$3,
7470            yy     : processRelativeTime$3
7471        },
7472        dayOfMonthOrdinalParse: /\d{1,2}\./,
7473        ordinal : '%d.',
7474        week : {
7475            dow : 1, // Monday is the first day of the week.
7476            doy : 4  // The week that contains Jan 4th is the first week of the year.
7477        }
7478    });
7479
7480    //! moment.js locale configuration
7481
7482    hooks.defineLocale('eu', {
7483        months : 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split('_'),
7484        monthsShort : 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split('_'),
7485        monthsParseExact : true,
7486        weekdays : 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split('_'),
7487        weekdaysShort : 'ig._al._ar._az._og._ol._lr.'.split('_'),
7488        weekdaysMin : 'ig_al_ar_az_og_ol_lr'.split('_'),
7489        weekdaysParseExact : true,
7490        longDateFormat : {
7491            LT : 'HH:mm',
7492            LTS : 'HH:mm:ss',
7493            L : 'YYYY-MM-DD',
7494            LL : 'YYYY[ko] MMMM[ren] D[a]',
7495            LLL : 'YYYY[ko] MMMM[ren] D[a] HH:mm',
7496            LLLL : 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',
7497            l : 'YYYY-M-D',
7498            ll : 'YYYY[ko] MMM D[a]',
7499            lll : 'YYYY[ko] MMM D[a] HH:mm',
7500            llll : 'ddd, YYYY[ko] MMM D[a] HH:mm'
7501        },
7502        calendar : {
7503            sameDay : '[gaur] LT[etan]',
7504            nextDay : '[bihar] LT[etan]',
7505            nextWeek : 'dddd LT[etan]',
7506            lastDay : '[atzo] LT[etan]',
7507            lastWeek : '[aurreko] dddd LT[etan]',
7508            sameElse : 'L'
7509        },
7510        relativeTime : {
7511            future : '%s barru',
7512            past : 'duela %s',
7513            s : 'segundo batzuk',
7514            ss : '%d segundo',
7515            m : 'minutu bat',
7516            mm : '%d minutu',
7517            h : 'ordu bat',
7518            hh : '%d ordu',
7519            d : 'egun bat',
7520            dd : '%d egun',
7521            M : 'hilabete bat',
7522            MM : '%d hilabete',
7523            y : 'urte bat',
7524            yy : '%d urte'
7525        },
7526        dayOfMonthOrdinalParse: /\d{1,2}\./,
7527        ordinal : '%d.',
7528        week : {
7529            dow : 1, // Monday is the first day of the week.
7530            doy : 7  // The week that contains Jan 7th is the first week of the year.
7531        }
7532    });
7533
7534    //! moment.js locale configuration
7535
7536    var symbolMap$5 = {
7537        '1': 'Û±',
7538        '2': 'Û²',
7539        '3': 'Û³',
7540        '4': 'Û´',
7541        '5': 'Ûµ',
7542        '6': 'Û¶',
7543        '7': 'Û·',
7544        '8': 'Û¸',
7545        '9': 'Û¹',
7546        '0': 'Û°'
7547    }, numberMap$4 = {
7548        'Û±': '1',
7549        'Û²': '2',
7550        'Û³': '3',
7551        'Û´': '4',
7552        'Ûµ': '5',
7553        'Û¶': '6',
7554        'Û·': '7',
7555        'Û¸': '8',
7556        'Û¹': '9',
7557        'Û°': '0'
7558    };
7559
7560    hooks.defineLocale('fa', {
7561        months : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
7562        monthsShort : 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split('_'),
vendor: 113,775 bytes, lines 7563-10514
7563        weekdays : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
7564        weekdaysShort : 'یک\u200cشنبه_دوشنبه_سه\u200cشنبه_چهارشنبه_پنج\u200cشنبه_جمعه_شنبه'.split('_'),
7565        weekdaysMin : 'ی_د_س_چ_پ_ج_ش'.split('_'),
7566        weekdaysParseExact : true,
7567        longDateFormat : {
7568            LT : 'HH:mm',
7569            LTS : 'HH:mm:ss',
7570            L : 'DD/MM/YYYY',
7571            LL : 'D MMMM YYYY',
7572            LLL : 'D MMMM YYYY HH:mm',
7573            LLLL : 'dddd, D MMMM YYYY HH:mm'
7574        },
7575        meridiemParse: /قبل از ظهر|بعد از ظهر/,
7576        isPM: function (input) {
7577            return /بعد از ظهر/.test(input);
7578        },
7579        meridiem : function (hour, minute, isLower) {
7580            if (hour < 12) {
7581                return 'قبل از ظهر';
7582            } else {
7583                return 'بعد از ظهر';
7584            }
7585        },
7586        calendar : {
7587            sameDay : '[امروز ساعت] LT',
7588            nextDay : '[فردا ساعت] LT',
7589            nextWeek : 'dddd [ساعت] LT',
7590            lastDay : '[دیروز ساعت] LT',
7591            lastWeek : 'dddd [پیش] [ساعت] LT',
7592            sameElse : 'L'
7593        },
7594        relativeTime : {
7595            future : 'در %s',
7596            past : '%s پیش',
7597            s : 'چند ثانیه',
7598            ss : 'ثانیه d%',
7599            m : 'یک دقیقه',
7600            mm : '%d دقیقه',
7601            h : 'یک ساعت',
7602            hh : '%d ساعت',
7603            d : 'یک روز',
7604            dd : '%d روز',
7605            M : 'یک ماه',
7606            MM : '%d ماه',
7607            y : 'یک سال',
7608            yy : '%d سال'
7609        },
7610        preparse: function (string) {
7611            return string.replace(/[Û°-Û¹]/g, function (match) {
7612                return numberMap$4[match];
7613            }).replace(/،/g, ',');
7614        },
7615        postformat: function (string) {
7616            return string.replace(/\d/g, function (match) {
7617                return symbolMap$5[match];
7618            }).replace(/,/g, '،');
7619        },
7620        dayOfMonthOrdinalParse: /\d{1,2}م/,
7621        ordinal : '%dم',
7622        week : {
7623            dow : 6, // Saturday is the first day of the week.
7624            doy : 12 // The week that contains Jan 12th is the first week of the year.
7625        }
7626    });
7627
7628    //! moment.js locale configuration
7629
7630    var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
7631        numbersFuture = [
7632            'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
7633            numbersPast[7], numbersPast[8], numbersPast[9]
7634        ];
7635    function translate$2(number, withoutSuffix, key, isFuture) {
7636        var result = '';
7637        switch (key) {
7638            case 's':
7639                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
7640            case 'ss':
7641                return isFuture ? 'sekunnin' : 'sekuntia';
7642            case 'm':
7643                return isFuture ? 'minuutin' : 'minuutti';
7644            case 'mm':
7645                result = isFuture ? 'minuutin' : 'minuuttia';
7646                break;
7647            case 'h':
7648                return isFuture ? 'tunnin' : 'tunti';
7649            case 'hh':
7650                result = isFuture ? 'tunnin' : 'tuntia';
7651                break;
7652            case 'd':
7653                return isFuture ? 'päivän' : 'päivä';
7654            case 'dd':
7655                result = isFuture ? 'päivän' : 'päivää';
7656                break;
7657            case 'M':
7658                return isFuture ? 'kuukauden' : 'kuukausi';
7659            case 'MM':
7660                result = isFuture ? 'kuukauden' : 'kuukautta';
7661                break;
7662            case 'y':
7663                return isFuture ? 'vuoden' : 'vuosi';
7664            case 'yy':
7665                result = isFuture ? 'vuoden' : 'vuotta';
7666                break;
7667        }
7668        result = verbalNumber(number, isFuture) + ' ' + result;
7669        return result;
7670    }
7671    function verbalNumber(number, isFuture) {
7672        return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
7673    }
7674
7675    hooks.defineLocale('fi', {
7676        months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
7677        monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
7678        weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
7679        weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
7680        weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
7681        longDateFormat : {
7682            LT : 'HH.mm',
7683            LTS : 'HH.mm.ss',
7684            L : 'DD.MM.YYYY',
7685            LL : 'Do MMMM[ta] YYYY',
7686            LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
7687            LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
7688            l : 'D.M.YYYY',
7689            ll : 'Do MMM YYYY',
7690            lll : 'Do MMM YYYY, [klo] HH.mm',
7691            llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
7692        },
7693        calendar : {
7694            sameDay : '[tänään] [klo] LT',
7695            nextDay : '[huomenna] [klo] LT',
7696            nextWeek : 'dddd [klo] LT',
7697            lastDay : '[eilen] [klo] LT',
7698            lastWeek : '[viime] dddd[na] [klo] LT',
7699            sameElse : 'L'
7700        },
7701        relativeTime : {
7702            future : '%s päästä',
7703            past : '%s sitten',
7704            s : translate$2,
7705            ss : translate$2,
7706            m : translate$2,
7707            mm : translate$2,
7708            h : translate$2,
7709            hh : translate$2,
7710            d : translate$2,
7711            dd : translate$2,
7712            M : translate$2,
7713            MM : translate$2,
7714            y : translate$2,
7715            yy : translate$2
7716        },
7717        dayOfMonthOrdinalParse: /\d{1,2}\./,
7718        ordinal : '%d.',
7719        week : {
7720            dow : 1, // Monday is the first day of the week.
7721            doy : 4  // The week that contains Jan 4th is the first week of the year.
7722        }
7723    });
7724
7725    //! moment.js locale configuration
7726
7727    hooks.defineLocale('fo', {
7728        months : 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
7729        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
7730        weekdays : 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split('_'),
7731        weekdaysShort : 'sun_mán_týs_mik_hós_frí_ley'.split('_'),
7732        weekdaysMin : 'su_má_tý_mi_hó_fr_le'.split('_'),
7733        longDateFormat : {
7734            LT : 'HH:mm',
7735            LTS : 'HH:mm:ss',
7736            L : 'DD/MM/YYYY',
7737            LL : 'D MMMM YYYY',
7738            LLL : 'D MMMM YYYY HH:mm',
7739            LLLL : 'dddd D. MMMM, YYYY HH:mm'
7740        },
7741        calendar : {
7742            sameDay : '[Í dag kl.] LT',
7743            nextDay : '[Í morgin kl.] LT',
7744            nextWeek : 'dddd [kl.] LT',
7745            lastDay : '[Í gjár kl.] LT',
7746            lastWeek : '[síðstu] dddd [kl] LT',
7747            sameElse : 'L'
7748        },
7749        relativeTime : {
7750            future : 'um %s',
7751            past : '%s síðani',
7752            s : 'fá sekund',
7753            ss : '%d sekundir',
7754            m : 'ein minuttur',
7755            mm : '%d minuttir',
7756            h : 'ein tími',
7757            hh : '%d tímar',
7758            d : 'ein dagur',
7759            dd : '%d dagar',
7760            M : 'ein mánaður',
7761            MM : '%d mánaðir',
7762            y : 'eitt ár',
7763            yy : '%d ár'
7764        },
7765        dayOfMonthOrdinalParse: /\d{1,2}\./,
7766        ordinal : '%d.',
7767        week : {
7768            dow : 1, // Monday is the first day of the week.
7769            doy : 4  // The week that contains Jan 4th is the first week of the year.
7770        }
7771    });
7772
7773    //! moment.js locale configuration
7774
7775    hooks.defineLocale('fr-ca', {
7776        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7777        monthsShort : 'janv_févr_mars_avr_mai_juin_juil_août_sept_oct_nov_déc'.split('_'),
7778        monthsParseExact : true,
7779        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7780        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7781        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),
7782        weekdaysParseExact : true,
7783        longDateFormat : {
7784            LT : 'HH:mm',
7785            LTS : 'HH:mm:ss',
7786            L : 'YYYY-MM-DD',
7787            LL : 'D MMMM YYYY',
7788            LLL : 'D MMMM YYYY HH:mm',
7789            LLLL : 'dddd D MMMM YYYY HH:mm'
7790        },
7791        calendar : {
7792            sameDay : '[Aujourd’hui à] LT',
7793            nextDay : '[Demain à] LT',
7794            nextWeek : 'dddd [à] LT',
7795            lastDay : '[Hier à] LT',
7796            lastWeek : 'dddd [dernier à] LT',
7797            sameElse : 'L'
7798        },
7799        relativeTime : {
7800            future : 'dans %s',
7801            past : 'il y a %s',
7802            s : 'quelques secondes',
7803            ss : '%d secondes',
7804            m : 'une minute',
7805            mm : '%d minutes',
7806            h : 'une heure',
7807            hh : '%d heures',
7808            d : 'un jour',
7809            dd : '%d jours',
7810            M : 'un mois',
7811            MM : '%d mois',
7812            y : 'un an',
7813            yy : '%d ans'
7814        },
7815        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
7816        ordinal : function (number, period) {
7817            switch (period) {
7818                // Words with masculine grammatical gender: mois, trimestre, jour
7819                default:
7820                case 'M':
7821                case 'Q':
7822                case 'D':
7823                case 'DDD':
7824                case 'd':
7825                    return number + (number === 1 ? 'er' : 'e');
7826
7827                // Words with feminine grammatical gender: semaine
7828                case 'w':
7829                case 'W':
7830                    return number + (number === 1 ? 're' : 'e');
7831            }
7832        }
7833    });
7834
7835    //! moment.js locale configuration
7836
7837    hooks.defineLocale('fr-ch', {
7838        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7839        monthsShort : 'janv_févr_mars_avr_mai_juin_juil_août_sept_oct_nov_déc'.split('_'),
7840        monthsParseExact : true,
7841        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7842        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7843        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),
7844        weekdaysParseExact : true,
7845        longDateFormat : {
7846            LT : 'HH:mm',
7847            LTS : 'HH:mm:ss',
7848            L : 'DD.MM.YYYY',
7849            LL : 'D MMMM YYYY',
7850            LLL : 'D MMMM YYYY HH:mm',
7851            LLLL : 'dddd D MMMM YYYY HH:mm'
7852        },
7853        calendar : {
7854            sameDay : '[Aujourd’hui à] LT',
7855            nextDay : '[Demain à] LT',
7856            nextWeek : 'dddd [à] LT',
7857            lastDay : '[Hier à] LT',
7858            lastWeek : 'dddd [dernier à] LT',
7859            sameElse : 'L'
7860        },
7861        relativeTime : {
7862            future : 'dans %s',
7863            past : 'il y a %s',
7864            s : 'quelques secondes',
7865            ss : '%d secondes',
7866            m : 'une minute',
7867            mm : '%d minutes',
7868            h : 'une heure',
7869            hh : '%d heures',
7870            d : 'un jour',
7871            dd : '%d jours',
7872            M : 'un mois',
7873            MM : '%d mois',
7874            y : 'un an',
7875            yy : '%d ans'
7876        },
7877        dayOfMonthOrdinalParse: /\d{1,2}(er|e)/,
7878        ordinal : function (number, period) {
7879            switch (period) {
7880                // Words with masculine grammatical gender: mois, trimestre, jour
7881                default:
7882                case 'M':
7883                case 'Q':
7884                case 'D':
7885                case 'DDD':
7886                case 'd':
7887                    return number + (number === 1 ? 'er' : 'e');
7888
7889                // Words with feminine grammatical gender: semaine
7890                case 'w':
7891                case 'W':
7892                    return number + (number === 1 ? 're' : 'e');
7893            }
7894        },
7895        week : {
7896            dow : 1, // Monday is the first day of the week.
7897            doy : 4  // The week that contains Jan 4th is the first week of the year.
7898        }
7899    });
7900
7901    //! moment.js locale configuration
7902
7903    hooks.defineLocale('fr', {
7904        months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
7905        monthsShort : 'janv_févr_mars_avr_mai_juin_juil_août_sept_oct_nov_déc'.split('_'),
7906        monthsParseExact : true,
7907        weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
7908        weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
7909        weekdaysMin : 'di_lu_ma_me_je_ve_sa'.split('_'),
7910        weekdaysParseExact : true,
7911        longDateFormat : {
7912            LT : 'HH:mm',
7913            LTS : 'HH:mm:ss',
7914            L : 'DD/MM/YYYY',
7915            LL : 'D MMMM YYYY',
7916            LLL : 'D MMMM YYYY HH:mm',
7917            LLLL : 'dddd D MMMM YYYY HH:mm'
7918        },
7919        calendar : {
7920            sameDay : '[Aujourd’hui à] LT',
7921            nextDay : '[Demain à] LT',
7922            nextWeek : 'dddd [à] LT',
7923            lastDay : '[Hier à] LT',
7924            lastWeek : 'dddd [dernier à] LT',
7925            sameElse : 'L'
7926        },
7927        relativeTime : {
7928            future : 'dans %s',
7929            past : 'il y a %s',
7930            s : 'quelques secondes',
7931            ss : '%d secondes',
7932            m : 'une minute',
7933            mm : '%d minutes',
7934            h : 'une heure',
7935            hh : '%d heures',
7936            d : 'un jour',
7937            dd : '%d jours',
7938            M : 'un mois',
7939            MM : '%d mois',
7940            y : 'un an',
7941            yy : '%d ans'
7942        },
7943        dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
7944        ordinal : function (number, period) {
7945            switch (period) {
7946                // TODO: Return 'e' when day of month > 1. Move this case inside
7947                // block for masculine words below.
7948                // See https://github.com/moment/moment/issues/3375
7949                case 'D':
7950                    return number + (number === 1 ? 'er' : '');
7951
7952                // Words with masculine grammatical gender: mois, trimestre, jour
7953                default:
7954                case 'M':
7955                case 'Q':
7956                case 'DDD':
7957                case 'd':
7958                    return number + (number === 1 ? 'er' : 'e');
7959
7960                // Words with feminine grammatical gender: semaine
7961                case 'w':
7962                case 'W':
7963                    return number + (number === 1 ? 're' : 'e');
7964            }
7965        },
7966        week : {
7967            dow : 1, // Monday is the first day of the week.
7968            doy : 4  // The week that contains Jan 4th is the first week of the year.
7969        }
7970    });
7971
7972    //! moment.js locale configuration
7973
7974    //var monthsShortWithDots = 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),
7975        //monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
7976		
7977	var monthsShortWithDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
7978        monthsShortWithoutDots = 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');
7979
7980    hooks.defineLocale('fy', {
7981        months : 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split('_'),
7982        monthsShort : function (m, format) {
7983            if (!m) {
7984                return monthsShortWithDots;
7985            } else if (/-MMM-/.test(format)) {
7986                return monthsShortWithoutDots[m.month()];
7987            } else {
7988                return monthsShortWithDots[m.month()];
7989            }
7990        },
7991        monthsParseExact : true,
7992        weekdays : 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split('_'),
7993        weekdaysShort : 'si._mo._ti._wo._to._fr._so.'.split('_'),
7994        weekdaysMin : 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),
7995        weekdaysParseExact : true,
7996        longDateFormat : {
7997            LT : 'HH:mm',
7998            LTS : 'HH:mm:ss',
7999            L : 'DD-MM-YYYY',
8000            LL : 'D MMMM YYYY',
8001            LLL : 'D MMMM YYYY HH:mm',
8002            LLLL : 'dddd D MMMM YYYY HH:mm'
8003        },
8004        calendar : {
8005            sameDay: '[hjoed om] LT',
8006            nextDay: '[moarn om] LT',
8007            nextWeek: 'dddd [om] LT',
8008            lastDay: '[juster om] LT',
8009            lastWeek: '[ôfrûne] dddd [om] LT',
8010            sameElse: 'L'
8011        },
8012        relativeTime : {
8013            future : 'oer %s',
8014            past : '%s lyn',
8015            s : 'in pear sekonden',
8016            ss : '%d sekonden',
8017            m : 'ien minút',
8018            mm : '%d minuten',
8019            h : 'ien oere',
8020            hh : '%d oeren',
8021            d : 'ien dei',
8022            dd : '%d dagen',
8023            M : 'ien moanne',
8024            MM : '%d moannen',
8025            y : 'ien jier',
8026            yy : '%d jierren'
8027        },
8028        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
8029        ordinal : function (number) {
8030            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
8031        },
8032        week : {
8033            dow : 1, // Monday is the first day of the week.
8034            doy : 4  // The week that contains Jan 4th is the first week of the year.
8035        }
8036    });
8037
8038    //! moment.js locale configuration
8039
8040
8041    var months$5 = [
8042        'Eanáir', 'Feabhra', 'Márta', 'Aibreán', 'Bealtaine', 'Méitheamh', 'Iúil', 'Lúnasa', 'Meán Fómhair', 'Deaireadh Fómhair', 'Samhain', 'Nollaig'
8043    ];
8044
8045    var monthsShort$4 = ['Eaná', 'Feab', 'Márt', 'Aibr', 'Beal', 'Méit', 'Iúil', 'Lúna', 'Meán', 'Deai', 'Samh', 'Noll'];
8046
8047    var weekdays$1 = ['Dé Domhnaigh', 'Dé Luain', 'Dé Máirt', 'Dé Céadaoin', 'Déardaoin', 'Dé hAoine', 'Dé Satharn'];
8048
8049    var weekdaysShort = ['Dom', 'Lua', 'Mái', 'Céa', 'Déa', 'hAo', 'Sat'];
8050
8051    var weekdaysMin = ['Do', 'Lu', 'Má', 'Ce', 'Dé', 'hA', 'Sa'];
8052
8053    hooks.defineLocale('ga', {
8054        months: months$5,
8055        monthsShort: monthsShort$4,
8056        monthsParseExact: true,
8057        weekdays: weekdays$1,
8058        weekdaysShort: weekdaysShort,
8059        weekdaysMin: weekdaysMin,
8060        longDateFormat: {
8061            LT: 'HH:mm',
8062            LTS: 'HH:mm:ss',
8063            L: 'DD/MM/YYYY',
8064            LL: 'D MMMM YYYY',
8065            LLL: 'D MMMM YYYY HH:mm',
8066            LLLL: 'dddd, D MMMM YYYY HH:mm'
8067        },
8068        calendar: {
8069            sameDay: '[Inniu ag] LT',
8070            nextDay: '[Amárach ag] LT',
8071            nextWeek: 'dddd [ag] LT',
8072            lastDay: '[Inné aig] LT',
8073            lastWeek: 'dddd [seo caite] [ag] LT',
8074            sameElse: 'L'
8075        },
8076        relativeTime: {
8077            future: 'i %s',
8078            past: '%s ó shin',
8079            s: 'cúpla soicind',
8080            ss: '%d soicind',
8081            m: 'nóiméad',
8082            mm: '%d nóiméad',
8083            h: 'uair an chloig',
8084            hh: '%d uair an chloig',
8085            d: 'lá',
8086            dd: '%d lá',
8087            M: 'mí',
8088            MM: '%d mí',
8089            y: 'bliain',
8090            yy: '%d bliain'
8091        },
8092        dayOfMonthOrdinalParse: /\d{1,2}(d|na|mh)/,
8093        ordinal: function (number) {
8094            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
8095            return number + output;
8096        },
8097        week: {
8098            dow: 1, // Monday is the first day of the week.
8099            doy: 4  // The week that contains Jan 4th is the first week of the year.
8100        }
8101    });
8102
8103    //! moment.js locale configuration
8104
8105    var months$6 = [
8106        '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'
8107    ];
8108
8109    var monthsShort$5 = ['Faoi', 'Gear', 'Màrt', 'Gibl', 'Cèit', 'Ògmh', 'Iuch', 'Lùn', 'Sult', 'Dàmh', 'Samh', 'Dùbh'];
8110
8111    var weekdays$2 = ['Didòmhnaich', 'Diluain', 'Dimàirt', 'Diciadain', 'Diardaoin', 'Dihaoine', 'Disathairne'];
8112
8113    var weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'];
8114
8115    var weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];
8116
8117    hooks.defineLocale('gd', {
8118        months : months$6,
8119        monthsShort : monthsShort$5,
8120        monthsParseExact : true,
8121        weekdays : weekdays$2,
8122        weekdaysShort : weekdaysShort$1,
8123        weekdaysMin : weekdaysMin$1,
8124        longDateFormat : {
8125            LT : 'HH:mm',
8126            LTS : 'HH:mm:ss',
8127            L : 'DD/MM/YYYY',
8128            LL : 'D MMMM YYYY',
8129            LLL : 'D MMMM YYYY HH:mm',
8130            LLLL : 'dddd, D MMMM YYYY HH:mm'
8131        },
8132        calendar : {
8133            sameDay : '[An-diugh aig] LT',
8134            nextDay : '[A-màireach aig] LT',
8135            nextWeek : 'dddd [aig] LT',
8136            lastDay : '[An-dè aig] LT',
8137            lastWeek : 'dddd [seo chaidh] [aig] LT',
8138            sameElse : 'L'
8139        },
8140        relativeTime : {
8141            future : 'ann an %s',
8142            past : 'bho chionn %s',
8143            s : 'beagan diogan',
8144            ss : '%d diogan',
8145            m : 'mionaid',
8146            mm : '%d mionaidean',
8147            h : 'uair',
8148            hh : '%d uairean',
8149            d : 'latha',
8150            dd : '%d latha',
8151            M : 'mìos',
8152            MM : '%d mìosan',
8153            y : 'bliadhna',
8154            yy : '%d bliadhna'
8155        },
8156        dayOfMonthOrdinalParse : /\d{1,2}(d|na|mh)/,
8157        ordinal : function (number) {
8158            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';
8159            return number + output;
8160        },
8161        week : {
8162            dow : 1, // Monday is the first day of the week.
8163            doy : 4  // The week that contains Jan 4th is the first week of the year.
8164        }
8165    });
8166
8167    //! moment.js locale configuration
8168
8169    hooks.defineLocale('gl', {
8170        months : 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split('_'),
8171        //monthsShort : 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split('_'),
8172		monthsShort : 'xan_feb_mar_abr_mai_xuñ_xul_ago_set_out_nov_dec'.split('_'),
8173        monthsParseExact: true,
8174        weekdays : 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),
8175        weekdaysShort : 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),
8176        weekdaysMin : 'do_lu_ma_mé_xo_ve_sá'.split('_'),
8177        weekdaysParseExact : true,
8178        longDateFormat : {
8179            LT : 'H:mm',
8180            LTS : 'H:mm:ss',
8181            L : 'DD/MM/YYYY',
8182            LL : 'D [de] MMMM [de] YYYY',
8183            LLL : 'D [de] MMMM [de] YYYY H:mm',
8184            LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
8185        },
8186        calendar : {
8187            sameDay : function () {
8188                return '[hoxe ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
8189            },
8190            nextDay : function () {
8191                return '[mañá ' + ((this.hours() !== 1) ? 'ás' : 'á') + '] LT';
8192            },
8193            nextWeek : function () {
8194                return 'dddd [' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
8195            },
8196            lastDay : function () {
8197                return '[onte ' + ((this.hours() !== 1) ? 'á' : 'a') + '] LT';
8198            },
8199            lastWeek : function () {
8200                return '[o] dddd [pasado ' + ((this.hours() !== 1) ? 'ás' : 'a') + '] LT';
8201            },
8202            sameElse : 'L'
8203        },
8204        relativeTime : {
8205            future : function (str) {
8206                if (str.indexOf('un') === 0) {
8207                    return 'n' + str;
8208                }
8209                return 'en ' + str;
8210            },
8211            past : 'hai %s',
8212            s : 'uns segundos',
8213            ss : '%d segundos',
8214            m : 'un minuto',
8215            mm : '%d minutos',
8216            h : 'unha hora',
8217            hh : '%d horas',
8218            d : 'un día',
8219            dd : '%d días',
8220            M : 'un mes',
8221            MM : '%d meses',
8222            y : 'un ano',
8223            yy : '%d anos'
8224        },
8225        dayOfMonthOrdinalParse : /\d{1,2}º/,
8226        ordinal : '%dº',
8227        week : {
8228            dow : 1, // Monday is the first day of the week.
8229            doy : 4  // The week that contains Jan 4th is the first week of the year.
8230        }
8231    });
8232
8233    //! moment.js locale configuration
8234
8235    function processRelativeTime$4(number, withoutSuffix, key, isFuture) {
8236        var format = {
8237            's': ['thodde secondanim', 'thodde second'],
8238            'ss': [number + ' secondanim', number + ' second'],
8239            'm': ['eka mintan', 'ek minute'],
8240            'mm': [number + ' mintanim', number + ' mintam'],
8241            'h': ['eka voran', 'ek vor'],
8242            'hh': [number + ' voranim', number + ' voram'],
8243            'd': ['eka disan', 'ek dis'],
8244            'dd': [number + ' disanim', number + ' dis'],
8245            'M': ['eka mhoinean', 'ek mhoino'],
8246            'MM': [number + ' mhoineanim', number + ' mhoine'],
8247            'y': ['eka vorsan', 'ek voros'],
8248            'yy': [number + ' vorsanim', number + ' vorsam']
8249        };
8250        return withoutSuffix ? format[key][0] : format[key][1];
8251    }
8252
8253    hooks.defineLocale('gom-latn', {
8254        months : 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split('_'),
8255        //monthsShort : 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),
8256		monthsShort : 'Jan_Feb_Mars_Abr_Mai_Jun_Jul_Ago_Set_Otu_Nov_Dez'.split('_'),
8257        monthsParseExact : true,
8258        weekdays : 'Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son\'var'.split('_'),
8259        weekdaysShort : 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),
8260        weekdaysMin : 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),
8261        weekdaysParseExact : true,
8262        longDateFormat : {
8263            LT : 'A h:mm [vazta]',
8264            LTS : 'A h:mm:ss [vazta]',
8265            L : 'DD-MM-YYYY',
8266            LL : 'D MMMM YYYY',
8267            LLL : 'D MMMM YYYY A h:mm [vazta]',
8268            LLLL : 'dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]',
8269            llll: 'ddd, D MMM YYYY, A h:mm [vazta]'
8270        },
8271        calendar : {
8272            sameDay: '[Aiz] LT',
8273            nextDay: '[Faleam] LT',
8274            nextWeek: '[Ieta to] dddd[,] LT',
8275            lastDay: '[Kal] LT',
8276            lastWeek: '[Fatlo] dddd[,] LT',
8277            sameElse: 'L'
8278        },
8279        relativeTime : {
8280            future : '%s',
8281            past : '%s adim',
8282            s : processRelativeTime$4,
8283            ss : processRelativeTime$4,
8284            m : processRelativeTime$4,
8285            mm : processRelativeTime$4,
8286            h : processRelativeTime$4,
8287            hh : processRelativeTime$4,
8288            d : processRelativeTime$4,
8289            dd : processRelativeTime$4,
8290            M : processRelativeTime$4,
8291            MM : processRelativeTime$4,
8292            y : processRelativeTime$4,
8293            yy : processRelativeTime$4
8294        },
8295        dayOfMonthOrdinalParse : /\d{1,2}(er)/,
8296        ordinal : function (number, period) {
8297            switch (period) {
8298                // the ordinal 'er' only applies to day of the month
8299                case 'D':
8300                    return number + 'er';
8301                default:
8302                case 'M':
8303                case 'Q':
8304                case 'DDD':
8305                case 'd':
8306                case 'w':
8307                case 'W':
8308                    return number;
8309            }
8310        },
8311        week : {
8312            dow : 1, // Monday is the first day of the week.
8313            doy : 4  // The week that contains Jan 4th is the first week of the year.
8314        },
8315        meridiemParse: /rati|sokalli|donparam|sanje/,
8316        meridiemHour : function (hour, meridiem) {
8317            if (hour === 12) {
8318                hour = 0;
8319            }
8320            if (meridiem === 'rati') {
8321                return hour < 4 ? hour : hour + 12;
8322            } else if (meridiem === 'sokalli') {
8323                return hour;
8324            } else if (meridiem === 'donparam') {
8325                return hour > 12 ? hour : hour + 12;
8326            } else if (meridiem === 'sanje') {
8327                return hour + 12;
8328            }
8329        },
8330        meridiem : function (hour, minute, isLower) {
8331            if (hour < 4) {
8332                return 'rati';
8333            } else if (hour < 12) {
8334                return 'sokalli';
8335            } else if (hour < 16) {
8336                return 'donparam';
8337            } else if (hour < 20) {
8338                return 'sanje';
8339            } else {
8340                return 'rati';
8341            }
8342        }
8343    });
8344
8345    //! moment.js locale configuration
8346
8347    var symbolMap$6 = {
8348            '1': 'à«§',
8349            '2': '૨',
8350            '3': 'à«©',
8351            '4': '૪',
8352            '5': 'à««',
8353            '6': '૬',
8354            '7': 'à«­',
8355            '8': 'à«®',
8356            '9': '૯',
8357            '0': '૦'
8358        },
8359        numberMap$5 = {
8360            'à«§': '1',
8361            '૨': '2',
8362            'à«©': '3',
8363            '૪': '4',
8364            'à««': '5',
8365            '૬': '6',
8366            'à«­': '7',
8367            'à«®': '8',
8368            '૯': '9',
8369            '૦': '0'
8370        };
8371
8372    hooks.defineLocale('gu', {
8373        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split('_'),
8374        monthsShort: 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split('_'),
8375        monthsParseExact: true,
8376        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split('_'),
8377        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),
8378        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),
8379        longDateFormat: {
8380            LT: 'A h:mm વાગ્યે',
8381            LTS: 'A h:mm:ss વાગ્યે',
8382            L: 'DD/MM/YYYY',
8383            LL: 'D MMMM YYYY',
8384            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',
8385            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે'
8386        },
8387        calendar: {
8388            sameDay: '[આજ] LT',
8389            nextDay: '[કાલે] LT',
8390            nextWeek: 'dddd, LT',
8391            lastDay: '[ગઇકાલે] LT',
8392            lastWeek: '[પાછલા] dddd, LT',
8393            sameElse: 'L'
8394        },
8395        relativeTime: {
8396            future: '%s મા',
8397            past: '%s પેહલા',
8398            s: 'અમુક પળો',
8399            ss: '%d સેકંડ',
8400            m: 'એક મિનિટ',
8401            mm: '%d મિનિટ',
8402            h: 'એક કલાક',
8403            hh: '%d કલાક',
8404            d: 'એક દિવસ',
8405            dd: '%d દિવસ',
8406            M: 'એક મહિનો',
8407            MM: '%d મહિનો',
8408            y: 'એક વર્ષ',
8409            yy: '%d વર્ષ'
8410        },
8411        preparse: function (string) {
8412            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {
8413                return numberMap$5[match];
8414            });
8415        },
8416        postformat: function (string) {
8417            return string.replace(/\d/g, function (match) {
8418                return symbolMap$6[match];
8419            });
8420        },
8421        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists
8422        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.
8423        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,
8424        meridiemHour: function (hour, meridiem) {
8425            if (hour === 12) {
8426                hour = 0;
8427            }
8428            if (meridiem === 'રાત') {
8429                return hour < 4 ? hour : hour + 12;
8430            } else if (meridiem === 'સવાર') {
8431                return hour;
8432            } else if (meridiem === 'બપોર') {
8433                return hour >= 10 ? hour : hour + 12;
8434            } else if (meridiem === 'સાંજ') {
8435                return hour + 12;
8436            }
8437        },
8438        meridiem: function (hour, minute, isLower) {
8439            if (hour < 4) {
8440                return 'રાત';
8441            } else if (hour < 10) {
8442                return 'સવાર';
8443            } else if (hour < 17) {
8444                return 'બપોર';
8445            } else if (hour < 20) {
8446                return 'સાંજ';
8447            } else {
8448                return 'રાત';
8449            }
8450        },
8451        week: {
8452            dow: 0, // Sunday is the first day of the week.
8453            doy: 6 // The week that contains Jan 6th is the first week of the year.
8454        }
8455    });
8456
8457    //! moment.js locale configuration
8458
8459    hooks.defineLocale('he', {
8460        months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
8461        monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
8462        weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
8463        weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
8464        weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
8465        longDateFormat : {
8466            LT : 'HH:mm',
8467            LTS : 'HH:mm:ss',
8468            L : 'DD/MM/YYYY',
8469            LL : 'D [ב]MMMM YYYY',
8470            LLL : 'D [ב]MMMM YYYY HH:mm',
8471            LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',
8472            l : 'D/M/YYYY',
8473            ll : 'D MMM YYYY',
8474            lll : 'D MMM YYYY HH:mm',
8475            llll : 'ddd, D MMM YYYY HH:mm'
8476        },
8477        calendar : {
8478            sameDay : '[היום ב־]LT',
8479            nextDay : '[מחר ב־]LT',
8480            nextWeek : 'dddd [בשעה] LT',
8481            lastDay : '[אתמול ב־]LT',
8482            lastWeek : '[ביום] dddd [האחרון בשעה] LT',
8483            sameElse : 'L'
8484        },
8485        relativeTime : {
8486            future : 'בעוד %s',
8487            past : 'לפני %s',
8488            s : 'מספר שניות',
8489            ss : '%d שניות',
8490            m : 'דקה',
8491            mm : '%d דקות',
8492            h : 'שעה',
8493            hh : function (number) {
8494                if (number === 2) {
8495                    return 'שעתיים';
8496                }
8497                return number + ' שעות';
8498            },
8499            d : 'יום',
8500            dd : function (number) {
8501                if (number === 2) {
8502                    return 'יומיים';
8503                }
8504                return number + ' ימים';
8505            },
8506            M : 'חודש',
8507            MM : function (number) {
8508                if (number === 2) {
8509                    return 'חודשיים';
8510                }
8511                return number + ' חודשים';
8512            },
8513            y : 'שנה',
8514            yy : function (number) {
8515                if (number === 2) {
8516                    return 'שנתיים';
8517                } else if (number % 10 === 0 && number !== 10) {
8518                    return number + ' שנה';
8519                }
8520                return number + ' שנים';
8521            }
8522        },
8523        meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
8524        isPM : function (input) {
8525            return((/^(אחה"צ|אחרי הצהריים|בערב)$/).test(input));
8526        },
8527        meridiem : function (hour, minute, isLower) {
8528            if (hour < 5) {
8529                return 'לפנות בוקר';
8530            } else if (hour < 10) {
8531                return 'בבוקר';
8532            } else if (hour < 12) {
8533                return isLower ? 'לפנה"צ' : 'לפני הצהריים';
8534            } else if (hour < 18) {
8535                return isLower ? 'אחה"צ' : 'אחרי הצהריים';
8536            } else {
8537                return 'בערב';
8538            }
8539        }
8540    });
8541
8542    //! moment.js locale configuration
8543
8544    var symbolMap$7 = {
8545        '1': '१',
8546        '2': '२',
8547        '3': '३',
8548        '4': '४',
8549        '5': '५',
8550        '6': '६',
8551        '7': '७',
8552        '8': '८',
8553        '9': '९',
8554        '0': '०'
8555    },
8556    numberMap$6 = {
8557        '१': '1',
8558        '२': '2',
8559        '३': '3',
8560        '४': '4',
8561        '५': '5',
8562        '६': '6',
8563        '७': '7',
8564        '८': '8',
8565        '९': '9',
8566        '०': '0'
8567    };
8568
8569    hooks.defineLocale('hi', {
8570        months : 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split('_'),
8571        monthsShort : 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),
8572        monthsParseExact: true,
8573        weekdays : 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
8574        weekdaysShort : 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),
8575        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
8576        longDateFormat : {
8577            LT : 'A h:mm बजे',
8578            LTS : 'A h:mm:ss बजे',
8579            L : 'DD/MM/YYYY',
8580            LL : 'D MMMM YYYY',
8581            LLL : 'D MMMM YYYY, A h:mm बजे',
8582            LLLL : 'dddd, D MMMM YYYY, A h:mm बजे'
8583        },
8584        calendar : {
8585            sameDay : '[आज] LT',
8586            nextDay : '[कल] LT',
8587            nextWeek : 'dddd, LT',
8588            lastDay : '[कल] LT',
8589            lastWeek : '[पिछले] dddd, LT',
8590            sameElse : 'L'
8591        },
8592        relativeTime : {
8593            future : '%s में',
8594            past : '%s पहले',
8595            s : 'कुछ ही क्षण',
8596            ss : '%d सेकंड',
8597            m : 'एक मिनट',
8598            mm : '%d मिनट',
8599            h : 'एक घंटा',
8600            hh : '%d घंटे',
8601            d : 'एक दिन',
8602            dd : '%d दिन',
8603            M : 'एक महीने',
8604            MM : '%d महीने',
8605            y : 'एक वर्ष',
8606            yy : '%d वर्ष'
8607        },
8608        preparse: function (string) {
8609            return string.replace(/[१२३४५६७८९०]/g, function (match) {
8610                return numberMap$6[match];
8611            });
8612        },
8613        postformat: function (string) {
8614            return string.replace(/\d/g, function (match) {
8615                return symbolMap$7[match];
8616            });
8617        },
8618        // Hindi notation for meridiems are quite fuzzy in practice. While there exists
8619        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.
8620        meridiemParse: /रात|सुबह|दोपहर|शाम/,
8621        meridiemHour : function (hour, meridiem) {
8622            if (hour === 12) {
8623                hour = 0;
8624            }
8625            if (meridiem === 'रात') {
8626                return hour < 4 ? hour : hour + 12;
8627            } else if (meridiem === 'सुबह') {
8628                return hour;
8629            } else if (meridiem === 'दोपहर') {
8630                return hour >= 10 ? hour : hour + 12;
8631            } else if (meridiem === 'शाम') {
8632                return hour + 12;
8633            }
8634        },
8635        meridiem : function (hour, minute, isLower) {
8636            if (hour < 4) {
8637                return 'रात';
8638            } else if (hour < 10) {
8639                return 'सुबह';
8640            } else if (hour < 17) {
8641                return 'दोपहर';
8642            } else if (hour < 20) {
8643                return 'शाम';
8644            } else {
8645                return 'रात';
8646            }
8647        },
8648        week : {
8649            dow : 0, // Sunday is the first day of the week.
8650            doy : 6  // The week that contains Jan 6th is the first week of the year.
8651        }
8652    });
8653
8654    //! moment.js locale configuration
8655
8656    function translate$3(number, withoutSuffix, key) {
8657        var result = number + ' ';
8658        switch (key) {
8659            case 'ss':
8660                if (number === 1) {
8661                    result += 'sekunda';
8662                } else if (number === 2 || number === 3 || number === 4) {
8663                    result += 'sekunde';
8664                } else {
8665                    result += 'sekundi';
8666                }
8667                return result;
8668            case 'm':
8669                return withoutSuffix ? 'jedna minuta' : 'jedne minute';
8670            case 'mm':
8671                if (number === 1) {
8672                    result += 'minuta';
8673                } else if (number === 2 || number === 3 || number === 4) {
8674                    result += 'minute';
8675                } else {
8676                    result += 'minuta';
8677                }
8678                return result;
8679            case 'h':
8680                return withoutSuffix ? 'jedan sat' : 'jednog sata';
8681            case 'hh':
8682                if (number === 1) {
8683                    result += 'sat';
8684                } else if (number === 2 || number === 3 || number === 4) {
8685                    result += 'sata';
8686                } else {
8687                    result += 'sati';
8688                }
8689                return result;
8690            case 'dd':
8691                if (number === 1) {
8692                    result += 'dan';
8693                } else {
8694                    result += 'dana';
8695                }
8696                return result;
8697            case 'MM':
8698                if (number === 1) {
8699                    result += 'mjesec';
8700                } else if (number === 2 || number === 3 || number === 4) {
8701                    result += 'mjeseca';
8702                } else {
8703                    result += 'mjeseci';
8704                }
8705                return result;
8706            case 'yy':
8707                if (number === 1) {
8708                    result += 'godina';
8709                } else if (number === 2 || number === 3 || number === 4) {
8710                    result += 'godine';
8711                } else {
8712                    result += 'godina';
8713                }
8714                return result;
8715        }
8716    }
8717
8718    hooks.defineLocale('hr', {
8719        months : {
8720            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split('_'),
8721            standalone: 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split('_')
8722        },
8723        monthsShort : 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split('_'),
8724        monthsParseExact: true,
8725        weekdays : 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
8726        weekdaysShort : 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
8727        weekdaysMin : 'ne_po_ut_sr_če_pe_su'.split('_'),
8728        weekdaysParseExact : true,
8729        longDateFormat : {
8730            LT : 'H:mm',
8731            LTS : 'H:mm:ss',
8732            L : 'DD.MM.YYYY',
8733            LL : 'D. MMMM YYYY',
8734            LLL : 'D. MMMM YYYY H:mm',
8735            LLLL : 'dddd, D. MMMM YYYY H:mm'
8736        },
8737        calendar : {
8738            sameDay  : '[danas u] LT',
8739            nextDay  : '[sutra u] LT',
8740            nextWeek : function () {
8741                switch (this.day()) {
8742                    case 0:
8743                        return '[u] [nedjelju] [u] LT';
8744                    case 3:
8745                        return '[u] [srijedu] [u] LT';
8746                    case 6:
8747                        return '[u] [subotu] [u] LT';
8748                    case 1:
8749                    case 2:
8750                    case 4:
8751                    case 5:
8752                        return '[u] dddd [u] LT';
8753                }
8754            },
8755            lastDay  : '[jučer u] LT',
8756            lastWeek : function () {
8757                switch (this.day()) {
8758                    case 0:
8759                    case 3:
8760                        return '[prošlu] dddd [u] LT';
8761                    case 6:
8762                        return '[prošle] [subote] [u] LT';
8763                    case 1:
8764                    case 2:
8765                    case 4:
8766                    case 5:
8767                        return '[prošli] dddd [u] LT';
8768                }
8769            },
8770            sameElse : 'L'
8771        },
8772        relativeTime : {
8773            future : 'za %s',
8774            past   : 'prije %s',
8775            s      : 'par sekundi',
8776            ss     : translate$3,
8777            m      : translate$3,
8778            mm     : translate$3,
8779            h      : translate$3,
8780            hh     : translate$3,
8781            d      : 'dan',
8782            dd     : translate$3,
8783            M      : 'mjesec',
8784            MM     : translate$3,
8785            y      : 'godinu',
8786            yy     : translate$3
8787        },
8788        dayOfMonthOrdinalParse: /\d{1,2}\./,
8789        ordinal : '%d.',
8790        week : {
8791            dow : 1, // Monday is the first day of the week.
8792            doy : 7  // The week that contains Jan 7th is the first week of the year.
8793        }
8794    });
8795
8796    //! moment.js locale configuration
8797
8798    var weekEndings = 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');
8799    function translate$4(number, withoutSuffix, key, isFuture) {
8800        var num = number;
8801        switch (key) {
8802            case 's':
8803                return (isFuture || withoutSuffix) ? 'néhány másodperc' : 'néhány másodperce';
8804            case 'ss':
8805                return num + (isFuture || withoutSuffix) ? ' másodperc' : ' másodperce';
8806            case 'm':
8807                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');
8808            case 'mm':
8809                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');
8810            case 'h':
8811                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');
8812            case 'hh':
8813                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');
8814            case 'd':
8815                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');
8816            case 'dd':
8817                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');
8818            case 'M':
8819                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
8820            case 'MM':
8821                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');
8822            case 'y':
8823                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');
8824            case 'yy':
8825                return num + (isFuture || withoutSuffix ? ' év' : ' éve');
8826        }
8827        return '';
8828    }
8829    function week(isFuture) {
8830        return (isFuture ? '' : '[múlt] ') + '[' + weekEndings[this.day()] + '] LT[-kor]';
8831    }
8832
8833    hooks.defineLocale('hu', {
8834        months : 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split('_'),
8835        monthsShort : 'jan_feb_márc_ápr_máj_jún_júl_aug_szept_okt_nov_dec'.split('_'),
8836        weekdays : 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),
8837        weekdaysShort : 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),
8838        weekdaysMin : 'v_h_k_sze_cs_p_szo'.split('_'),
8839        longDateFormat : {
8840            LT : 'H:mm',
8841            LTS : 'H:mm:ss',
8842            L : 'YYYY.MM.DD.',
8843            LL : 'YYYY. MMMM D.',
8844            LLL : 'YYYY. MMMM D. H:mm',
8845            LLLL : 'YYYY. MMMM D., dddd H:mm'
8846        },
8847        meridiemParse: /de|du/i,
8848        isPM: function (input) {
8849            return input.charAt(1).toLowerCase() === 'u';
8850        },
8851        meridiem : function (hours, minutes, isLower) {
8852            if (hours < 12) {
8853                return isLower === true ? 'de' : 'DE';
8854            } else {
8855                return isLower === true ? 'du' : 'DU';
8856            }
8857        },
8858        calendar : {
8859            sameDay : '[ma] LT[-kor]',
8860            nextDay : '[holnap] LT[-kor]',
8861            nextWeek : function () {
8862                return week.call(this, true);
8863            },
8864            lastDay : '[tegnap] LT[-kor]',
8865            lastWeek : function () {
8866                return week.call(this, false);
8867            },
8868            sameElse : 'L'
8869        },
8870        relativeTime : {
8871            future : '%s múlva',
8872            past : '%s',
8873            s : translate$4,
8874            ss : translate$4,
8875            m : translate$4,
8876            mm : translate$4,
8877            h : translate$4,
8878            hh : translate$4,
8879            d : translate$4,
8880            dd : translate$4,
8881            M : translate$4,
8882            MM : translate$4,
8883            y : translate$4,
8884            yy : translate$4
8885        },
8886        dayOfMonthOrdinalParse: /\d{1,2}\./,
8887        ordinal : '%d.',
8888        week : {
8889            dow : 1, // Monday is the first day of the week.
8890            doy : 4  // The week that contains Jan 4th is the first week of the year.
8891        }
8892    });
8893
8894    //! moment.js locale configuration
8895
8896    hooks.defineLocale('hy-am', {
8897        months : {
8898            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split('_'),
8899            standalone: 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split('_')
8900        },
8901        monthsShort : 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),
8902        weekdays : 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split('_'),
8903        weekdaysShort : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
8904        weekdaysMin : 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),
8905        longDateFormat : {
8906            LT : 'HH:mm',
8907            LTS : 'HH:mm:ss',
8908            L : 'DD.MM.YYYY',
8909            LL : 'D MMMM YYYY Õ©.',
8910            LLL : 'D MMMM YYYY Õ©., HH:mm',
8911            LLLL : 'dddd, D MMMM YYYY Õ©., HH:mm'
8912        },
8913        calendar : {
8914            sameDay: '[այսօր] LT',
8915            nextDay: '[Õ¾Õ¡Õ²Õ¨] LT',
8916            lastDay: '[երեկ] LT',
8917            nextWeek: function () {
8918                return 'dddd [օրը ժամը] LT';
8919            },
8920            lastWeek: function () {
8921                return '[անցած] dddd [օրը ժամը] LT';
8922            },
8923            sameElse: 'L'
8924        },
8925        relativeTime : {
8926            future : '%s Õ°Õ¥Õ¿Õ¸',
8927            past : '%s Õ¡Õ¼Õ¡Õ»',
8928            s : 'մի քանի վայրկյան',
8929            ss : '%d վայրկյան',
8930            m : 'րոպե',
8931            mm : '%d րոպե',
8932            h : 'ÕªÕ¡Õ´',
8933            hh : '%d ÕªÕ¡Õ´',
8934            d : 'օր',
8935            dd : '%d օր',
8936            M : 'Õ¡Õ´Õ«Õ½',
8937            MM : '%d Õ¡Õ´Õ«Õ½',
8938            y : 'տարի',
8939            yy : '%d տարի'
8940        },
8941        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,
8942        isPM: function (input) {
8943            return /^(ցերեկվա|երեկոյան)$/.test(input);
8944        },
8945        meridiem : function (hour) {
8946            if (hour < 4) {
8947                return 'գիշերվա';
8948            } else if (hour < 12) {
8949                return 'Õ¡Õ¼Õ¡Õ¾Õ¸Õ¿Õ¾Õ¡';
8950            } else if (hour < 17) {
8951                return 'ցերեկվա';
8952            } else {
8953                return 'երեկոյան';
8954            }
8955        },
8956        dayOfMonthOrdinalParse: /\d{1,2}|\d{1,2}-(ին|րդ)/,
8957        ordinal: function (number, period) {
8958            switch (period) {
8959                case 'DDD':
8960                case 'w':
8961                case 'W':
8962                case 'DDDo':
8963                    if (number === 1) {
8964                        return number + '-Õ«Õ¶';
8965                    }
8966                    return number + '-րդ';
8967                default:
8968                    return number;
8969            }
8970        },
8971        week : {
8972            dow : 1, // Monday is the first day of the week.
8973            doy : 7  // The week that contains Jan 7th is the first week of the year.
8974        }
8975    });
8976
8977    //! moment.js locale configuration
8978
8979    hooks.defineLocale('id', {
8980        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split('_'),
8981        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),
8982        weekdays : 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),
8983        weekdaysShort : 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),
8984        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),
8985        longDateFormat : {
8986            LT : 'HH.mm',
8987            LTS : 'HH.mm.ss',
8988            L : 'DD/MM/YYYY',
8989            LL : 'D MMMM YYYY',
8990            LLL : 'D MMMM YYYY [pukul] HH.mm',
8991            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
8992        },
8993        meridiemParse: /pagi|siang|sore|malam/,
8994        meridiemHour : function (hour, meridiem) {
8995            if (hour === 12) {
8996                hour = 0;
8997            }
8998            if (meridiem === 'pagi') {
8999                return hour;
9000            } else if (meridiem === 'siang') {
9001                return hour >= 11 ? hour : hour + 12;
9002            } else if (meridiem === 'sore' || meridiem === 'malam') {
9003                return hour + 12;
9004            }
9005        },
9006        meridiem : function (hours, minutes, isLower) {
9007            if (hours < 11) {
9008                return 'pagi';
9009            } else if (hours < 15) {
9010                return 'siang';
9011            } else if (hours < 19) {
9012                return 'sore';
9013            } else {
9014                return 'malam';
9015            }
9016        },
9017        calendar : {
9018            sameDay : '[Hari ini pukul] LT',
9019            nextDay : '[Besok pukul] LT',
9020            nextWeek : 'dddd [pukul] LT',
9021            lastDay : '[Kemarin pukul] LT',
9022            lastWeek : 'dddd [lalu pukul] LT',
9023            sameElse : 'L'
9024        },
9025        relativeTime : {
9026            future : 'dalam %s',
9027            past : '%s yang lalu',
9028            s : 'beberapa detik',
9029            ss : '%d detik',
9030            m : 'semenit',
9031            mm : '%d menit',
9032            h : 'sejam',
9033            hh : '%d jam',
9034            d : 'sehari',
9035            dd : '%d hari',
9036            M : 'sebulan',
9037            MM : '%d bulan',
9038            y : 'setahun',
9039            yy : '%d tahun'
9040        },
9041        week : {
9042            dow : 1, // Monday is the first day of the week.
9043            doy : 7  // The week that contains Jan 7th is the first week of the year.
9044        }
9045    });
9046
9047    //! moment.js locale configuration
9048
9049    function plural$2(n) {
9050        if (n % 100 === 11) {
9051            return true;
9052        } else if (n % 10 === 1) {
9053            return false;
9054        }
9055        return true;
9056    }
9057    function translate$5(number, withoutSuffix, key, isFuture) {
9058        var result = number + ' ';
9059        switch (key) {
9060            case 's':
9061                return withoutSuffix || isFuture ? 'nokkrar sekúndur' : 'nokkrum sekúndum';
9062            case 'ss':
9063                if (plural$2(number)) {
9064                    return result + (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum');
9065                }
9066                return result + 'sekúnda';
9067            case 'm':
9068                return withoutSuffix ? 'mínúta' : 'mínútu';
9069            case 'mm':
9070                if (plural$2(number)) {
9071                    return result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum');
9072                } else if (withoutSuffix) {
9073                    return result + 'mínúta';
9074                }
9075                return result + 'mínútu';
9076            case 'hh':
9077                if (plural$2(number)) {
9078                    return result + (withoutSuffix || isFuture ? 'klukkustundir' : 'klukkustundum');
9079                }
9080                return result + 'klukkustund';
9081            case 'd':
9082                if (withoutSuffix) {
9083                    return 'dagur';
9084                }
9085                return isFuture ? 'dag' : 'degi';
9086            case 'dd':
9087                if (plural$2(number)) {
9088                    if (withoutSuffix) {
9089                        return result + 'dagar';
9090                    }
9091                    return result + (isFuture ? 'daga' : 'dögum');
9092                } else if (withoutSuffix) {
9093                    return result + 'dagur';
9094                }
9095                return result + (isFuture ? 'dag' : 'degi');
9096            case 'M':
9097                if (withoutSuffix) {
9098                    return 'mánuður';
9099                }
9100                return isFuture ? 'mánuð' : 'mánuði';
9101            case 'MM':
9102                if (plural$2(number)) {
9103                    if (withoutSuffix) {
9104                        return result + 'mánuðir';
9105                    }
9106                    return result + (isFuture ? 'mánuði' : 'mánuðum');
9107                } else if (withoutSuffix) {
9108                    return result + 'mánuður';
9109                }
9110                return result + (isFuture ? 'mánuð' : 'mánuði');
9111            case 'y':
9112                return withoutSuffix || isFuture ? 'ár' : 'ári';
9113            case 'yy':
9114                if (plural$2(number)) {
9115                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');
9116                }
9117                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');
9118        }
9119    }
9120
9121    hooks.defineLocale('is', {
9122        months : 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split('_'),
9123        monthsShort : 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),
9124        weekdays : 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split('_'),
9125        weekdaysShort : 'sun_mán_þri_mið_fim_fös_lau'.split('_'),
9126        weekdaysMin : 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),
9127        longDateFormat : {
9128            LT : 'H:mm',
9129            LTS : 'H:mm:ss',
9130            L : 'DD.MM.YYYY',
9131            LL : 'D. MMMM YYYY',
9132            LLL : 'D. MMMM YYYY [kl.] H:mm',
9133            LLLL : 'dddd, D. MMMM YYYY [kl.] H:mm'
9134        },
9135        calendar : {
9136            sameDay : '[í dag kl.] LT',
9137            nextDay : '[á morgun kl.] LT',
9138            nextWeek : 'dddd [kl.] LT',
9139            lastDay : '[í gær kl.] LT',
9140            lastWeek : '[síðasta] dddd [kl.] LT',
9141            sameElse : 'L'
9142        },
9143        relativeTime : {
9144            future : 'eftir %s',
9145            past : 'fyrir %s síðan',
9146            s : translate$5,
9147            ss : translate$5,
9148            m : translate$5,
9149            mm : translate$5,
9150            h : 'klukkustund',
9151            hh : translate$5,
9152            d : translate$5,
9153            dd : translate$5,
9154            M : translate$5,
9155            MM : translate$5,
9156            y : translate$5,
9157            yy : translate$5
9158        },
9159        dayOfMonthOrdinalParse: /\d{1,2}\./,
9160        ordinal : '%d.',
9161        week : {
9162            dow : 1, // Monday is the first day of the week.
9163            doy : 4  // The week that contains Jan 4th is the first week of the year.
9164        }
9165    });
9166
9167    //! moment.js locale configuration
9168
9169    hooks.defineLocale('it-ch', {
9170        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
9171        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
9172        weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
9173        weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
9174        weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),
9175        longDateFormat : {
9176            LT : 'HH:mm',
9177            LTS : 'HH:mm:ss',
9178            L : 'DD.MM.YYYY',
9179            LL : 'D MMMM YYYY',
9180            LLL : 'D MMMM YYYY HH:mm',
9181            LLLL : 'dddd D MMMM YYYY HH:mm'
9182        },
9183        calendar : {
9184            sameDay: '[Oggi alle] LT',
9185            nextDay: '[Domani alle] LT',
9186            nextWeek: 'dddd [alle] LT',
9187            lastDay: '[Ieri alle] LT',
9188            lastWeek: function () {
9189                switch (this.day()) {
9190                    case 0:
9191                        return '[la scorsa] dddd [alle] LT';
9192                    default:
9193                        return '[lo scorso] dddd [alle] LT';
9194                }
9195            },
9196            sameElse: 'L'
9197        },
9198        relativeTime : {
9199            future : function (s) {
9200                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
9201            },
9202            past : '%s fa',
9203            s : 'alcuni secondi',
9204            ss : '%d secondi',
9205            m : 'un minuto',
9206            mm : '%d minuti',
9207            h : 'un\'ora',
9208            hh : '%d ore',
9209            d : 'un giorno',
9210            dd : '%d giorni',
9211            M : 'un mese',
9212            MM : '%d mesi',
9213            y : 'un anno',
9214            yy : '%d anni'
9215        },
9216        dayOfMonthOrdinalParse : /\d{1,2}º/,
9217        ordinal: '%dº',
9218        week : {
9219            dow : 1, // Monday is the first day of the week.
9220            doy : 4  // The week that contains Jan 4th is the first week of the year.
9221        }
9222    });
9223
9224    //! moment.js locale configuration
9225
9226    hooks.defineLocale('it', {
9227        months : 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split('_'),
9228        monthsShort : 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),
9229        weekdays : 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split('_'),
9230        weekdaysShort : 'dom_lun_mar_mer_gio_ven_sab'.split('_'),
9231        weekdaysMin : 'do_lu_ma_me_gi_ve_sa'.split('_'),
9232        longDateFormat : {
9233            LT : 'HH:mm',
9234            LTS : 'HH:mm:ss',
9235            L : 'DD/MM/YYYY',
9236            LL : 'D MMMM YYYY',
9237            LLL : 'D MMMM YYYY HH:mm',
9238            LLLL : 'dddd D MMMM YYYY HH:mm'
9239        },
9240        calendar : {
9241            sameDay: '[Oggi alle] LT',
9242            nextDay: '[Domani alle] LT',
9243            nextWeek: 'dddd [alle] LT',
9244            lastDay: '[Ieri alle] LT',
9245            lastWeek: function () {
9246                switch (this.day()) {
9247                    case 0:
9248                        return '[la scorsa] dddd [alle] LT';
9249                    default:
9250                        return '[lo scorso] dddd [alle] LT';
9251                }
9252            },
9253            sameElse: 'L'
9254        },
9255        relativeTime : {
9256            future : function (s) {
9257                return ((/^[0-9].+$/).test(s) ? 'tra' : 'in') + ' ' + s;
9258            },
9259            past : '%s fa',
9260            s : 'alcuni secondi',
9261            ss : '%d secondi',
9262            m : 'un minuto',
9263            mm : '%d minuti',
9264            h : 'un\'ora',
9265            hh : '%d ore',
9266            d : 'un giorno',
9267            dd : '%d giorni',
9268            M : 'un mese',
9269            MM : '%d mesi',
9270            y : 'un anno',
9271            yy : '%d anni'
9272        },
9273        dayOfMonthOrdinalParse : /\d{1,2}º/,
9274        ordinal: '%dº',
9275        week : {
9276            dow : 1, // Monday is the first day of the week.
9277            doy : 4  // The week that contains Jan 4th is the first week of the year.
9278        }
9279    });
9280
9281    //! moment.js locale configuration
9282
9283    hooks.defineLocale('ja', {
9284        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
9285        monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
9286        weekdays : '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),
9287        weekdaysShort : '日_月_火_水_木_金_土'.split('_'),
9288        weekdaysMin : '日_月_火_水_木_金_土'.split('_'),
9289        longDateFormat : {
9290            LT : 'HH:mm',
9291            LTS : 'HH:mm:ss',
9292            L : 'YYYY/MM/DD',
9293            LL : 'YYYY年M月D日',
9294            LLL : 'YYYY年M月D日 HH:mm',
9295            LLLL : 'YYYY年M月D日 dddd HH:mm',
9296            l : 'YYYY/MM/DD',
9297            ll : 'YYYY年M月D日',
9298            lll : 'YYYY年M月D日 HH:mm',
9299            llll : 'YYYY年M月D日(ddd) HH:mm'
9300        },
9301        meridiemParse: /午前|午後/i,
9302        isPM : function (input) {
9303            return input === '午後';
9304        },
9305        meridiem : function (hour, minute, isLower) {
9306            if (hour < 12) {
9307                return '午前';
9308            } else {
9309                return '午後';
9310            }
9311        },
9312        calendar : {
9313            sameDay : '[今日] LT',
9314            nextDay : '[明日] LT',
9315            nextWeek : function (now) {
9316                if (now.week() < this.week()) {
9317                    return '[来週]dddd LT';
9318                } else {
9319                    return 'dddd LT';
9320                }
9321            },
9322            lastDay : '[昨日] LT',
9323            lastWeek : function (now) {
9324                if (this.week() < now.week()) {
9325                    return '[先週]dddd LT';
9326                } else {
9327                    return 'dddd LT';
9328                }
9329            },
9330            sameElse : 'L'
9331        },
9332        dayOfMonthOrdinalParse : /\d{1,2}日/,
9333        ordinal : function (number, period) {
9334            switch (period) {
9335                case 'd':
9336                case 'D':
9337                case 'DDD':
9338                    return number + '日';
9339                default:
9340                    return number;
9341            }
9342        },
9343        relativeTime : {
9344            future : '%s後',
9345            past : '%s前',
9346            s : '数秒',
9347            ss : '%d秒',
9348            m : '1分',
9349            mm : '%d分',
9350            h : '1時間',
9351            hh : '%d時間',
9352            d : '1日',
9353            dd : '%d日',
9354            M : '1ヶ月',
9355            MM : '%dヶ月',
9356            y : '1å¹´',
9357            yy : '%då¹´'
9358        }
9359    });
9360
9361    //! moment.js locale configuration
9362
9363    hooks.defineLocale('jv', {
9364        months : 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split('_'),
9365        monthsShort : 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),
9366        weekdays : 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),
9367        weekdaysShort : 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),
9368        weekdaysMin : 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),
9369        longDateFormat : {
9370            LT : 'HH.mm',
9371            LTS : 'HH.mm.ss',
9372            L : 'DD/MM/YYYY',
9373            LL : 'D MMMM YYYY',
9374            LLL : 'D MMMM YYYY [pukul] HH.mm',
9375            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
9376        },
9377        meridiemParse: /enjing|siyang|sonten|ndalu/,
9378        meridiemHour : function (hour, meridiem) {
9379            if (hour === 12) {
9380                hour = 0;
9381            }
9382            if (meridiem === 'enjing') {
9383                return hour;
9384            } else if (meridiem === 'siyang') {
9385                return hour >= 11 ? hour : hour + 12;
9386            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {
9387                return hour + 12;
9388            }
9389        },
9390        meridiem : function (hours, minutes, isLower) {
9391            if (hours < 11) {
9392                return 'enjing';
9393            } else if (hours < 15) {
9394                return 'siyang';
9395            } else if (hours < 19) {
9396                return 'sonten';
9397            } else {
9398                return 'ndalu';
9399            }
9400        },
9401        calendar : {
9402            sameDay : '[Dinten puniko pukul] LT',
9403            nextDay : '[Mbenjang pukul] LT',
9404            nextWeek : 'dddd [pukul] LT',
9405            lastDay : '[Kala wingi pukul] LT',
9406            lastWeek : 'dddd [kepengker pukul] LT',
9407            sameElse : 'L'
9408        },
9409        relativeTime : {
9410            future : 'wonten ing %s',
9411            past : '%s ingkang kepengker',
9412            s : 'sawetawis detik',
9413            ss : '%d detik',
9414            m : 'setunggal menit',
9415            mm : '%d menit',
9416            h : 'setunggal jam',
9417            hh : '%d jam',
9418            d : 'sedinten',
9419            dd : '%d dinten',
9420            M : 'sewulan',
9421            MM : '%d wulan',
9422            y : 'setaun',
9423            yy : '%d taun'
9424        },
9425        week : {
9426            dow : 1, // Monday is the first day of the week.
9427            doy : 7  // The week that contains Jan 7th is the first week of the year.
9428        }
9429    });
9430
9431    //! moment.js locale configuration
9432
9433    hooks.defineLocale('ka', {
9434        months : {
9435            standalone: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split('_'),
9436            format: 'იანვარს_თებერვალს_მარტს_აპრილის_მაისს_ივნისს_ივლისს_აგვისტს_სექტემბერს_ოქტომბერს_ნოემბერს_დეკემბერს'.split('_')
9437        },
9438        monthsShort : 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),
9439        weekdays : {
9440            standalone: 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split('_'),
9441            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split('_'),
9442            isFormat: /(წინა|შემდეგ)/
9443        },
9444        weekdaysShort : 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),
9445        weekdaysMin : 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),
9446        longDateFormat : {
9447            LT : 'h:mm A',
9448            LTS : 'h:mm:ss A',
9449            L : 'DD/MM/YYYY',
9450            LL : 'D MMMM YYYY',
9451            LLL : 'D MMMM YYYY h:mm A',
9452            LLLL : 'dddd, D MMMM YYYY h:mm A'
9453        },
9454        calendar : {
9455            sameDay : '[დღეს] LT[-ზე]',
9456            nextDay : '[ხვალ] LT[-ზე]',
9457            lastDay : '[გუშინ] LT[-ზე]',
9458            nextWeek : '[შემდეგ] dddd LT[-ზე]',
9459            lastWeek : '[წინა] dddd LT-ზე',
9460            sameElse : 'L'
9461        },
9462        relativeTime : {
9463            future : function (s) {
9464                return (/(წამი|წუთი|საათი|წელი)/).test(s) ?
9465                    s.replace(/ი$/, 'ში') :
9466                    s + 'ში';
9467            },
9468            past : function (s) {
9469                if ((/(წამი|წუთი|საათი|დღე|თვე)/).test(s)) {
9470                    return s.replace(/(ი|ე)$/, 'ის წინ');
9471                }
9472                if ((/წელი/).test(s)) {
9473                    return s.replace(/წელი$/, 'წლის წინ');
9474                }
9475            },
9476            s : 'რამდენიმე წამი',
9477            ss : '%d წამი',
9478            m : 'წუთი',
9479            mm : '%d წუთი',
9480            h : 'საათი',
9481            hh : '%d საათი',
9482            d : 'დღე',
9483            dd : '%d დღე',
9484            M : 'თვე',
9485            MM : '%d თვე',
9486            y : 'წელი',
9487            yy : '%d წელი'
9488        },
9489        dayOfMonthOrdinalParse: /0|1-ლი|მე-\d{1,2}|\d{1,2}-ე/,
9490        ordinal : function (number) {
9491            if (number === 0) {
9492                return number;
9493            }
9494            if (number === 1) {
9495                return number + '-ლი';
9496            }
9497            if ((number < 20) || (number <= 100 && (number % 20 === 0)) || (number % 100 === 0)) {
9498                return 'მე-' + number;
9499            }
9500            return number + '-ე';
9501        },
9502        week : {
9503            dow : 1,
9504            doy : 7
9505        }
9506    });
9507
9508    //! moment.js locale configuration
9509
9510    var suffixes$1 = {
9511        0: '-ші',
9512        1: '-ші',
9513        2: '-ші',
9514        3: '-ші',
9515        4: '-ші',
9516        5: '-ші',
9517        6: '-шы',
9518        7: '-ші',
9519        8: '-ші',
9520        9: '-шы',
9521        10: '-шы',
9522        20: '-шы',
9523        30: '-шы',
9524        40: '-шы',
9525        50: '-ші',
9526        60: '-шы',
9527        70: '-ші',
9528        80: '-ші',
9529        90: '-шы',
9530        100: '-ші'
9531    };
9532
9533    hooks.defineLocale('kk', {
9534        months : 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split('_'),
9535        monthsShort : 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),
9536        weekdays : 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split('_'),
9537        weekdaysShort : 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),
9538        weekdaysMin : 'жк_дй_сй_ср_бй_жм_сн'.split('_'),
9539        longDateFormat : {
9540            LT : 'HH:mm',
9541            LTS : 'HH:mm:ss',
9542            L : 'DD.MM.YYYY',
9543            LL : 'D MMMM YYYY',
9544            LLL : 'D MMMM YYYY HH:mm',
9545            LLLL : 'dddd, D MMMM YYYY HH:mm'
9546        },
9547        calendar : {
9548            sameDay : '[Бүгін сағат] LT',
9549            nextDay : '[Ертең сағат] LT',
9550            nextWeek : 'dddd [сағат] LT',
9551            lastDay : '[Кеше сағат] LT',
9552            lastWeek : '[Өткен аптаның] dddd [сағат] LT',
9553            sameElse : 'L'
9554        },
9555        relativeTime : {
9556            future : '%s ішінде',
9557            past : '%s бұрын',
9558            s : 'бірнеше секунд',
9559            ss : '%d секунд',
9560            m : 'бір минут',
9561            mm : '%d минут',
9562            h : 'бір сағат',
9563            hh : '%d сағат',
9564            d : 'бір күн',
9565            dd : '%d күн',
9566            M : 'бір ай',
9567            MM : '%d ай',
9568            y : 'бір жыл',
9569            yy : '%d жыл'
9570        },
9571        dayOfMonthOrdinalParse: /\d{1,2}-(ші|шы)/,
9572        ordinal : function (number) {
9573            var a = number % 10,
9574                b = number >= 100 ? 100 : null;
9575            return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);
9576        },
9577        week : {
9578            dow : 1, // Monday is the first day of the week.
9579            doy : 7  // The week that contains Jan 7th is the first week of the year.
9580        }
9581    });
9582
9583    //! moment.js locale configuration
9584
9585    var symbolMap$8 = {
9586        '1': '១',
9587        '2': '២',
9588        '3': '៣',
9589        '4': '៤',
9590        '5': '៥',
9591        '6': '៦',
9592        '7': '៧',
9593        '8': '៨',
9594        '9': '៩',
9595        '0': '០'
9596    }, numberMap$7 = {
9597        '១': '1',
9598        '២': '2',
9599        '៣': '3',
9600        '៤': '4',
9601        '៥': '5',
9602        '៦': '6',
9603        '៧': '7',
9604        '៨': '8',
9605        '៩': '9',
9606        '០': '0'
9607    };
9608
9609    hooks.defineLocale('km', {
9610        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
9611            '_'
9612        ),
9613        monthsShort: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(
9614            '_'
9615        ),
9616        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),
9617        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
9618        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),
9619        weekdaysParseExact: true,
9620        longDateFormat: {
9621            LT: 'HH:mm',
9622            LTS: 'HH:mm:ss',
9623            L: 'DD/MM/YYYY',
9624            LL: 'D MMMM YYYY',
9625            LLL: 'D MMMM YYYY HH:mm',
9626            LLLL: 'dddd, D MMMM YYYY HH:mm'
9627        },
9628        meridiemParse: /ព្រឹក|ល្ងាច/,
9629        isPM: function (input) {
9630            return input === 'ល្ងាច';
9631        },
9632        meridiem: function (hour, minute, isLower) {
9633            if (hour < 12) {
9634                return 'ព្រឹក';
9635            } else {
9636                return 'ល្ងាច';
9637            }
9638        },
9639        calendar: {
9640            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',
9641            nextDay: '[ស្អែក ម៉ោង] LT',
9642            nextWeek: 'dddd [ម៉ោង] LT',
9643            lastDay: '[ម្សិលមិញ ម៉ោង] LT',
9644            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',
9645            sameElse: 'L'
9646        },
9647        relativeTime: {
9648            future: '%sទៀត',
9649            past: '%sមុន',
9650            s: 'ប៉ុន្មានវិនាទី',
9651            ss: '%d វិនាទី',
9652            m: 'មួយនាទី',
9653            mm: '%d នាទី',
9654            h: 'មួយម៉ោង',
9655            hh: '%d ម៉ោង',
9656            d: 'មួយថ្ងៃ',
9657            dd: '%d ថ្ងៃ',
9658            M: 'មួយខែ',
9659            MM: '%d ខែ',
9660            y: 'មួយឆ្នាំ',
9661            yy: '%d ឆ្នាំ'
9662        },
9663        dayOfMonthOrdinalParse : /ទី\d{1,2}/,
9664        ordinal : 'ទី%d',
9665        preparse: function (string) {
9666            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {
9667                return numberMap$7[match];
9668            });
9669        },
9670        postformat: function (string) {
9671            return string.replace(/\d/g, function (match) {
9672                return symbolMap$8[match];
9673            });
9674        },
9675        week: {
9676            dow: 1, // Monday is the first day of the week.
9677            doy: 4 // The week that contains Jan 4th is the first week of the year.
9678        }
9679    });
9680
9681    //! moment.js locale configuration
9682
9683    var symbolMap$9 = {
9684        '1': 'à³§',
9685        '2': '೨',
9686        '3': '೩',
9687        '4': '೪',
9688        '5': '೫',
9689        '6': '೬',
9690        '7': 'à³­',
9691        '8': 'à³®',
9692        '9': '೯',
9693        '0': '೦'
9694    },
9695    numberMap$8 = {
9696        'à³§': '1',
9697        '೨': '2',
9698        '೩': '3',
9699        '೪': '4',
9700        '೫': '5',
9701        '೬': '6',
9702        'à³­': '7',
9703        'à³®': '8',
9704        '೯': '9',
9705        '೦': '0'
9706    };
9707
9708    hooks.defineLocale('kn', {
9709        months : 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split('_'),
9710        monthsShort : 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split('_'),
9711        monthsParseExact: true,
9712        weekdays : 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split('_'),
9713        weekdaysShort : 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),
9714        weekdaysMin : 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),
9715        longDateFormat : {
9716            LT : 'A h:mm',
9717            LTS : 'A h:mm:ss',
9718            L : 'DD/MM/YYYY',
9719            LL : 'D MMMM YYYY',
9720            LLL : 'D MMMM YYYY, A h:mm',
9721            LLLL : 'dddd, D MMMM YYYY, A h:mm'
9722        },
9723        calendar : {
9724            sameDay : '[ಇಂದು] LT',
9725            nextDay : '[ನಾಳೆ] LT',
9726            nextWeek : 'dddd, LT',
9727            lastDay : '[ನಿನ್ನೆ] LT',
9728            lastWeek : '[ಕೊನೆಯ] dddd, LT',
9729            sameElse : 'L'
9730        },
9731        relativeTime : {
9732            future : '%s ನಂತರ',
9733            past : '%s ಹಿಂದೆ',
9734            s : 'ಕೆಲವು ಕ್ಷಣಗಳು',
9735            ss : '%d ಸೆಕೆಂಡುಗಳು',
9736            m : 'ಒಂದು ನಿಮಿಷ',
9737            mm : '%d ನಿಮಿಷ',
9738            h : 'ಒಂದು ಗಂಟೆ',
9739            hh : '%d ಗಂಟೆ',
9740            d : 'ಒಂದು ದಿನ',
9741            dd : '%d ದಿನ',
9742            M : 'ಒಂದು ತಿಂಗಳು',
9743            MM : '%d ತಿಂಗಳು',
9744            y : 'ಒಂದು ವರ್ಷ',
9745            yy : '%d ವರ್ಷ'
9746        },
9747        preparse: function (string) {
9748            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {
9749                return numberMap$8[match];
9750            });
9751        },
9752        postformat: function (string) {
9753            return string.replace(/\d/g, function (match) {
9754                return symbolMap$9[match];
9755            });
9756        },
9757        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,
9758        meridiemHour : function (hour, meridiem) {
9759            if (hour === 12) {
9760                hour = 0;
9761            }
9762            if (meridiem === 'ರಾತ್ರಿ') {
9763                return hour < 4 ? hour : hour + 12;
9764            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {
9765                return hour;
9766            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {
9767                return hour >= 10 ? hour : hour + 12;
9768            } else if (meridiem === 'ಸಂಜೆ') {
9769                return hour + 12;
9770            }
9771        },
9772        meridiem : function (hour, minute, isLower) {
9773            if (hour < 4) {
9774                return 'ರಾತ್ರಿ';
9775            } else if (hour < 10) {
9776                return 'ಬೆಳಿಗ್ಗೆ';
9777            } else if (hour < 17) {
9778                return 'ಮಧ್ಯಾಹ್ನ';
9779            } else if (hour < 20) {
9780                return 'ಸಂಜೆ';
9781            } else {
9782                return 'ರಾತ್ರಿ';
9783            }
9784        },
9785        dayOfMonthOrdinalParse: /\d{1,2}(ನೇ)/,
9786        ordinal : function (number) {
9787            return number + 'ನೇ';
9788        },
9789        week : {
9790            dow : 0, // Sunday is the first day of the week.
9791            doy : 6  // The week that contains Jan 6th is the first week of the year.
9792        }
9793    });
9794
9795    //! moment.js locale configuration
9796
9797    hooks.defineLocale('ko', {
9798        months : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
9799        monthsShort : '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),
9800        weekdays : '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),
9801        weekdaysShort : '일_월_화_수_목_금_토'.split('_'),
9802        weekdaysMin : '일_월_화_수_목_금_토'.split('_'),
9803        longDateFormat : {
9804            LT : 'A h:mm',
9805            LTS : 'A h:mm:ss',
9806            L : 'YYYY.MM.DD.',
9807            LL : 'YYYY년 MMMM D일',
9808            LLL : 'YYYY년 MMMM D일 A h:mm',
9809            LLLL : 'YYYY년 MMMM D일 dddd A h:mm',
9810            l : 'YYYY.MM.DD.',
9811            ll : 'YYYY년 MMMM D일',
9812            lll : 'YYYY년 MMMM D일 A h:mm',
9813            llll : 'YYYY년 MMMM D일 dddd A h:mm'
9814        },
9815        calendar : {
9816            sameDay : '오늘 LT',
9817            nextDay : '내일 LT',
9818            nextWeek : 'dddd LT',
9819            lastDay : '어제 LT',
9820            lastWeek : '지난주 dddd LT',
9821            sameElse : 'L'
9822        },
9823        relativeTime : {
9824            future : '%s 후',
9825            past : '%s 전',
9826            s : '몇 초',
9827            ss : '%d초',
9828            m : '1분',
9829            mm : '%d분',
9830            h : '한 시간',
9831            hh : '%d시간',
9832            d : '하루',
9833            dd : '%d일',
9834            M : '한 달',
9835            MM : '%d달',
9836            y : '일 년',
9837            yy : '%d년'
9838        },
9839        dayOfMonthOrdinalParse : /\d{1,2}(일|월|주)/,
9840        ordinal : function (number, period) {
9841            switch (period) {
9842                case 'd':
9843                case 'D':
9844                case 'DDD':
9845                    return number + '일';
9846                case 'M':
9847                    return number + '월';
9848                case 'w':
9849                case 'W':
9850                    return number + '주';
9851                default:
9852                    return number;
9853            }
9854        },
9855        meridiemParse : /오전|오후/,
9856        isPM : function (token) {
9857            return token === '오후';
9858        },
9859        meridiem : function (hour, minute, isUpper) {
9860            return hour < 12 ? '오전' : '오후';
9861        }
9862    });
9863
9864    //! moment.js locale configuration
9865
9866    var symbolMap$a = {
9867        '1': 'Ù¡',
9868        '2': 'Ù¢',
9869        '3': 'Ù£',
9870        '4': 'Ù¤',
9871        '5': 'Ù¥',
9872        '6': 'Ù¦',
9873        '7': 'Ù§',
9874        '8': 'Ù¨',
9875        '9': 'Ù©',
9876        '0': 'Ù '
9877    }, numberMap$9 = {
9878        'Ù¡': '1',
9879        'Ù¢': '2',
9880        'Ù£': '3',
9881        'Ù¤': '4',
9882        'Ù¥': '5',
9883        'Ù¦': '6',
9884        'Ù§': '7',
9885        'Ù¨': '8',
9886        'Ù©': '9',
9887        'Ù ': '0'
9888    },
9889    months$7 = [
9890        'کانونی دووەم',
9891        'شوبات',
9892        'ئازار',
9893        'نیسان',
9894        'ئایار',
9895        'حوزەیران',
9896        'تەمموز',
9897        'ئاب',
9898        'ئەیلوول',
9899        'تشرینی یەكەم',
9900        'تشرینی دووەم',
9901        'كانونی یەکەم'
9902    ];
9903
9904
9905    hooks.defineLocale('ku', {
9906        months : months$7,
9907        monthsShort : months$7,
9908        weekdays : 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split('_'),
9909        weekdaysShort : 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),
9910        weekdaysMin : 'ی_د_س_چ_پ_ه_ش'.split('_'),
9911        weekdaysParseExact : true,
9912        longDateFormat : {
9913            LT : 'HH:mm',
9914            LTS : 'HH:mm:ss',
9915            L : 'DD/MM/YYYY',
9916            LL : 'D MMMM YYYY',
9917            LLL : 'D MMMM YYYY HH:mm',
9918            LLLL : 'dddd, D MMMM YYYY HH:mm'
9919        },
9920        meridiemParse: /ئێواره‌|به‌یانی/,
9921        isPM: function (input) {
9922            return /ئێواره‌/.test(input);
9923        },
9924        meridiem : function (hour, minute, isLower) {
9925            if (hour < 12) {
9926                return 'به‌یانی';
9927            } else {
9928                return 'ئێواره‌';
9929            }
9930        },
9931        calendar : {
9932            sameDay : '[ئه‌مرۆ كاتژمێر] LT',
9933            nextDay : '[به‌یانی كاتژمێر] LT',
9934            nextWeek : 'dddd [كاتژمێر] LT',
9935            lastDay : '[دوێنێ كاتژمێر] LT',
9936            lastWeek : 'dddd [كاتژمێر] LT',
9937            sameElse : 'L'
9938        },
9939        relativeTime : {
9940            future : 'له‌ %s',
9941            past : '%s',
9942            s : 'چه‌ند چركه‌یه‌ك',
9943            ss : 'چركه‌ %d',
9944            m : 'یه‌ك خوله‌ك',
9945            mm : '%d خوله‌ك',
9946            h : 'یه‌ك كاتژمێر',
9947            hh : '%d كاتژمێر',
9948            d : 'یه‌ك ڕۆژ',
9949            dd : '%d ڕۆژ',
9950            M : 'یه‌ك مانگ',
9951            MM : '%d مانگ',
9952            y : 'یه‌ك ساڵ',
9953            yy : '%d ساڵ'
9954        },
9955        preparse: function (string) {
9956            return string.replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {
9957                return numberMap$9[match];
9958            }).replace(/،/g, ',');
9959        },
9960        postformat: function (string) {
9961            return string.replace(/\d/g, function (match) {
9962                return symbolMap$a[match];
9963            }).replace(/,/g, '،');
9964        },
9965        week : {
9966            dow : 6, // Saturday is the first day of the week.
9967            doy : 12 // The week that contains Jan 12th is the first week of the year.
9968        }
9969    });
9970
9971    //! moment.js locale configuration
9972
9973    var suffixes$2 = {
9974        0: '-чү',
9975        1: '-чи',
9976        2: '-чи',
9977        3: '-чү',
9978        4: '-чү',
9979        5: '-чи',
9980        6: '-чы',
9981        7: '-чи',
9982        8: '-чи',
9983        9: '-чу',
9984        10: '-чу',
9985        20: '-чы',
9986        30: '-чу',
9987        40: '-чы',
9988        50: '-чү',
9989        60: '-чы',
9990        70: '-чи',
9991        80: '-чи',
9992        90: '-чу',
9993        100: '-чү'
9994    };
9995
9996    hooks.defineLocale('ky', {
9997        months : 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
9998        monthsShort : 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
9999        weekdays : 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split('_'),
10000        weekdaysShort : 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),
10001        weekdaysMin : 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),
10002        longDateFormat : {
10003            LT : 'HH:mm',
10004            LTS : 'HH:mm:ss',
10005            L : 'DD.MM.YYYY',
10006            LL : 'D MMMM YYYY',
10007            LLL : 'D MMMM YYYY HH:mm',
10008            LLLL : 'dddd, D MMMM YYYY HH:mm'
10009        },
10010        calendar : {
10011            sameDay : '[Бүгүн саат] LT',
10012            nextDay : '[Эртең саат] LT',
10013            nextWeek : 'dddd [саат] LT',
10014            lastDay : '[Кечээ саат] LT',
10015            lastWeek : '[Өткөн аптанын] dddd [күнү] [саат] LT',
10016            sameElse : 'L'
10017        },
10018        relativeTime : {
10019            future : '%s ичинде',
10020            past : '%s мурун',
10021            s : 'бирнече секунд',
10022            ss : '%d секунд',
10023            m : 'бир мүнөт',
10024            mm : '%d мүнөт',
10025            h : 'бир саат',
10026            hh : '%d саат',
10027            d : 'бир күн',
10028            dd : '%d күн',
10029            M : 'бир ай',
10030            MM : '%d ай',
10031            y : 'бир жыл',
10032            yy : '%d жыл'
10033        },
10034        dayOfMonthOrdinalParse: /\d{1,2}-(чи|чы|чү|чу)/,
10035        ordinal : function (number) {
10036            var a = number % 10,
10037                b = number >= 100 ? 100 : null;
10038            return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);
10039        },
10040        week : {
10041            dow : 1, // Monday is the first day of the week.
10042            doy : 7  // The week that contains Jan 7th is the first week of the year.
10043        }
10044    });
10045
10046    //! moment.js locale configuration
10047
10048    function processRelativeTime$5(number, withoutSuffix, key, isFuture) {
10049        var format = {
10050            'm': ['eng Minutt', 'enger Minutt'],
10051            'h': ['eng Stonn', 'enger Stonn'],
10052            'd': ['een Dag', 'engem Dag'],
10053            'M': ['ee Mount', 'engem Mount'],
10054            'y': ['ee Joer', 'engem Joer']
10055        };
10056        return withoutSuffix ? format[key][0] : format[key][1];
10057    }
10058    function processFutureTime(string) {
10059        var number = string.substr(0, string.indexOf(' '));
10060        if (eifelerRegelAppliesToNumber(number)) {
10061            return 'a ' + string;
10062        }
10063        return 'an ' + string;
10064    }
10065    function processPastTime(string) {
10066        var number = string.substr(0, string.indexOf(' '));
10067        if (eifelerRegelAppliesToNumber(number)) {
10068            return 'viru ' + string;
10069        }
10070        return 'virun ' + string;
10071    }
10072    /**
10073     * Returns true if the word before the given number loses the '-n' ending.
10074     * e.g. 'an 10 Deeg' but 'a 5 Deeg'
10075     *
10076     * @param number {integer}
10077     * @returns {boolean}
10078     */
10079    function eifelerRegelAppliesToNumber(number) {
10080        number = parseInt(number, 10);
10081        if (isNaN(number)) {
10082            return false;
10083        }
10084        if (number < 0) {
10085            // Negative Number --> always true
10086            return true;
10087        } else if (number < 10) {
10088            // Only 1 digit
10089            if (4 <= number && number <= 7) {
10090                return true;
10091            }
10092            return false;
10093        } else if (number < 100) {
10094            // 2 digits
10095            var lastDigit = number % 10, firstDigit = number / 10;
10096            if (lastDigit === 0) {
10097                return eifelerRegelAppliesToNumber(firstDigit);
10098            }
10099            return eifelerRegelAppliesToNumber(lastDigit);
10100        } else if (number < 10000) {
10101            // 3 or 4 digits --> recursively check first digit
10102            while (number >= 10) {
10103                number = number / 10;
10104            }
10105            return eifelerRegelAppliesToNumber(number);
10106        } else {
10107            // Anything larger than 4 digits: recursively check first n-3 digits
10108            number = number / 1000;
10109            return eifelerRegelAppliesToNumber(number);
10110        }
10111    }
10112
10113    hooks.defineLocale('lb', {
10114        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
10115        //monthsShort: 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
10116		monthsShort: 'Jan_Febr_Mrz_Abr_Mee_Jun_Jul_Aug_Sept_Okt_Nov_Dez'.split('_'),
10117        monthsParseExact : true,
10118        weekdays: 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split('_'),
10119        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),
10120        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),
10121        weekdaysParseExact : true,
10122        longDateFormat: {
10123            LT: 'H:mm [Auer]',
10124            LTS: 'H:mm:ss [Auer]',
10125            L: 'DD.MM.YYYY',
10126            LL: 'D. MMMM YYYY',
10127            LLL: 'D. MMMM YYYY H:mm [Auer]',
10128            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]'
10129        },
10130        calendar: {
10131            sameDay: '[Haut um] LT',
10132            sameElse: 'L',
10133            nextDay: '[Muer um] LT',
10134            nextWeek: 'dddd [um] LT',
10135            lastDay: '[Gëschter um] LT',
10136            lastWeek: function () {
10137                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule
10138                switch (this.day()) {
10139                    case 2:
10140                    case 4:
10141                        return '[Leschten] dddd [um] LT';
10142                    default:
10143                        return '[Leschte] dddd [um] LT';
10144                }
10145            }
10146        },
10147        relativeTime : {
10148            future : processFutureTime,
10149            past : processPastTime,
10150            s : 'e puer Sekonnen',
10151            ss : '%d Sekonnen',
10152            m : processRelativeTime$5,
10153            mm : '%d Minutten',
10154            h : processRelativeTime$5,
10155            hh : '%d Stonnen',
10156            d : processRelativeTime$5,
10157            dd : '%d Deeg',
10158            M : processRelativeTime$5,
10159            MM : '%d Méint',
10160            y : processRelativeTime$5,
10161            yy : '%d Joer'
10162        },
10163        dayOfMonthOrdinalParse: /\d{1,2}\./,
10164        ordinal: '%d.',
10165        week: {
10166            dow: 1, // Monday is the first day of the week.
10167            doy: 4  // The week that contains Jan 4th is the first week of the year.
10168        }
10169    });
10170
10171    //! moment.js locale configuration
10172
10173    hooks.defineLocale('lo', {
10174        months : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
10175        monthsShort : 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split('_'),
10176        weekdays : 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
10177        weekdaysShort : 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),
10178        weekdaysMin : 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),
10179        weekdaysParseExact : true,
10180        longDateFormat : {
10181            LT : 'HH:mm',
10182            LTS : 'HH:mm:ss',
10183            L : 'DD/MM/YYYY',
10184            LL : 'D MMMM YYYY',
10185            LLL : 'D MMMM YYYY HH:mm',
10186            LLLL : 'ວັນdddd D MMMM YYYY HH:mm'
10187        },
10188        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,
10189        isPM: function (input) {
10190            return input === 'ຕອນແລງ';
10191        },
10192        meridiem : function (hour, minute, isLower) {
10193            if (hour < 12) {
10194                return 'ຕອນເຊົ້າ';
10195            } else {
10196                return 'ຕອນແລງ';
10197            }
10198        },
10199        calendar : {
10200            sameDay : '[ມື້ນີ້ເວລາ] LT',
10201            nextDay : '[ມື້ອື່ນເວລາ] LT',
10202            nextWeek : '[ວັນ]dddd[ໜ້າເວລາ] LT',
10203            lastDay : '[ມື້ວານນີ້ເວລາ] LT',
10204            lastWeek : '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',
10205            sameElse : 'L'
10206        },
10207        relativeTime : {
10208            future : 'ອີກ %s',
10209            past : '%sຜ່ານມາ',
10210            s : 'ບໍ່ເທົ່າໃດວິນາທີ',
10211            ss : '%d ວິນາທີ' ,
10212            m : '1 ນາທີ',
10213            mm : '%d ນາທີ',
10214            h : '1 ຊົ່ວໂມງ',
10215            hh : '%d ຊົ່ວໂມງ',
10216            d : '1 ມື້',
10217            dd : '%d ມື້',
10218            M : '1 ເດືອນ',
10219            MM : '%d ເດືອນ',
10220            y : '1 ປີ',
10221            yy : '%d ປີ'
10222        },
10223        dayOfMonthOrdinalParse: /(ທີ່)\d{1,2}/,
10224        ordinal : function (number) {
10225            return 'ທີ່' + number;
10226        }
10227    });
10228
10229    //! moment.js locale configuration
10230
10231    var units = {
10232        'ss' : 'sekundė_sekundžių_sekundes',
10233        'm' : 'minutė_minutės_minutę',
10234        'mm': 'minutės_minučių_minutes',
10235        'h' : 'valanda_valandos_valandą',
10236        'hh': 'valandos_valandų_valandas',
10237        'd' : 'diena_dienos_dieną',
10238        'dd': 'dienos_dienų_dienas',
10239        'M' : 'mėnuo_mėnesio_mėnesį',
10240        'MM': 'mėnesiai_mėnesių_mėnesius',
10241        'y' : 'metai_metų_metus',
10242        'yy': 'metai_metų_metus'
10243    };
10244    function translateSeconds(number, withoutSuffix, key, isFuture) {
10245        if (withoutSuffix) {
10246            return 'kelios sekundės';
10247        } else {
10248            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';
10249        }
10250    }
10251    function translateSingular(number, withoutSuffix, key, isFuture) {
10252        return withoutSuffix ? forms(key)[0] : (isFuture ? forms(key)[1] : forms(key)[2]);
10253    }
10254    function special(number) {
10255        return number % 10 === 0 || (number > 10 && number < 20);
10256    }
10257    function forms(key) {
10258        return units[key].split('_');
10259    }
10260    function translate$6(number, withoutSuffix, key, isFuture) {
10261        var result = number + ' ';
10262        if (number === 1) {
10263            return result + translateSingular(number, withoutSuffix, key[0], isFuture);
10264        } else if (withoutSuffix) {
10265            return result + (special(number) ? forms(key)[1] : forms(key)[0]);
10266        } else {
10267            if (isFuture) {
10268                return result + forms(key)[1];
10269            } else {
10270                return result + (special(number) ? forms(key)[1] : forms(key)[2]);
10271            }
10272        }
10273    }
10274    hooks.defineLocale('lt', {
10275        months : {
10276            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split('_'),
10277            standalone: 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split('_'),
10278            isFormat: /D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/
10279        },
10280        monthsShort : 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),
10281        weekdays : {
10282            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split('_'),
10283            standalone: 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split('_'),
10284            isFormat: /dddd HH:mm/
10285        },
10286        weekdaysShort : 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),
10287        weekdaysMin : 'S_P_A_T_K_Pn_Å '.split('_'),
10288        weekdaysParseExact : true,
10289        longDateFormat : {
10290            LT : 'HH:mm',
10291            LTS : 'HH:mm:ss',
10292            L : 'YYYY-MM-DD',
10293            LL : 'YYYY [m.] MMMM D [d.]',
10294            LLL : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
10295            LLLL : 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',
10296            l : 'YYYY-MM-DD',
10297            ll : 'YYYY [m.] MMMM D [d.]',
10298            lll : 'YYYY [m.] MMMM D [d.], HH:mm [val.]',
10299            llll : 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]'
10300        },
10301        calendar : {
10302            sameDay : '[Å iandien] LT',
10303            nextDay : '[Rytoj] LT',
10304            nextWeek : 'dddd LT',
10305            lastDay : '[Vakar] LT',
10306            lastWeek : '[Praėjusį] dddd LT',
10307            sameElse : 'L'
10308        },
10309        relativeTime : {
10310            future : 'po %s',
10311            past : 'prieš %s',
10312            s : translateSeconds,
10313            ss : translate$6,
10314            m : translateSingular,
10315            mm : translate$6,
10316            h : translateSingular,
10317            hh : translate$6,
10318            d : translateSingular,
10319            dd : translate$6,
10320            M : translateSingular,
10321            MM : translate$6,
10322            y : translateSingular,
10323            yy : translate$6
10324        },
10325        dayOfMonthOrdinalParse: /\d{1,2}-oji/,
10326        ordinal : function (number) {
10327            return number + '-oji';
10328        },
10329        week : {
10330            dow : 1, // Monday is the first day of the week.
10331            doy : 4  // The week that contains Jan 4th is the first week of the year.
10332        }
10333    });
10334
10335    //! moment.js locale configuration
10336
10337    var units$1 = {
10338        'ss': 'sekundes_sekundēm_sekunde_sekundes'.split('_'),
10339        'm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
10340        'mm': 'minūtes_minūtēm_minūte_minūtes'.split('_'),
10341        'h': 'stundas_stundām_stunda_stundas'.split('_'),
10342        'hh': 'stundas_stundām_stunda_stundas'.split('_'),
10343        'd': 'dienas_dienām_diena_dienas'.split('_'),
10344        'dd': 'dienas_dienām_diena_dienas'.split('_'),
10345        'M': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
10346        'MM': 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),
10347        'y': 'gada_gadiem_gads_gadi'.split('_'),
10348        'yy': 'gada_gadiem_gads_gadi'.split('_')
10349    };
10350    /**
10351     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.
10352     */
10353    function format$1(forms, number, withoutSuffix) {
10354        if (withoutSuffix) {
10355            // E.g. "21 minūte", "3 minūtes".
10356            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];
10357        } else {
10358            // E.g. "21 minūtes" as in "pēc 21 minūtes".
10359            // E.g. "3 minūtēm" as in "pēc 3 minūtēm".
10360            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];
10361        }
10362    }
10363    function relativeTimeWithPlural$1(number, withoutSuffix, key) {
10364        return number + ' ' + format$1(units$1[key], number, withoutSuffix);
10365    }
10366    function relativeTimeWithSingular(number, withoutSuffix, key) {
10367        return format$1(units$1[key], number, withoutSuffix);
10368    }
10369    function relativeSeconds(number, withoutSuffix) {
10370        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';
10371    }
10372
10373    hooks.defineLocale('lv', {
10374        months : 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split('_'),
10375        monthsShort : 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),
10376        weekdays : 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split('_'),
10377        weekdaysShort : 'Sv_P_O_T_C_Pk_S'.split('_'),
10378        weekdaysMin : 'Sv_P_O_T_C_Pk_S'.split('_'),
10379        weekdaysParseExact : true,
10380        longDateFormat : {
10381            LT : 'HH:mm',
10382            LTS : 'HH:mm:ss',
10383            L : 'DD.MM.YYYY.',
10384            LL : 'YYYY. [gada] D. MMMM',
10385            LLL : 'YYYY. [gada] D. MMMM, HH:mm',
10386            LLLL : 'YYYY. [gada] D. MMMM, dddd, HH:mm'
10387        },
10388        calendar : {
10389            sameDay : '[Å odien pulksten] LT',
10390            nextDay : '[Rīt pulksten] LT',
10391            nextWeek : 'dddd [pulksten] LT',
10392            lastDay : '[Vakar pulksten] LT',
10393            lastWeek : '[Pagājušā] dddd [pulksten] LT',
10394            sameElse : 'L'
10395        },
10396        relativeTime : {
10397            future : 'pēc %s',
10398            past : 'pirms %s',
10399            s : relativeSeconds,
10400            ss : relativeTimeWithPlural$1,
10401            m : relativeTimeWithSingular,
10402            mm : relativeTimeWithPlural$1,
10403            h : relativeTimeWithSingular,
10404            hh : relativeTimeWithPlural$1,
10405            d : relativeTimeWithSingular,
10406            dd : relativeTimeWithPlural$1,
10407            M : relativeTimeWithSingular,
10408            MM : relativeTimeWithPlural$1,
10409            y : relativeTimeWithSingular,
10410            yy : relativeTimeWithPlural$1
10411        },
10412        dayOfMonthOrdinalParse: /\d{1,2}\./,
10413        ordinal : '%d.',
10414        week : {
10415            dow : 1, // Monday is the first day of the week.
10416            doy : 4  // The week that contains Jan 4th is the first week of the year.
10417        }
10418    });
10419
10420    //! moment.js locale configuration
10421
10422    var translator = {
10423        words: { //Different grammatical cases
10424            ss: ['sekund', 'sekunda', 'sekundi'],
10425            m: ['jedan minut', 'jednog minuta'],
10426            mm: ['minut', 'minuta', 'minuta'],
10427            h: ['jedan sat', 'jednog sata'],
10428            hh: ['sat', 'sata', 'sati'],
10429            dd: ['dan', 'dana', 'dana'],
10430            MM: ['mjesec', 'mjeseca', 'mjeseci'],
10431            yy: ['godina', 'godine', 'godina']
10432        },
10433        correctGrammaticalCase: function (number, wordKey) {
10434            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
10435        },
10436        translate: function (number, withoutSuffix, key) {
10437            var wordKey = translator.words[key];
10438            if (key.length === 1) {
10439                return withoutSuffix ? wordKey[0] : wordKey[1];
10440            } else {
10441                return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
10442            }
10443        }
10444    };
10445
10446    hooks.defineLocale('me', {
10447        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
10448        //monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
10449		monthsShort: 'jan_feb_mar_apr_maj_jun_jul_avg_sep_okt_nov_dec'.split('_'),
10450        monthsParseExact : true,
10451        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split('_'),
10452        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),
10453        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
10454        weekdaysParseExact : true,
10455        longDateFormat: {
10456            LT: 'H:mm',
10457            LTS : 'H:mm:ss',
10458            L: 'DD.MM.YYYY',
10459            LL: 'D. MMMM YYYY',
10460            LLL: 'D. MMMM YYYY H:mm',
10461            LLLL: 'dddd, D. MMMM YYYY H:mm'
10462        },
10463        calendar: {
10464            sameDay: '[danas u] LT',
10465            nextDay: '[sjutra u] LT',
10466
10467            nextWeek: function () {
10468                switch (this.day()) {
10469                    case 0:
10470                        return '[u] [nedjelju] [u] LT';
10471                    case 3:
10472                        return '[u] [srijedu] [u] LT';
10473                    case 6:
10474                        return '[u] [subotu] [u] LT';
10475                    case 1:
10476                    case 2:
10477                    case 4:
10478                    case 5:
10479                        return '[u] dddd [u] LT';
10480                }
10481            },
10482            lastDay  : '[juče u] LT',
10483            lastWeek : function () {
10484                var lastWeekDays = [
10485                    '[prošle] [nedjelje] [u] LT',
10486                    '[prošlog] [ponedjeljka] [u] LT',
10487                    '[prošlog] [utorka] [u] LT',
10488                    '[prošle] [srijede] [u] LT',
10489                    '[prošlog] [četvrtka] [u] LT',
10490                    '[prošlog] [petka] [u] LT',
10491                    '[prošle] [subote] [u] LT'
10492                ];
10493                return lastWeekDays[this.day()];
10494            },
10495            sameElse : 'L'
10496        },
10497        relativeTime : {
10498            future : 'za %s',
10499            past   : 'prije %s',
10500            s      : 'nekoliko sekundi',
10501            ss     : translator.translate,
10502            m      : translator.translate,
10503            mm     : translator.translate,
10504            h      : translator.translate,
10505            hh     : translator.translate,
10506            d      : 'dan',
10507            dd     : translator.translate,
10508            M      : 'mjesec',
10509            MM     : translator.translate,
10510            y      : 'godinu',
10511            yy     : translator.translate
10512        },
10513        dayOfMonthOrdinalParse: /\d{1,2}\./,
10514        ordinal : '%d.',
vendor: 4,342 bytes, lines 10515-10621
10515        week : {
10516            dow : 1, // Monday is the first day of the week.
10517            doy : 7  // The week that contains Jan 7th is the first week of the year.
10518        }
10519    });
10520
10521    //! moment.js locale configuration
10522
10523    hooks.defineLocale('mi', {
10524        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('_'),
10525        monthsShort: 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split('_'),
10526        monthsRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
10527        monthsStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
10528        monthsShortRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,
10529        monthsShortStrictRegex: /(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,
10530        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),
10531        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
10532        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),
10533        longDateFormat: {
10534            LT: 'HH:mm',
10535            LTS: 'HH:mm:ss',
10536            L: 'DD/MM/YYYY',
10537            LL: 'D MMMM YYYY',
10538            LLL: 'D MMMM YYYY [i] HH:mm',
10539            LLLL: 'dddd, D MMMM YYYY [i] HH:mm'
10540        },
10541        calendar: {
10542            sameDay: '[i teie mahana, i] LT',
10543            nextDay: '[apopo i] LT',
10544            nextWeek: 'dddd [i] LT',
10545            lastDay: '[inanahi i] LT',
10546            lastWeek: 'dddd [whakamutunga i] LT',
10547            sameElse: 'L'
10548        },
10549        relativeTime: {
10550            future: 'i roto i %s',
10551            past: '%s i mua',
10552            s: 'te hēkona ruarua',
10553            ss: '%d hēkona',
10554            m: 'he meneti',
10555            mm: '%d meneti',
10556            h: 'te haora',
10557            hh: '%d haora',
10558            d: 'he ra',
10559            dd: '%d ra',
10560            M: 'he marama',
10561            MM: '%d marama',
10562            y: 'he tau',
10563            yy: '%d tau'
10564        },
10565        dayOfMonthOrdinalParse: /\d{1,2}º/,
10566        ordinal: '%dº',
10567        week : {
10568            dow : 1, // Monday is the first day of the week.
10569            doy : 4  // The week that contains Jan 4th is the first week of the year.
10570        }
10571    });
10572
10573    //! moment.js locale configuration
10574
10575    hooks.defineLocale('mk', {
10576        months : 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split('_'),
10577        monthsShort : 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),
10578        weekdays : 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split('_'),
10579        weekdaysShort : 'нед_пон_вто_сре_чет_пет_саб'.split('_'),
10580        weekdaysMin : 'нe_пo_вт_ср_че_пе_сa'.split('_'),
10581        longDateFormat : {
10582            LT : 'H:mm',
10583            LTS : 'H:mm:ss',
10584            L : 'D.MM.YYYY',
10585            LL : 'D MMMM YYYY',
10586            LLL : 'D MMMM YYYY H:mm',
10587            LLLL : 'dddd, D MMMM YYYY H:mm'
10588        },
10589        calendar : {
10590            sameDay : '[Денес во] LT',
10591            nextDay : '[Утре во] LT',
10592            nextWeek : '[Во] dddd [во] LT',
10593            lastDay : '[Вчера во] LT',
10594            lastWeek : function () {
10595                switch (this.day()) {
10596                    case 0:
10597                    case 3:
10598                    case 6:
10599                        return '[Изминатата] dddd [во] LT';
10600                    case 1:
10601                    case 2:
10602                    case 4:
10603                    case 5:
10604                        return '[Изминатиот] dddd [во] LT';
10605                }
10606            },
10607            sameElse : 'L'
10608        },
10609        relativeTime : {
10610            future : 'после %s',
10611            past : 'пред %s',
10612            s : 'неколку секунди',
10613            ss : '%d секунди',
10614            m : 'минута',
10615            mm : '%d минути',
10616            h : 'час',
10617            hh : '%d часа',
10618            d : 'ден',
10619            dd : '%d дена',
10620            M : 'месец',
10621            MM : '%d месеци',
vendor: 19,315 bytes, lines 10622-11090
10622            y : 'година',
10623            yy : '%d години'
10624        },
10625        dayOfMonthOrdinalParse: /\d{1,2}-(ев|ен|ти|ви|ри|ми)/,
10626        ordinal : function (number) {
10627            var lastDigit = number % 10,
10628                last2Digits = number % 100;
10629            if (number === 0) {
10630                return number + '-ев';
10631            } else if (last2Digits === 0) {
10632                return number + '-ен';
10633            } else if (last2Digits > 10 && last2Digits < 20) {
10634                return number + '-ти';
10635            } else if (lastDigit === 1) {
10636                return number + '-ви';
10637            } else if (lastDigit === 2) {
10638                return number + '-ри';
10639            } else if (lastDigit === 7 || lastDigit === 8) {
10640                return number + '-ми';
10641            } else {
10642                return number + '-ти';
10643            }
10644        },
10645        week : {
10646            dow : 1, // Monday is the first day of the week.
10647            doy : 7  // The week that contains Jan 7th is the first week of the year.
10648        }
10649    });
10650
10651    //! moment.js locale configuration
10652
10653    hooks.defineLocale('ml', {
10654        months : 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split('_'),
10655        monthsShort : 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split('_'),
10656        monthsParseExact : true,
10657        weekdays : 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split('_'),
10658        weekdaysShort : 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),
10659        weekdaysMin : 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),
10660        longDateFormat : {
10661            LT : 'A h:mm -നു',
10662            LTS : 'A h:mm:ss -നു',
10663            L : 'DD/MM/YYYY',
10664            LL : 'D MMMM YYYY',
10665            LLL : 'D MMMM YYYY, A h:mm -നു',
10666            LLLL : 'dddd, D MMMM YYYY, A h:mm -നു'
10667        },
10668        calendar : {
10669            sameDay : '[ഇന്ന്] LT',
10670            nextDay : '[നാളെ] LT',
10671            nextWeek : 'dddd, LT',
10672            lastDay : '[ഇന്നലെ] LT',
10673            lastWeek : '[കഴിഞ്ഞ] dddd, LT',
10674            sameElse : 'L'
10675        },
10676        relativeTime : {
10677            future : '%s കഴിഞ്ഞ്',
10678            past : '%s മുൻപ്',
10679            s : 'അൽപ നിമിഷങ്ങൾ',
10680            ss : '%d സെക്കൻഡ്',
10681            m : 'ഒരു മിനിറ്റ്',
10682            mm : '%d മിനിറ്റ്',
10683            h : 'ഒരു മണിക്കൂർ',
10684            hh : '%d മണിക്കൂർ',
10685            d : 'ഒരു ദിവസം',
10686            dd : '%d ദിവസം',
10687            M : 'ഒരു മാസം',
10688            MM : '%d മാസം',
10689            y : 'ഒരു വർഷം',
10690            yy : '%d വർഷം'
10691        },
10692        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,
10693        meridiemHour : function (hour, meridiem) {
10694            if (hour === 12) {
10695                hour = 0;
10696            }
10697            if ((meridiem === 'രാത്രി' && hour >= 4) ||
10698                    meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||
10699                    meridiem === 'വൈകുന്നേരം') {
10700                return hour + 12;
10701            } else {
10702                return hour;
10703            }
10704        },
10705        meridiem : function (hour, minute, isLower) {
10706            if (hour < 4) {
10707                return 'രാത്രി';
10708            } else if (hour < 12) {
10709                return 'രാവിലെ';
10710            } else if (hour < 17) {
10711                return 'ഉച്ച കഴിഞ്ഞ്';
10712            } else if (hour < 20) {
10713                return 'വൈകുന്നേരം';
10714            } else {
10715                return 'രാത്രി';
10716            }
10717        }
10718    });
10719
10720    //! moment.js locale configuration
10721
10722    function translate$7(number, withoutSuffix, key, isFuture) {
10723        switch (key) {
10724            case 's':
10725                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';
10726            case 'ss':
10727                return number + (withoutSuffix ? ' секунд' : ' секундын');
10728            case 'm':
10729            case 'mm':
10730                return number + (withoutSuffix ? ' минут' : ' минутын');
10731            case 'h':
10732            case 'hh':
10733                return number + (withoutSuffix ? ' цаг' : ' цагийн');
10734            case 'd':
10735            case 'dd':
10736                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');
10737            case 'M':
10738            case 'MM':
10739                return number + (withoutSuffix ? ' сар' : ' сарын');
10740            case 'y':
10741            case 'yy':
10742                return number + (withoutSuffix ? ' жил' : ' жилийн');
10743            default:
10744                return number;
10745        }
10746    }
10747
10748    hooks.defineLocale('mn', {
10749        months : 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split('_'),
10750        monthsShort : '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split('_'),
10751        monthsParseExact : true,
10752        weekdays : 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),
10753        weekdaysShort : 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),
10754        weekdaysMin : 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),
10755        weekdaysParseExact : true,
10756        longDateFormat : {
10757            LT : 'HH:mm',
10758            LTS : 'HH:mm:ss',
10759            L : 'YYYY-MM-DD',
10760            LL : 'YYYY оны MMMMын D',
10761            LLL : 'YYYY оны MMMMын D HH:mm',
10762            LLLL : 'dddd, YYYY оны MMMMын D HH:mm'
10763        },
10764        meridiemParse: /ҮӨ|ҮХ/i,
10765        isPM : function (input) {
10766            return input === 'ҮХ';
10767        },
10768        meridiem : function (hour, minute, isLower) {
10769            if (hour < 12) {
10770                return 'Ò®Ó¨';
10771            } else {
10772                return 'ҮХ';
10773            }
10774        },
10775        calendar : {
10776            sameDay : '[Өнөөдөр] LT',
10777            nextDay : '[Маргааш] LT',
10778            nextWeek : '[Ирэх] dddd LT',
10779            lastDay : '[Өчигдөр] LT',
10780            lastWeek : '[Өнгөрсөн] dddd LT',
10781            sameElse : 'L'
10782        },
10783        relativeTime : {
10784            future : '%s дараа',
10785            past : '%s өмнө',
10786            s : translate$7,
10787            ss : translate$7,
10788            m : translate$7,
10789            mm : translate$7,
10790            h : translate$7,
10791            hh : translate$7,
10792            d : translate$7,
10793            dd : translate$7,
10794            M : translate$7,
10795            MM : translate$7,
10796            y : translate$7,
10797            yy : translate$7
10798        },
10799        dayOfMonthOrdinalParse: /\d{1,2} өдөр/,
10800        ordinal : function (number, period) {
10801            switch (period) {
10802                case 'd':
10803                case 'D':
10804                case 'DDD':
10805                    return number + ' өдөр';
10806                default:
10807                    return number;
10808            }
10809        }
10810    });
10811
10812    //! moment.js locale configuration
10813
10814    var symbolMap$b = {
10815        '1': '१',
10816        '2': '२',
10817        '3': '३',
10818        '4': '४',
10819        '5': '५',
10820        '6': '६',
10821        '7': '७',
10822        '8': '८',
10823        '9': '९',
10824        '0': '०'
10825    },
10826    numberMap$a = {
10827        '१': '1',
10828        '२': '2',
10829        '३': '3',
10830        '४': '4',
10831        '५': '5',
10832        '६': '6',
10833        '७': '7',
10834        '८': '8',
10835        '९': '9',
10836        '०': '0'
10837    };
10838
10839    function relativeTimeMr(number, withoutSuffix, string, isFuture)
10840    {
10841        var output = '';
10842        if (withoutSuffix) {
10843            switch (string) {
10844                case 's': output = 'काही सेकंद'; break;
10845                case 'ss': output = '%d सेकंद'; break;
10846                case 'm': output = 'एक मिनिट'; break;
10847                case 'mm': output = '%d मिनिटे'; break;
10848                case 'h': output = 'एक तास'; break;
10849                case 'hh': output = '%d तास'; break;
10850                case 'd': output = 'एक दिवस'; break;
10851                case 'dd': output = '%d दिवस'; break;
10852                case 'M': output = 'एक महिना'; break;
10853                case 'MM': output = '%d महिने'; break;
10854                case 'y': output = 'एक वर्ष'; break;
10855                case 'yy': output = '%d वर्षे'; break;
10856            }
10857        }
10858        else {
10859            switch (string) {
10860                case 's': output = 'काही सेकंदां'; break;
10861                case 'ss': output = '%d सेकंदां'; break;
10862                case 'm': output = 'एका मिनिटा'; break;
10863                case 'mm': output = '%d मिनिटां'; break;
10864                case 'h': output = 'एका तासा'; break;
10865                case 'hh': output = '%d तासां'; break;
10866                case 'd': output = 'एका दिवसा'; break;
10867                case 'dd': output = '%d दिवसां'; break;
10868                case 'M': output = 'एका महिन्या'; break;
10869                case 'MM': output = '%d महिन्यां'; break;
10870                case 'y': output = 'एका वर्षा'; break;
10871                case 'yy': output = '%d वर्षां'; break;
10872            }
10873        }
10874        return output.replace(/%d/i, number);
10875    }
10876
10877    hooks.defineLocale('mr', {
10878        months : 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split('_'),
10879        monthsShort: 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split('_'),
10880        monthsParseExact : true,
10881        weekdays : 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),
10882        weekdaysShort : 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),
10883        weekdaysMin : 'र_सो_मं_बु_गु_शु_श'.split('_'),
10884        longDateFormat : {
10885            LT : 'A h:mm वाजता',
10886            LTS : 'A h:mm:ss वाजता',
10887            L : 'DD/MM/YYYY',
10888            LL : 'D MMMM YYYY',
10889            LLL : 'D MMMM YYYY, A h:mm वाजता',
10890            LLLL : 'dddd, D MMMM YYYY, A h:mm वाजता'
10891        },
10892        calendar : {
10893            sameDay : '[आज] LT',
10894            nextDay : '[उद्या] LT',
10895            nextWeek : 'dddd, LT',
10896            lastDay : '[काल] LT',
10897            lastWeek: '[मागील] dddd, LT',
10898            sameElse : 'L'
10899        },
10900        relativeTime : {
10901            future: '%sमध्ये',
10902            past: '%sपूर्वी',
10903            s: relativeTimeMr,
10904            ss: relativeTimeMr,
10905            m: relativeTimeMr,
10906            mm: relativeTimeMr,
10907            h: relativeTimeMr,
10908            hh: relativeTimeMr,
10909            d: relativeTimeMr,
10910            dd: relativeTimeMr,
10911            M: relativeTimeMr,
10912            MM: relativeTimeMr,
10913            y: relativeTimeMr,
10914            yy: relativeTimeMr
10915        },
10916        preparse: function (string) {
10917            return string.replace(/[१२३४५६७८९०]/g, function (match) {
10918                return numberMap$a[match];
10919            });
10920        },
10921        postformat: function (string) {
10922            return string.replace(/\d/g, function (match) {
10923                return symbolMap$b[match];
10924            });
10925        },
10926        meridiemParse: /रात्री|सकाळी|दुपारी|सायंकाळी/,
10927        meridiemHour : function (hour, meridiem) {
10928            if (hour === 12) {
10929                hour = 0;
10930            }
10931            if (meridiem === 'रात्री') {
10932                return hour < 4 ? hour : hour + 12;
10933            } else if (meridiem === 'सकाळी') {
10934                return hour;
10935            } else if (meridiem === 'दुपारी') {
10936                return hour >= 10 ? hour : hour + 12;
10937            } else if (meridiem === 'सायंकाळी') {
10938                return hour + 12;
10939            }
10940        },
10941        meridiem: function (hour, minute, isLower) {
10942            if (hour < 4) {
10943                return 'रात्री';
10944            } else if (hour < 10) {
10945                return 'सकाळी';
10946            } else if (hour < 17) {
10947                return 'दुपारी';
10948            } else if (hour < 20) {
10949                return 'सायंकाळी';
10950            } else {
10951                return 'रात्री';
10952            }
10953        },
10954        week : {
10955            dow : 0, // Sunday is the first day of the week.
10956            doy : 6  // The week that contains Jan 6th is the first week of the year.
10957        }
10958    });
10959
10960    //! moment.js locale configuration
10961
10962    hooks.defineLocale('ms-my', {
10963        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
10964        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
10965        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
10966        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
10967        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
10968        longDateFormat : {
10969            LT : 'HH.mm',
10970            LTS : 'HH.mm.ss',
10971            L : 'DD/MM/YYYY',
10972            LL : 'D MMMM YYYY',
10973            LLL : 'D MMMM YYYY [pukul] HH.mm',
10974            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
10975        },
10976        meridiemParse: /pagi|tengahari|petang|malam/,
10977        meridiemHour: function (hour, meridiem) {
10978            if (hour === 12) {
10979                hour = 0;
10980            }
10981            if (meridiem === 'pagi') {
10982                return hour;
10983            } else if (meridiem === 'tengahari') {
10984                return hour >= 11 ? hour : hour + 12;
10985            } else if (meridiem === 'petang' || meridiem === 'malam') {
10986                return hour + 12;
10987            }
10988        },
10989        meridiem : function (hours, minutes, isLower) {
10990            if (hours < 11) {
10991                return 'pagi';
10992            } else if (hours < 15) {
10993                return 'tengahari';
10994            } else if (hours < 19) {
10995                return 'petang';
10996            } else {
10997                return 'malam';
10998            }
10999        },
11000        calendar : {
11001            sameDay : '[Hari ini pukul] LT',
11002            nextDay : '[Esok pukul] LT',
11003            nextWeek : 'dddd [pukul] LT',
11004            lastDay : '[Kelmarin pukul] LT',
11005            lastWeek : 'dddd [lepas pukul] LT',
11006            sameElse : 'L'
11007        },
11008        relativeTime : {
11009            future : 'dalam %s',
11010            past : '%s yang lepas',
11011            s : 'beberapa saat',
11012            ss : '%d saat',
11013            m : 'seminit',
11014            mm : '%d minit',
11015            h : 'sejam',
11016            hh : '%d jam',
11017            d : 'sehari',
11018            dd : '%d hari',
11019            M : 'sebulan',
11020            MM : '%d bulan',
11021            y : 'setahun',
11022            yy : '%d tahun'
11023        },
11024        week : {
11025            dow : 1, // Monday is the first day of the week.
11026            doy : 7  // The week that contains Jan 7th is the first week of the year.
11027        }
11028    });
11029
11030    //! moment.js locale configuration
11031
11032    hooks.defineLocale('ms', {
11033        months : 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split('_'),
11034        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),
11035        weekdays : 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),
11036        weekdaysShort : 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),
11037        weekdaysMin : 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),
11038        longDateFormat : {
11039            LT : 'HH.mm',
11040            LTS : 'HH.mm.ss',
11041            L : 'DD/MM/YYYY',
11042            LL : 'D MMMM YYYY',
11043            LLL : 'D MMMM YYYY [pukul] HH.mm',
11044            LLLL : 'dddd, D MMMM YYYY [pukul] HH.mm'
11045        },
11046        meridiemParse: /pagi|tengahari|petang|malam/,
11047        meridiemHour: function (hour, meridiem) {
11048            if (hour === 12) {
11049                hour = 0;
11050            }
11051            if (meridiem === 'pagi') {
11052                return hour;
11053            } else if (meridiem === 'tengahari') {
11054                return hour >= 11 ? hour : hour + 12;
11055            } else if (meridiem === 'petang' || meridiem === 'malam') {
11056                return hour + 12;
11057            }
11058        },
11059        meridiem : function (hours, minutes, isLower) {
11060            if (hours < 11) {
11061                return 'pagi';
11062            } else if (hours < 15) {
11063                return 'tengahari';
11064            } else if (hours < 19) {
11065                return 'petang';
11066            } else {
11067                return 'malam';
11068            }
11069        },
11070        calendar : {
11071            sameDay : '[Hari ini pukul] LT',
11072            nextDay : '[Esok pukul] LT',
11073            nextWeek : 'dddd [pukul] LT',
11074            lastDay : '[Kelmarin pukul] LT',
11075            lastWeek : 'dddd [lepas pukul] LT',
11076            sameElse : 'L'
11077        },
11078        relativeTime : {
11079            future : 'dalam %s',
11080            past : '%s yang lepas',
11081            s : 'beberapa saat',
11082            ss : '%d saat',
11083            m : 'seminit',
11084            mm : '%d minit',
11085            h : 'sejam',
11086            hh : '%d jam',
11087            d : 'sehari',
11088            dd : '%d hari',
11089            M : 'sebulan',
11090            MM : '%d bulan',
11091            y : 'setahun',
11092            yy : '%d tahun'
11093        },
11094        week : {
11095            dow : 1, // Monday is the first day of the week.
11096            doy : 7  // The week that contains Jan 7th is the first week of the year.
11097        }
11098    });
11099
11100    //! moment.js locale configuration
11101
11102    hooks.defineLocale('mt', {
11103        months : 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split('_'),
11104        monthsShort : 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),
11105        weekdays : 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split('_'),
11106        weekdaysShort : 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),
11107        weekdaysMin : 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),
11108        longDateFormat : {
11109            LT : 'HH:mm',
11110            LTS : 'HH:mm:ss',
11111            L : 'DD/MM/YYYY',
11112            LL : 'D MMMM YYYY',
11113            LLL : 'D MMMM YYYY HH:mm',
11114            LLLL : 'dddd, D MMMM YYYY HH:mm'
11115        },
11116        calendar : {
11117            sameDay : '[Illum fil-]LT',
11118            nextDay : '[Għada fil-]LT',
11119            nextWeek : 'dddd [fil-]LT',
11120            lastDay : '[Il-bieraħ fil-]LT',
11121            lastWeek : 'dddd [li għadda] [fil-]LT',
11122            sameElse : 'L'
11123        },
11124        relativeTime : {
11125            future : 'f’ %s',
11126            past : '%s ilu',
11127            s : 'ftit sekondi',
11128            ss : '%d sekondi',
11129            m : 'minuta',
11130            mm : '%d minuti',
11131            h : 'siegħa',
11132            hh : '%d siegħat',
11133            d : 'ġurnata',
11134            dd : '%d ġranet',
11135            M : 'xahar',
11136            MM : '%d xhur',
11137            y : 'sena',
11138            yy : '%d sni'
11139        },
11140        dayOfMonthOrdinalParse : /\d{1,2}º/,
11141        ordinal: '%dº',
11142        week : {
11143            dow : 1, // Monday is the first day of the week.
11144            doy : 4  // The week that contains Jan 4th is the first week of the year.
11145        }
11146    });
11147
11148    //! moment.js locale configuration
11149
11150    var symbolMap$c = {
11151        '1': '၁',
11152        '2': '၂',
11153        '3': '၃',
11154        '4': '၄',
11155        '5': '၅',
11156        '6': '၆',
11157        '7': '၇',
11158        '8': '၈',
11159        '9': '၉',
11160        '0': '၀'
11161    }, numberMap$b = {
11162        '၁': '1',
11163        '၂': '2',
11164        '၃': '3',
11165        '၄': '4',
11166        '၅': '5',
11167        '၆': '6',
11168        '၇': '7',
11169        '၈': '8',
11170        '၉': '9',
11171        '၀': '0'
11172    };
11173
11174    hooks.defineLocale('my', {
11175        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split('_'),
11176        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),
11177        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split('_'),
11178        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
11179        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),
11180
11181        longDateFormat: {
11182            LT: 'HH:mm',
11183            LTS: 'HH:mm:ss',
11184            L: 'DD/MM/YYYY',
11185            LL: 'D MMMM YYYY',
11186            LLL: 'D MMMM YYYY HH:mm',
11187            LLLL: 'dddd D MMMM YYYY HH:mm'
11188        },
11189        calendar: {
11190            sameDay: '[ယနေ.] LT [မှာ]',
11191            nextDay: '[မနက်ဖြန်] LT [မှာ]',
11192            nextWeek: 'dddd LT [မှာ]',
11193            lastDay: '[မနေ.က] LT [မှာ]',
11194            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',
11195            sameElse: 'L'
11196        },
11197        relativeTime: {
11198            future: 'လာမည့် %s မှာ',
11199            past: 'လွန်ခဲ့သော %s က',
11200            s: 'စက္ကန်.အနည်းငယ်',
11201            ss : '%d စက္ကန့်',
11202            m: 'တစ်မိနစ်',
11203            mm: '%d မိနစ်',
11204            h: 'တစ်နာရီ',
11205            hh: '%d နာရီ',
11206            d: 'တစ်ရက်',
11207            dd: '%d ရက်',
11208            M: 'တစ်လ',
11209            MM: '%d လ',
11210            y: 'တစ်နှစ်',
11211            yy: '%d နှစ်'
11212        },
11213        preparse: function (string) {
11214            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {
11215                return numberMap$b[match];
11216            });
11217        },
11218        postformat: function (string) {
11219            return string.replace(/\d/g, function (match) {
11220                return symbolMap$c[match];
11221            });
11222        },
11223        week: {
11224            dow: 1, // Monday is the first day of the week.
11225            doy: 4 // The week that contains Jan 4th is the first week of the year.
11226        }
11227    });
11228
11229    //! moment.js locale configuration
11230
11231    hooks.defineLocale('nb', {
11232        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
11233        //monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
11234		monthsShort : 'jan_feb_mars_april_mai_juni_juli_aug_sep_okt_nov_des'.split('_'),
11235        monthsParseExact : true,
11236        weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
11237        weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),
11238        weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
11239        weekdaysParseExact : true,
11240        longDateFormat : {
11241            LT : 'HH:mm',
11242            LTS : 'HH:mm:ss',
11243            L : 'DD.MM.YYYY',
11244            LL : 'D. MMMM YYYY',
11245            LLL : 'D. MMMM YYYY [kl.] HH:mm',
11246            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
11247        },
11248        calendar : {
11249            sameDay: '[i dag kl.] LT',
11250            nextDay: '[i morgen kl.] LT',
11251            nextWeek: 'dddd [kl.] LT',
11252            lastDay: '[i går kl.] LT',
11253            lastWeek: '[forrige] dddd [kl.] LT',
11254            sameElse: 'L'
11255        },
11256        relativeTime : {
11257            future : 'om %s',
11258            past : '%s siden',
11259            s : 'noen sekunder',
11260            ss : '%d sekunder',
11261            m : 'ett minutt',
11262            mm : '%d minutter',
11263            h : 'en time',
11264            hh : '%d timer',
11265            d : 'en dag',
11266            dd : '%d dager',
11267            M : 'en måned',
11268            MM : '%d måneder',
11269            y : 'ett år',
11270            yy : '%d år'
11271        },
11272        dayOfMonthOrdinalParse: /\d{1,2}\./,
11273        ordinal : '%d.',
11274        week : {
11275            dow : 1, // Monday is the first day of the week.
11276            doy : 4  // The week that contains Jan 4th is the first week of the year.
11277        }
11278    });
11279
11280    //! moment.js locale configuration
11281
11282    var symbolMap$d = {
11283        '1': '१',
11284        '2': '२',
11285        '3': '३',
11286        '4': '४',
11287        '5': '५',
11288        '6': '६',
11289        '7': '७',
11290        '8': '८',
11291        '9': '९',
11292        '0': '०'
11293    },
11294    numberMap$c = {
11295        '१': '1',
11296        '२': '2',
11297        '३': '3',
11298        '४': '4',
11299        '५': '5',
11300        '६': '6',
11301        '७': '7',
11302        '८': '8',
11303        '९': '9',
11304        '०': '0'
11305    };
11306
11307    hooks.defineLocale('ne', {
11308        months : 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split('_'),
11309        monthsShort : 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split('_'),
11310        monthsParseExact : true,
11311        weekdays : 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split('_'),
11312        weekdaysShort : 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),
11313        weekdaysMin : 'आ._सो._मं._बु._बि._शु._श.'.split('_'),
11314        weekdaysParseExact : true,
11315        longDateFormat : {
11316            LT : 'Aको h:mm बजे',
11317            LTS : 'Aको h:mm:ss बजे',
11318            L : 'DD/MM/YYYY',
11319            LL : 'D MMMM YYYY',
11320            LLL : 'D MMMM YYYY, Aको h:mm बजे',
11321            LLLL : 'dddd, D MMMM YYYY, Aको h:mm बजे'
11322        },
11323        preparse: function (string) {
11324            return string.replace(/[१२३४५६७८९०]/g, function (match) {
11325                return numberMap$c[match];
11326            });
11327        },
11328        postformat: function (string) {
11329            return string.replace(/\d/g, function (match) {
11330                return symbolMap$d[match];
11331            });
11332        },
vendor: 70,042 bytes, lines 11333-13044
11333        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,
11334        meridiemHour : function (hour, meridiem) {
11335            if (hour === 12) {
11336                hour = 0;
11337            }
11338            if (meridiem === 'राति') {
11339                return hour < 4 ? hour : hour + 12;
11340            } else if (meridiem === 'बिहान') {
11341                return hour;
11342            } else if (meridiem === 'दिउँसो') {
11343                return hour >= 10 ? hour : hour + 12;
11344            } else if (meridiem === 'साँझ') {
11345                return hour + 12;
11346            }
11347        },
11348        meridiem : function (hour, minute, isLower) {
11349            if (hour < 3) {
11350                return 'राति';
11351            } else if (hour < 12) {
11352                return 'बिहान';
11353            } else if (hour < 16) {
11354                return 'दिउँसो';
11355            } else if (hour < 20) {
11356                return 'साँझ';
11357            } else {
11358                return 'राति';
11359            }
11360        },
11361        calendar : {
11362            sameDay : '[आज] LT',
11363            nextDay : '[भोलि] LT',
11364            nextWeek : '[आउँदो] dddd[,] LT',
11365            lastDay : '[हिजो] LT',
11366            lastWeek : '[गएको] dddd[,] LT',
11367            sameElse : 'L'
11368        },
11369        relativeTime : {
11370            future : '%sमा',
11371            past : '%s अगाडि',
11372            s : 'केही क्षण',
11373            ss : '%d सेकेण्ड',
11374            m : 'एक मिनेट',
11375            mm : '%d मिनेट',
11376            h : 'एक घण्टा',
11377            hh : '%d घण्टा',
11378            d : 'एक दिन',
11379            dd : '%d दिन',
11380            M : 'एक महिना',
11381            MM : '%d महिना',
11382            y : 'एक बर्ष',
11383            yy : '%d बर्ष'
11384        },
11385        week : {
11386            dow : 0, // Sunday is the first day of the week.
11387            doy : 6  // The week that contains Jan 6th is the first week of the year.
11388        }
11389    });
11390
11391    //! moment.js locale configuration
11392
11393    //var monthsShortWithDots$1 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
11394      //  monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
11395		
11396	var monthsShortWithDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
11397        monthsShortWithoutDots$1 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
11398
11399    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];
11400    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;
11401
11402    hooks.defineLocale('nl-be', {
11403        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
11404        monthsShort : function (m, format) {
11405            if (!m) {
11406                return monthsShortWithDots$1;
11407            } else if (/-MMM-/.test(format)) {
11408                return monthsShortWithoutDots$1[m.month()];
11409            } else {
11410                return monthsShortWithDots$1[m.month()];
11411            }
11412        },
11413
11414        monthsRegex: monthsRegex$5,
11415        monthsShortRegex: monthsRegex$5,
11416        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
11417        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
11418
11419        monthsParse : monthsParse$4,
11420        longMonthsParse : monthsParse$4,
11421        shortMonthsParse : monthsParse$4,
11422
11423        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
11424        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
11425        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),
11426        weekdaysParseExact : true,
11427        longDateFormat : {
11428            LT : 'HH:mm',
11429            LTS : 'HH:mm:ss',
11430            L : 'DD/MM/YYYY',
11431            LL : 'D MMMM YYYY',
11432            LLL : 'D MMMM YYYY HH:mm',
11433            LLLL : 'dddd D MMMM YYYY HH:mm'
11434        },
11435        calendar : {
11436            sameDay: '[vandaag om] LT',
11437            nextDay: '[morgen om] LT',
11438            nextWeek: 'dddd [om] LT',
11439            lastDay: '[gisteren om] LT',
11440            lastWeek: '[afgelopen] dddd [om] LT',
11441            sameElse: 'L'
11442        },
11443        relativeTime : {
11444            future : 'over %s',
11445            past : '%s geleden',
11446            s : 'een paar seconden',
11447            ss : '%d seconden',
11448            m : 'één minuut',
11449            mm : '%d minuten',
11450            h : 'één uur',
11451            hh : '%d uur',
11452            d : 'één dag',
11453            dd : '%d dagen',
11454            M : 'één maand',
11455            MM : '%d maanden',
11456            y : 'één jaar',
11457            yy : '%d jaar'
11458        },
11459        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
11460        ordinal : function (number) {
11461            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
11462        },
11463        week : {
11464            dow : 1, // Monday is the first day of the week.
11465            doy : 4  // The week that contains Jan 4th is the first week of the year.
11466        }
11467    });
11468
11469    //! moment.js locale configuration
11470
11471    //var monthsShortWithDots$2 = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
11472    //    monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
11473		
11474	var monthsShortWithDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),
11475        monthsShortWithoutDots$2 = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
11476
11477    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];
11478    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;
11479
11480    hooks.defineLocale('nl', {
11481        months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
11482        monthsShort : function (m, format) {
11483            if (!m) {
11484                return monthsShortWithDots$2;
11485            } else if (/-MMM-/.test(format)) {
11486                return monthsShortWithoutDots$2[m.month()];
11487            } else {
11488                return monthsShortWithDots$2[m.month()];
11489            }
11490        },
11491
11492        monthsRegex: monthsRegex$6,
11493        monthsShortRegex: monthsRegex$6,
11494        monthsStrictRegex: /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,
11495        monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
11496
11497        monthsParse : monthsParse$5,
11498        longMonthsParse : monthsParse$5,
11499        shortMonthsParse : monthsParse$5,
11500
11501        weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
11502        weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
11503        weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),
11504        weekdaysParseExact : true,
11505        longDateFormat : {
11506            LT : 'HH:mm',
11507            LTS : 'HH:mm:ss',
11508            L : 'DD-MM-YYYY',
11509            LL : 'D MMMM YYYY',
11510            LLL : 'D MMMM YYYY HH:mm',
11511            LLLL : 'dddd D MMMM YYYY HH:mm'
11512        },
11513        calendar : {
11514            sameDay: '[vandaag om] LT',
11515            nextDay: '[morgen om] LT',
11516            nextWeek: 'dddd [om] LT',
11517            lastDay: '[gisteren om] LT',
11518            lastWeek: '[afgelopen] dddd [om] LT',
11519            sameElse: 'L'
11520        },
11521        relativeTime : {
11522            future : 'over %s',
11523            past : '%s geleden',
11524            s : 'een paar seconden',
11525            ss : '%d seconden',
11526            m : 'één minuut',
11527            mm : '%d minuten',
11528            h : 'één uur',
11529            hh : '%d uur',
11530            d : 'één dag',
11531            dd : '%d dagen',
11532            M : 'één maand',
11533            MM : '%d maanden',
11534            y : 'één jaar',
11535            yy : '%d jaar'
11536        },
11537        dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
11538        ordinal : function (number) {
11539            return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
11540        },
11541        week : {
11542            dow : 1, // Monday is the first day of the week.
11543            doy : 4  // The week that contains Jan 4th is the first week of the year.
11544        }
11545    });
11546
11547    //! moment.js locale configuration
11548
11549    hooks.defineLocale('nn', {
11550        months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
11551        monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
11552        weekdays : 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),
11553        weekdaysShort : 'sun_mån_tys_ons_tor_fre_lau'.split('_'),
11554        weekdaysMin : 'su_må_ty_on_to_fr_lø'.split('_'),
11555        longDateFormat : {
11556            LT : 'HH:mm',
11557            LTS : 'HH:mm:ss',
11558            L : 'DD.MM.YYYY',
11559            LL : 'D. MMMM YYYY',
11560            LLL : 'D. MMMM YYYY [kl.] H:mm',
11561            LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
11562        },
11563        calendar : {
11564            sameDay: '[I dag klokka] LT',
11565            nextDay: '[I morgon klokka] LT',
11566            nextWeek: 'dddd [klokka] LT',
11567            lastDay: '[I går klokka] LT',
11568            lastWeek: '[Føregåande] dddd [klokka] LT',
11569            sameElse: 'L'
11570        },
11571        relativeTime : {
11572            future : 'om %s',
11573            past : '%s sidan',
11574            s : 'nokre sekund',
11575            ss : '%d sekund',
11576            m : 'eit minutt',
11577            mm : '%d minutt',
11578            h : 'ein time',
11579            hh : '%d timar',
11580            d : 'ein dag',
11581            dd : '%d dagar',
11582            M : 'ein månad',
11583            MM : '%d månader',
11584            y : 'eit år',
11585            yy : '%d år'
11586        },
11587        dayOfMonthOrdinalParse: /\d{1,2}\./,
11588        ordinal : '%d.',
11589        week : {
11590            dow : 1, // Monday is the first day of the week.
11591            doy : 4  // The week that contains Jan 4th is the first week of the year.
11592        }
11593    });
11594
11595    //! moment.js locale configuration
11596
11597    var symbolMap$e = {
11598        '1': 'à©§',
11599        '2': '੨',
11600        '3': 'à©©',
11601        '4': '੪',
11602        '5': 'à©«',
11603        '6': '੬',
11604        '7': 'à©­',
11605        '8': 'à©®',
11606        '9': '੯',
11607        '0': '੦'
11608    },
11609    numberMap$d = {
11610        'à©§': '1',
11611        '੨': '2',
11612        'à©©': '3',
11613        '੪': '4',
11614        'à©«': '5',
11615        '੬': '6',
11616        'à©­': '7',
11617        'à©®': '8',
11618        '੯': '9',
11619        '੦': '0'
11620    };
11621
11622    hooks.defineLocale('pa-in', {
11623        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.
11624        months : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
11625        monthsShort : 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split('_'),
11626        weekdays : 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split('_'),
11627        weekdaysShort : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
11628        weekdaysMin : 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),
11629        longDateFormat : {
11630            LT : 'A h:mm ਵਜੇ',
11631            LTS : 'A h:mm:ss ਵਜੇ',
11632            L : 'DD/MM/YYYY',
11633            LL : 'D MMMM YYYY',
11634            LLL : 'D MMMM YYYY, A h:mm ਵਜੇ',
11635            LLLL : 'dddd, D MMMM YYYY, A h:mm ਵਜੇ'
11636        },
11637        calendar : {
11638            sameDay : '[ਅਜ] LT',
11639            nextDay : '[ਕਲ] LT',
11640            nextWeek : '[ਅਗਲਾ] dddd, LT',
11641            lastDay : '[ਕਲ] LT',
11642            lastWeek : '[ਪਿਛਲੇ] dddd, LT',
11643            sameElse : 'L'
11644        },
11645        relativeTime : {
11646            future : '%s ਵਿੱਚ',
11647            past : '%s ਪਿਛਲੇ',
11648            s : 'ਕੁਝ ਸਕਿੰਟ',
11649            ss : '%d ਸਕਿੰਟ',
11650            m : 'ਇਕ ਮਿੰਟ',
11651            mm : '%d ਮਿੰਟ',
11652            h : 'ਇੱਕ ਘੰਟਾ',
11653            hh : '%d ਘੰਟੇ',
11654            d : 'ਇੱਕ ਦਿਨ',
11655            dd : '%d ਦਿਨ',
11656            M : 'ਇੱਕ ਮਹੀਨਾ',
11657            MM : '%d ਮਹੀਨੇ',
11658            y : 'ਇੱਕ ਸਾਲ',
11659            yy : '%d ਸਾਲ'
11660        },
11661        preparse: function (string) {
11662            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {
11663                return numberMap$d[match];
11664            });
11665        },
11666        postformat: function (string) {
11667            return string.replace(/\d/g, function (match) {
11668                return symbolMap$e[match];
11669            });
11670        },
11671        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists
11672        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.
11673        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,
11674        meridiemHour : function (hour, meridiem) {
11675            if (hour === 12) {
11676                hour = 0;
11677            }
11678            if (meridiem === 'ਰਾਤ') {
11679                return hour < 4 ? hour : hour + 12;
11680            } else if (meridiem === 'ਸਵੇਰ') {
11681                return hour;
11682            } else if (meridiem === 'ਦੁਪਹਿਰ') {
11683                return hour >= 10 ? hour : hour + 12;
11684            } else if (meridiem === 'ਸ਼ਾਮ') {
11685                return hour + 12;
11686            }
11687        },
11688        meridiem : function (hour, minute, isLower) {
11689            if (hour < 4) {
11690                return 'ਰਾਤ';
11691            } else if (hour < 10) {
11692                return 'ਸਵੇਰ';
11693            } else if (hour < 17) {
11694                return 'ਦੁਪਹਿਰ';
11695            } else if (hour < 20) {
11696                return 'ਸ਼ਾਮ';
11697            } else {
11698                return 'ਰਾਤ';
11699            }
11700        },
11701        week : {
11702            dow : 0, // Sunday is the first day of the week.
11703            doy : 6  // The week that contains Jan 6th is the first week of the year.
11704        }
11705    });
11706
11707    //! moment.js locale configuration
11708
11709    var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),
11710        monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
11711    function plural$3(n) {
11712        return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
11713    }
11714    function translate$8(number, withoutSuffix, key) {
11715        var result = number + ' ';
11716        switch (key) {
11717            case 'ss':
11718                return result + (plural$3(number) ? 'sekundy' : 'sekund');
11719            case 'm':
11720                return withoutSuffix ? 'minuta' : 'minutę';
11721            case 'mm':
11722                return result + (plural$3(number) ? 'minuty' : 'minut');
11723            case 'h':
11724                return withoutSuffix  ? 'godzina'  : 'godzinę';
11725            case 'hh':
11726                return result + (plural$3(number) ? 'godziny' : 'godzin');
11727            case 'MM':
11728                return result + (plural$3(number) ? 'miesiące' : 'miesięcy');
11729            case 'yy':
11730                return result + (plural$3(number) ? 'lata' : 'lat');
11731        }
11732    }
11733
11734    hooks.defineLocale('pl', {
11735        months : function (momentToFormat, format) {
11736            if (!momentToFormat) {
11737                return monthsNominative;
11738            } else if (format === '') {
11739                // Hack: if format empty we know this is used to generate
11740                // RegExp by moment. Give then back both valid forms of months
11741                // in RegExp ready format.
11742                return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
11743            } else if (/D MMMM/.test(format)) {
11744                return monthsSubjective[momentToFormat.month()];
11745            } else {
11746                return monthsNominative[momentToFormat.month()];
11747            }
11748        },
11749        monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
11750        weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
11751        weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
11752        weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
11753        longDateFormat : {
11754            LT : 'HH:mm',
11755            LTS : 'HH:mm:ss',
11756            L : 'DD.MM.YYYY',
11757            LL : 'D MMMM YYYY',
11758            LLL : 'D MMMM YYYY HH:mm',
11759            LLLL : 'dddd, D MMMM YYYY HH:mm'
11760        },
11761        calendar : {
11762            sameDay: '[Dziś o] LT',
11763            nextDay: '[Jutro o] LT',
11764            nextWeek: function () {
11765                switch (this.day()) {
11766                    case 0:
11767                        return '[W niedzielę o] LT';
11768
11769                    case 2:
11770                        return '[We wtorek o] LT';
11771
11772                    case 3:
11773                        return '[W środę o] LT';
11774
11775                    case 6:
11776                        return '[W sobotę o] LT';
11777
11778                    default:
11779                        return '[W] dddd [o] LT';
11780                }
11781            },
11782            lastDay: '[Wczoraj o] LT',
11783            lastWeek: function () {
11784                switch (this.day()) {
11785                    case 0:
11786                        return '[W zeszłą niedzielę o] LT';
11787                    case 3:
11788                        return '[W zeszłą środę o] LT';
11789                    case 6:
11790                        return '[W zeszłą sobotę o] LT';
11791                    default:
11792                        return '[W zeszły] dddd [o] LT';
11793                }
11794            },
11795            sameElse: 'L'
11796        },
11797        relativeTime : {
11798            future : 'za %s',
11799            past : '%s temu',
11800            s : 'kilka sekund',
11801            ss : translate$8,
11802            m : translate$8,
11803            mm : translate$8,
11804            h : translate$8,
11805            hh : translate$8,
11806            d : '1 dzień',
11807            dd : '%d dni',
11808            M : 'miesiąc',
11809            MM : translate$8,
11810            y : 'rok',
11811            yy : translate$8
11812        },
11813        dayOfMonthOrdinalParse: /\d{1,2}\./,
11814        ordinal : '%d.',
11815        week : {
11816            dow : 1, // Monday is the first day of the week.
11817            doy : 4  // The week that contains Jan 4th is the first week of the year.
11818        }
11819    });
11820
11821    //! moment.js locale configuration
11822
11823    hooks.defineLocale('pt-br', {
11824        months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
11825        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
11826        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
11827        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
11828        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
11829        weekdaysParseExact : true,
11830        longDateFormat : {
11831            LT : 'HH:mm',
11832            LTS : 'HH:mm:ss',
11833            L : 'DD/MM/YYYY',
11834            LL : 'D [de] MMMM [de] YYYY',
11835            LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
11836            LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
11837        },
11838        calendar : {
11839            sameDay: '[Hoje às] LT',
11840            nextDay: '[Amanhã às] LT',
11841            nextWeek: 'dddd [às] LT',
11842            lastDay: '[Ontem às] LT',
11843            lastWeek: function () {
11844                return (this.day() === 0 || this.day() === 6) ?
11845                    '[Último] dddd [às] LT' : // Saturday + Sunday
11846                    '[Última] dddd [às] LT'; // Monday - Friday
11847            },
11848            sameElse: 'L'
11849        },
11850        relativeTime : {
11851            future : 'em %s',
11852            past : 'há %s',
11853            s : 'poucos segundos',
11854            ss : '%d segundos',
11855            m : 'um minuto',
11856            mm : '%d minutos',
11857            h : 'uma hora',
11858            hh : '%d horas',
11859            d : 'um dia',
11860            dd : '%d dias',
11861            M : 'um mês',
11862            MM : '%d meses',
11863            y : 'um ano',
11864            yy : '%d anos'
11865        },
11866        dayOfMonthOrdinalParse: /\d{1,2}º/,
11867        ordinal : '%dº'
11868    });
11869
11870    //! moment.js locale configuration
11871
11872    hooks.defineLocale('pt', {
11873        months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
11874        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
11875        weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
11876        weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
11877        weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
11878        weekdaysParseExact : true,
11879        longDateFormat : {
11880            LT : 'HH:mm',
11881            LTS : 'HH:mm:ss',
11882            L : 'DD/MM/YYYY',
11883            LL : 'D [de] MMMM [de] YYYY',
11884            LLL : 'D [de] MMMM [de] YYYY HH:mm',
11885            LLLL : 'dddd, D [de] MMMM [de] YYYY HH:mm'
11886        },
11887        calendar : {
11888            sameDay: '[Hoje às] LT',
11889            nextDay: '[Amanhã às] LT',
11890            nextWeek: 'dddd [às] LT',
11891            lastDay: '[Ontem às] LT',
11892            lastWeek: function () {
11893                return (this.day() === 0 || this.day() === 6) ?
11894                    '[Último] dddd [às] LT' : // Saturday + Sunday
11895                    '[Última] dddd [às] LT'; // Monday - Friday
11896            },
11897            sameElse: 'L'
11898        },
11899        relativeTime : {
11900            future : 'em %s',
11901            past : 'há %s',
11902            s : 'segundos',
11903            ss : '%d segundos',
11904            m : 'um minuto',
11905            mm : '%d minutos',
11906            h : 'uma hora',
11907            hh : '%d horas',
11908            d : 'um dia',
11909            dd : '%d dias',
11910            M : 'um mês',
11911            MM : '%d meses',
11912            y : 'um ano',
11913            yy : '%d anos'
11914        },
11915        dayOfMonthOrdinalParse: /\d{1,2}º/,
11916        ordinal : '%dº',
11917        week : {
11918            dow : 1, // Monday is the first day of the week.
11919            doy : 4  // The week that contains Jan 4th is the first week of the year.
11920        }
11921    });
11922
11923    //! moment.js locale configuration
11924
11925    function relativeTimeWithPlural$2(number, withoutSuffix, key) {
11926        var format = {
11927                'ss': 'secunde',
11928                'mm': 'minute',
11929                'hh': 'ore',
11930                'dd': 'zile',
11931                'MM': 'luni',
11932                'yy': 'ani'
11933            },
11934            separator = ' ';
11935        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
11936            separator = ' de ';
11937        }
11938        return number + separator + format[key];
11939    }
11940
11941    hooks.defineLocale('ro', {
11942        months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
11943        monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
11944        monthsParseExact: true,
11945        weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
11946        weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
11947        weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
11948        longDateFormat : {
11949            LT : 'H:mm',
11950            LTS : 'H:mm:ss',
11951            L : 'DD.MM.YYYY',
11952            LL : 'D MMMM YYYY',
11953            LLL : 'D MMMM YYYY H:mm',
11954            LLLL : 'dddd, D MMMM YYYY H:mm'
11955        },
11956        calendar : {
11957            sameDay: '[azi la] LT',
11958            nextDay: '[mâine la] LT',
11959            nextWeek: 'dddd [la] LT',
11960            lastDay: '[ieri la] LT',
11961            lastWeek: '[fosta] dddd [la] LT',
11962            sameElse: 'L'
11963        },
11964        relativeTime : {
11965            future : 'peste %s',
11966            past : '%s în urmă',
11967            s : 'câteva secunde',
11968            ss : relativeTimeWithPlural$2,
11969            m : 'un minut',
11970            mm : relativeTimeWithPlural$2,
11971            h : 'o oră',
11972            hh : relativeTimeWithPlural$2,
11973            d : 'o zi',
11974            dd : relativeTimeWithPlural$2,
11975            M : 'o lună',
11976            MM : relativeTimeWithPlural$2,
11977            y : 'un an',
11978            yy : relativeTimeWithPlural$2
11979        },
11980        week : {
11981            dow : 1, // Monday is the first day of the week.
11982            doy : 7  // The week that contains Jan 7th is the first week of the year.
11983        }
11984    });
11985
11986    //! moment.js locale configuration
11987
11988    function plural$4(word, num) {
11989        var forms = word.split('_');
11990        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]);
11991    }
11992    function relativeTimeWithPlural$3(number, withoutSuffix, key) {
11993        var format = {
11994            'ss': withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',
11995            'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
11996            'hh': 'час_часа_часов',
11997            'dd': 'день_дня_дней',
11998            'MM': 'месяц_месяца_месяцев',
11999            'yy': 'год_года_лет'
12000        };
12001        if (key === 'm') {
12002            return withoutSuffix ? 'минута' : 'минуту';
12003        }
12004        else {
12005            return number + ' ' + plural$4(format[key], +number);
12006        }
12007    }
12008    var monthsParse$6 = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];
12009
12010    // http://new.gramota.ru/spravka/rules/139-prop : § 103
12011    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
12012    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
12013    hooks.defineLocale('ru', {
12014        months : {
12015            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),
12016            standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')
12017        },
12018        monthsShort : {
12019            // по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ?
12020            //format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),
12021			format: 'янв_февр_мар_апр_мая_июня_июля_авг_сент_окт_нояб_дек'.split('_'),
12022            //standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')
12023			standalone: 'янв_февр_март_апр_май_июнь_июль_авг_сент_окт_нояб_дек'.split('_')
12024        },
12025        weekdays : {
12026            standalone: 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split('_'),
12027            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split('_'),
12028            isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/
12029        },
12030        weekdaysShort : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
12031        weekdaysMin : 'вс_пн_вт_ср_чт_пт_сб'.split('_'),
12032        monthsParse : monthsParse$6,
12033        longMonthsParse : monthsParse$6,
12034        shortMonthsParse : monthsParse$6,
12035
12036        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
12037        monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
12038
12039        // копия предыдущего
12040        monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
12041
12042        // полные названия с падежами
12043        monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
12044
12045        // Выражение, которое соотвествует только сокращённым формам
12046        monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
12047        longDateFormat : {
12048            LT : 'H:mm',
12049            LTS : 'H:mm:ss',
12050            L : 'DD.MM.YYYY',
12051            LL : 'D MMMM YYYY г.',
12052            LLL : 'D MMMM YYYY г., H:mm',
12053            LLLL : 'dddd, D MMMM YYYY г., H:mm'
12054        },
12055        calendar : {
12056            sameDay: '[Сегодня, в] LT',
12057            nextDay: '[Завтра, в] LT',
12058            lastDay: '[Вчера, в] LT',
12059            nextWeek: function (now) {
12060                if (now.week() !== this.week()) {
12061                    switch (this.day()) {
12062                        case 0:
12063                            return '[В следующее] dddd, [в] LT';
12064                        case 1:
12065                        case 2:
12066                        case 4:
12067                            return '[В следующий] dddd, [в] LT';
12068                        case 3:
12069                        case 5:
12070                        case 6:
12071                            return '[В следующую] dddd, [в] LT';
12072                    }
12073                } else {
12074                    if (this.day() === 2) {
12075                        return '[Во] dddd, [в] LT';
12076                    } else {
12077                        return '[В] dddd, [в] LT';
12078                    }
12079                }
12080            },
12081            lastWeek: function (now) {
12082                if (now.week() !== this.week()) {
12083                    switch (this.day()) {
12084                        case 0:
12085                            return '[В прошлое] dddd, [в] LT';
12086                        case 1:
12087                        case 2:
12088                        case 4:
12089                            return '[В прошлый] dddd, [в] LT';
12090                        case 3:
12091                        case 5:
12092                        case 6:
12093                            return '[В прошлую] dddd, [в] LT';
12094                    }
12095                } else {
12096                    if (this.day() === 2) {
12097                        return '[Во] dddd, [в] LT';
12098                    } else {
12099                        return '[В] dddd, [в] LT';
12100                    }
12101                }
12102            },
12103            sameElse: 'L'
12104        },
12105        relativeTime : {
12106            future : 'через %s',
12107            past : '%s назад',
12108            s : 'несколько секунд',
12109            ss : relativeTimeWithPlural$3,
12110            m : relativeTimeWithPlural$3,
12111            mm : relativeTimeWithPlural$3,
12112            h : 'час',
12113            hh : relativeTimeWithPlural$3,
12114            d : 'день',
12115            dd : relativeTimeWithPlural$3,
12116            M : 'месяц',
12117            MM : relativeTimeWithPlural$3,
12118            y : 'год',
12119            yy : relativeTimeWithPlural$3
12120        },
12121        meridiemParse: /ночи|утра|дня|вечера/i,
12122        isPM : function (input) {
12123            return /^(дня|вечера)$/.test(input);
12124        },
12125        meridiem : function (hour, minute, isLower) {
12126            if (hour < 4) {
12127                return 'ночи';
12128            } else if (hour < 12) {
12129                return 'утра';
12130            } else if (hour < 17) {
12131                return 'дня';
12132            } else {
12133                return 'вечера';
12134            }
12135        },
12136        dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
12137        ordinal: function (number, period) {
12138            switch (period) {
12139                case 'M':
12140                case 'd':
12141                case 'DDD':
12142                    return number + '-й';
12143                case 'D':
12144                    return number + '-го';
12145                case 'w':
12146                case 'W':
12147                    return number + '-я';
12148                default:
12149                    return number;
12150            }
12151        },
12152        week : {
12153            dow : 1, // Monday is the first day of the week.
12154            doy : 4  // The week that contains Jan 4th is the first week of the year.
12155        }
12156    });
12157
12158    //! moment.js locale configuration
12159
12160    var months$8 = [
12161        'جنوري',
12162        'فيبروري',
12163        'مارچ',
12164        'اپريل',
12165        'مئي',
12166        'جون',
12167        'جولاءِ',
12168        'آگسٽ',
12169        'سيپٽمبر',
12170        'آڪٽوبر',
12171        'نومبر',
12172        'ڊسمبر'
12173    ];
12174    var days$1 = [
12175        'آچر',
12176        'سومر',
12177        'اڱارو',
12178        'اربع',
12179        'خميس',
12180        'جمع',
12181        'ڇنڇر'
12182    ];
12183
12184    hooks.defineLocale('sd', {
12185        months : months$8,
12186        monthsShort : months$8,
12187        weekdays : days$1,
12188        weekdaysShort : days$1,
12189        weekdaysMin : days$1,
12190        longDateFormat : {
12191            LT : 'HH:mm',
12192            LTS : 'HH:mm:ss',
12193            L : 'DD/MM/YYYY',
12194            LL : 'D MMMM YYYY',
12195            LLL : 'D MMMM YYYY HH:mm',
12196            LLLL : 'dddd، D MMMM YYYY HH:mm'
12197        },
12198        meridiemParse: /صبح|شام/,
12199        isPM : function (input) {
12200            return 'شام' === input;
12201        },
12202        meridiem : function (hour, minute, isLower) {
12203            if (hour < 12) {
12204                return 'صبح';
12205            }
12206            return 'شام';
12207        },
12208        calendar : {
12209            sameDay : '[اڄ] LT',
12210            nextDay : '[سڀاڻي] LT',
12211            nextWeek : 'dddd [اڳين هفتي تي] LT',
12212            lastDay : '[ڪالهه] LT',
12213            lastWeek : '[گزريل هفتي] dddd [تي] LT',
12214            sameElse : 'L'
12215        },
12216        relativeTime : {
12217            future : '%s پوء',
12218            past : '%s اڳ',
12219            s : 'چند سيڪنڊ',
12220            ss : '%d سيڪنڊ',
12221            m : 'هڪ منٽ',
12222            mm : '%d منٽ',
12223            h : 'هڪ ڪلاڪ',
12224            hh : '%d ڪلاڪ',
12225            d : 'هڪ ڏينهن',
12226            dd : '%d ڏينهن',
12227            M : 'هڪ مهينو',
12228            MM : '%d مهينا',
12229            y : 'هڪ سال',
12230            yy : '%d سال'
12231        },
12232        preparse: function (string) {
12233            return string.replace(/،/g, ',');
12234        },
12235        postformat: function (string) {
12236            return string.replace(/,/g, '،');
12237        },
12238        week : {
12239            dow : 1, // Monday is the first day of the week.
12240            doy : 4  // The week that contains Jan 4th is the first week of the year.
12241        }
12242    });
12243
12244    //! moment.js locale configuration
12245
12246    hooks.defineLocale('se', {
12247        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('_'),
12248        monthsShort : 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),
12249        weekdays : 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split('_'),
12250        weekdaysShort : 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),
12251        weekdaysMin : 's_v_m_g_d_b_L'.split('_'),
12252        longDateFormat : {
12253            LT : 'HH:mm',
12254            LTS : 'HH:mm:ss',
12255            L : 'DD.MM.YYYY',
12256            LL : 'MMMM D. [b.] YYYY',
12257            LLL : 'MMMM D. [b.] YYYY [ti.] HH:mm',
12258            LLLL : 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm'
12259        },
12260        calendar : {
12261            sameDay: '[otne ti] LT',
12262            nextDay: '[ihttin ti] LT',
12263            nextWeek: 'dddd [ti] LT',
12264            lastDay: '[ikte ti] LT',
12265            lastWeek: '[ovddit] dddd [ti] LT',
12266            sameElse: 'L'
12267        },
12268        relativeTime : {
12269            future : '%s geažes',
12270            past : 'maŋit %s',
12271            s : 'moadde sekunddat',
12272            ss: '%d sekunddat',
12273            m : 'okta minuhta',
12274            mm : '%d minuhtat',
12275            h : 'okta diimmu',
12276            hh : '%d diimmut',
12277            d : 'okta beaivi',
12278            dd : '%d beaivvit',
12279            M : 'okta mánnu',
12280            MM : '%d mánut',
12281            y : 'okta jahki',
12282            yy : '%d jagit'
12283        },
12284        dayOfMonthOrdinalParse: /\d{1,2}\./,
12285        ordinal : '%d.',
12286        week : {
12287            dow : 1, // Monday is the first day of the week.
12288            doy : 4  // The week that contains Jan 4th is the first week of the year.
12289        }
12290    });
12291
12292    //! moment.js locale configuration
12293
12294    /*jshint -W100*/
12295    hooks.defineLocale('si', {
12296        months : 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split('_'),
12297        monthsShort : 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split('_'),
12298        weekdays : 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split('_'),
12299        weekdaysShort : 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),
12300        weekdaysMin : 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),
12301        weekdaysParseExact : true,
12302        longDateFormat : {
12303            LT : 'a h:mm',
12304            LTS : 'a h:mm:ss',
12305            L : 'YYYY/MM/DD',
12306            LL : 'YYYY MMMM D',
12307            LLL : 'YYYY MMMM D, a h:mm',
12308            LLLL : 'YYYY MMMM D [වැනි] dddd, a h:mm:ss'
12309        },
12310        calendar : {
12311            sameDay : '[අද] LT[ට]',
12312            nextDay : '[හෙට] LT[ට]',
12313            nextWeek : 'dddd LT[à¶§]',
12314            lastDay : '[ඊයේ] LT[ට]',
12315            lastWeek : '[පසුගිය] dddd LT[ට]',
12316            sameElse : 'L'
12317        },
12318        relativeTime : {
12319            future : '%sකින්',
12320            past : '%sකට පෙර',
12321            s : 'තත්පර කිහිපය',
12322            ss : 'තත්පර %d',
12323            m : 'මිනිත්තුව',
12324            mm : 'මිනිත්තු %d',
12325            h : 'පැය',
12326            hh : 'පැය %d',
12327            d : 'දිනය',
12328            dd : 'දින %d',
12329            M : 'මාසය',
12330            MM : 'මාස %d',
12331            y : 'වසර',
12332            yy : 'වසර %d'
12333        },
12334        dayOfMonthOrdinalParse: /\d{1,2} වැනි/,
12335        ordinal : function (number) {
12336            return number + ' වැනි';
12337        },
12338        meridiemParse : /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,
12339        isPM : function (input) {
12340            return input === 'ප.ව.' || input === 'පස් වරු';
12341        },
12342        meridiem : function (hours, minutes, isLower) {
12343            if (hours > 11) {
12344                return isLower ? 'ප.ව.' : 'පස් වරු';
12345            } else {
12346                return isLower ? 'පෙ.ව.' : 'පෙර වරු';
12347            }
12348        }
12349    });
12350
12351    //! moment.js locale configuration
12352
12353    var months$9 = 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split('_'),
12354        monthsShort$6 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');
12355    function plural$5(n) {
12356        return (n > 1) && (n < 5);
12357    }
12358    function translate$9(number, withoutSuffix, key, isFuture) {
12359        var result = number + ' ';
12360        switch (key) {
12361            case 's':  // a few seconds / in a few seconds / a few seconds ago
12362                return (withoutSuffix || isFuture) ? 'pár sekúnd' : 'pár sekundami';
12363            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago
12364                if (withoutSuffix || isFuture) {
12365                    return result + (plural$5(number) ? 'sekundy' : 'sekúnd');
12366                } else {
12367                    return result + 'sekundami';
12368                }
12369                break;
12370            case 'm':  // a minute / in a minute / a minute ago
12371                return withoutSuffix ? 'minúta' : (isFuture ? 'minútu' : 'minútou');
12372            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago
12373                if (withoutSuffix || isFuture) {
12374                    return result + (plural$5(number) ? 'minúty' : 'minút');
12375                } else {
12376                    return result + 'minútami';
12377                }
12378                break;
12379            case 'h':  // an hour / in an hour / an hour ago
12380                return withoutSuffix ? 'hodina' : (isFuture ? 'hodinu' : 'hodinou');
12381            case 'hh': // 9 hours / in 9 hours / 9 hours ago
12382                if (withoutSuffix || isFuture) {
12383                    return result + (plural$5(number) ? 'hodiny' : 'hodín');
12384                } else {
12385                    return result + 'hodinami';
12386                }
12387                break;
12388            case 'd':  // a day / in a day / a day ago
12389                return (withoutSuffix || isFuture) ? 'deň' : 'dňom';
12390            case 'dd': // 9 days / in 9 days / 9 days ago
12391                if (withoutSuffix || isFuture) {
12392                    return result + (plural$5(number) ? 'dni' : 'dní');
12393                } else {
12394                    return result + 'dňami';
12395                }
12396                break;
12397            case 'M':  // a month / in a month / a month ago
12398                return (withoutSuffix || isFuture) ? 'mesiac' : 'mesiacom';
12399            case 'MM': // 9 months / in 9 months / 9 months ago
12400                if (withoutSuffix || isFuture) {
12401                    return result + (plural$5(number) ? 'mesiace' : 'mesiacov');
12402                } else {
12403                    return result + 'mesiacmi';
12404                }
12405                break;
12406            case 'y':  // a year / in a year / a year ago
12407                return (withoutSuffix || isFuture) ? 'rok' : 'rokom';
12408            case 'yy': // 9 years / in 9 years / 9 years ago
12409                if (withoutSuffix || isFuture) {
12410                    return result + (plural$5(number) ? 'roky' : 'rokov');
12411                } else {
12412                    return result + 'rokmi';
12413                }
12414                break;
12415        }
12416    }
12417
12418    hooks.defineLocale('sk', {
12419        months : months$9,
12420        monthsShort : monthsShort$6,
12421        weekdays : 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),
12422        weekdaysShort : 'ne_po_ut_st_št_pi_so'.split('_'),
12423        weekdaysMin : 'ne_po_ut_st_št_pi_so'.split('_'),
12424        longDateFormat : {
12425            LT: 'H:mm',
12426            LTS : 'H:mm:ss',
12427            L : 'DD.MM.YYYY',
12428            LL : 'D. MMMM YYYY',
12429            LLL : 'D. MMMM YYYY H:mm',
12430            LLLL : 'dddd D. MMMM YYYY H:mm'
12431        },
12432        calendar : {
12433            sameDay: '[dnes o] LT',
12434            nextDay: '[zajtra o] LT',
12435            nextWeek: function () {
12436                switch (this.day()) {
12437                    case 0:
12438                        return '[v nedeľu o] LT';
12439                    case 1:
12440                    case 2:
12441                        return '[v] dddd [o] LT';
12442                    case 3:
12443                        return '[v stredu o] LT';
12444                    case 4:
12445                        return '[vo štvrtok o] LT';
12446                    case 5:
12447                        return '[v piatok o] LT';
12448                    case 6:
12449                        return '[v sobotu o] LT';
12450                }
12451            },
12452            lastDay: '[včera o] LT',
12453            lastWeek: function () {
12454                switch (this.day()) {
12455                    case 0:
12456                        return '[minulú nedeľu o] LT';
12457                    case 1:
12458                    case 2:
12459                        return '[minulý] dddd [o] LT';
12460                    case 3:
12461                        return '[minulú stredu o] LT';
12462                    case 4:
12463                    case 5:
12464                        return '[minulý] dddd [o] LT';
12465                    case 6:
12466                        return '[minulú sobotu o] LT';
12467                }
12468            },
12469            sameElse: 'L'
12470        },
12471        relativeTime : {
12472            future : 'za %s',
12473            past : 'pred %s',
12474            s : translate$9,
12475            ss : translate$9,
12476            m : translate$9,
12477            mm : translate$9,
12478            h : translate$9,
12479            hh : translate$9,
12480            d : translate$9,
12481            dd : translate$9,
12482            M : translate$9,
12483            MM : translate$9,
12484            y : translate$9,
12485            yy : translate$9
12486        },
12487        dayOfMonthOrdinalParse: /\d{1,2}\./,
12488        ordinal : '%d.',
12489        week : {
12490            dow : 1, // Monday is the first day of the week.
12491            doy : 4  // The week that contains Jan 4th is the first week of the year.
12492        }
12493    });
12494
12495    //! moment.js locale configuration
12496
12497    function processRelativeTime$6(number, withoutSuffix, key, isFuture) {
12498        var result = number + ' ';
12499        switch (key) {
12500            case 's':
12501                return withoutSuffix || isFuture ? 'nekaj sekund' : 'nekaj sekundami';
12502            case 'ss':
12503                if (number === 1) {
12504                    result += withoutSuffix ? 'sekundo' : 'sekundi';
12505                } else if (number === 2) {
12506                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';
12507                } else if (number < 5) {
12508                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';
12509                } else {
12510                    result += 'sekund';
12511                }
12512                return result;
12513            case 'm':
12514                return withoutSuffix ? 'ena minuta' : 'eno minuto';
12515            case 'mm':
12516                if (number === 1) {
12517                    result += withoutSuffix ? 'minuta' : 'minuto';
12518                } else if (number === 2) {
12519                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';
12520                } else if (number < 5) {
12521                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';
12522                } else {
12523                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';
12524                }
12525                return result;
12526            case 'h':
12527                return withoutSuffix ? 'ena ura' : 'eno uro';
12528            case 'hh':
12529                if (number === 1) {
12530                    result += withoutSuffix ? 'ura' : 'uro';
12531                } else if (number === 2) {
12532                    result += withoutSuffix || isFuture ? 'uri' : 'urama';
12533                } else if (number < 5) {
12534                    result += withoutSuffix || isFuture ? 'ure' : 'urami';
12535                } else {
12536                    result += withoutSuffix || isFuture ? 'ur' : 'urami';
12537                }
12538                return result;
12539            case 'd':
12540                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';
12541            case 'dd':
12542                if (number === 1) {
12543                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';
12544                } else if (number === 2) {
12545                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';
12546                } else {
12547                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';
12548                }
12549                return result;
12550            case 'M':
12551                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';
12552            case 'MM':
12553                if (number === 1) {
12554                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';
12555                } else if (number === 2) {
12556                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';
12557                } else if (number < 5) {
12558                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';
12559                } else {
12560                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';
12561                }
12562                return result;
12563            case 'y':
12564                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';
12565            case 'yy':
12566                if (number === 1) {
12567                    result += withoutSuffix || isFuture ? 'leto' : 'letom';
12568                } else if (number === 2) {
12569                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';
12570                } else if (number < 5) {
12571                    result += withoutSuffix || isFuture ? 'leta' : 'leti';
12572                } else {
12573                    result += withoutSuffix || isFuture ? 'let' : 'leti';
12574                }
12575                return result;
12576        }
12577    }
12578
12579    hooks.defineLocale('sl', {
12580        months : 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split('_'),
12581        //monthsShort : 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split('_'),
12582		monthsShort : 'jan_feb_mar_apr_maj_jun_jul_avg_sep_okt_nov_dec'.split('_'),
12583        monthsParseExact: true,
12584        weekdays : 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),
12585        weekdaysShort : 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),
12586        weekdaysMin : 'ne_po_to_sr_če_pe_so'.split('_'),
12587        weekdaysParseExact : true,
12588        longDateFormat : {
12589            LT : 'H:mm',
12590            LTS : 'H:mm:ss',
12591            L : 'DD.MM.YYYY',
12592            LL : 'D. MMMM YYYY',
12593            LLL : 'D. MMMM YYYY H:mm',
12594            LLLL : 'dddd, D. MMMM YYYY H:mm'
12595        },
12596        calendar : {
12597            sameDay  : '[danes ob] LT',
12598            nextDay  : '[jutri ob] LT',
12599
12600            nextWeek : function () {
12601                switch (this.day()) {
12602                    case 0:
12603                        return '[v] [nedeljo] [ob] LT';
12604                    case 3:
12605                        return '[v] [sredo] [ob] LT';
12606                    case 6:
12607                        return '[v] [soboto] [ob] LT';
12608                    case 1:
12609                    case 2:
12610                    case 4:
12611                    case 5:
12612                        return '[v] dddd [ob] LT';
12613                }
12614            },
12615            lastDay  : '[včeraj ob] LT',
12616            lastWeek : function () {
12617                switch (this.day()) {
12618                    case 0:
12619                        return '[prejšnjo] [nedeljo] [ob] LT';
12620                    case 3:
12621                        return '[prejšnjo] [sredo] [ob] LT';
12622                    case 6:
12623                        return '[prejšnjo] [soboto] [ob] LT';
12624                    case 1:
12625                    case 2:
12626                    case 4:
12627                    case 5:
12628                        return '[prejšnji] dddd [ob] LT';
12629                }
12630            },
12631            sameElse : 'L'
12632        },
12633        relativeTime : {
12634            future : 'čez %s',
12635            past   : 'pred %s',
12636            s      : processRelativeTime$6,
12637            ss     : processRelativeTime$6,
12638            m      : processRelativeTime$6,
12639            mm     : processRelativeTime$6,
12640            h      : processRelativeTime$6,
12641            hh     : processRelativeTime$6,
12642            d      : processRelativeTime$6,
12643            dd     : processRelativeTime$6,
12644            M      : processRelativeTime$6,
12645            MM     : processRelativeTime$6,
12646            y      : processRelativeTime$6,
12647            yy     : processRelativeTime$6
12648        },
12649        dayOfMonthOrdinalParse: /\d{1,2}\./,
12650        ordinal : '%d.',
12651        week : {
12652            dow : 1, // Monday is the first day of the week.
12653            doy : 7  // The week that contains Jan 7th is the first week of the year.
12654        }
12655    });
12656
12657    //! moment.js locale configuration
12658
12659    hooks.defineLocale('sq', {
12660        months : 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split('_'),
12661        monthsShort : 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),
12662        weekdays : 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split('_'),
12663        weekdaysShort : 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),
12664        weekdaysMin : 'D_H_Ma_Më_E_P_Sh'.split('_'),
12665        weekdaysParseExact : true,
12666        meridiemParse: /PD|MD/,
12667        isPM: function (input) {
12668            return input.charAt(0) === 'M';
12669        },
12670        meridiem : function (hours, minutes, isLower) {
12671            return hours < 12 ? 'PD' : 'MD';
12672        },
12673        longDateFormat : {
12674            LT : 'HH:mm',
12675            LTS : 'HH:mm:ss',
12676            L : 'DD/MM/YYYY',
12677            LL : 'D MMMM YYYY',
12678            LLL : 'D MMMM YYYY HH:mm',
12679            LLLL : 'dddd, D MMMM YYYY HH:mm'
12680        },
12681        calendar : {
12682            sameDay : '[Sot në] LT',
12683            nextDay : '[Nesër në] LT',
12684            nextWeek : 'dddd [në] LT',
12685            lastDay : '[Dje në] LT',
12686            lastWeek : 'dddd [e kaluar në] LT',
12687            sameElse : 'L'
12688        },
12689        relativeTime : {
12690            future : 'në %s',
12691            past : '%s më parë',
12692            s : 'disa sekonda',
12693            ss : '%d sekonda',
12694            m : 'një minutë',
12695            mm : '%d minuta',
12696            h : 'një orë',
12697            hh : '%d orë',
12698            d : 'një ditë',
12699            dd : '%d ditë',
12700            M : 'një muaj',
12701            MM : '%d muaj',
12702            y : 'një vit',
12703            yy : '%d vite'
12704        },
12705        dayOfMonthOrdinalParse: /\d{1,2}\./,
12706        ordinal : '%d.',
12707        week : {
12708            dow : 1, // Monday is the first day of the week.
12709            doy : 4  // The week that contains Jan 4th is the first week of the year.
12710        }
12711    });
12712
12713    //! moment.js locale configuration
12714
12715    var translator$1 = {
12716        words: { //Different grammatical cases
12717            ss: ['секунда', 'секунде', 'секунди'],
12718            m: ['један минут', 'једне минуте'],
12719            mm: ['минут', 'минуте', 'минута'],
12720            h: ['један сат', 'једног сата'],
12721            hh: ['сат', 'сата', 'сати'],
12722            dd: ['дан', 'дана', 'дана'],
12723            MM: ['месец', 'месеца', 'месеци'],
12724            yy: ['година', 'године', 'година']
12725        },
12726        correctGrammaticalCase: function (number, wordKey) {
12727            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
12728        },
12729        translate: function (number, withoutSuffix, key) {
12730            var wordKey = translator$1.words[key];
12731            if (key.length === 1) {
12732                return withoutSuffix ? wordKey[0] : wordKey[1];
12733            } else {
12734                return number + ' ' + translator$1.correctGrammaticalCase(number, wordKey);
12735            }
12736        }
12737    };
12738
12739    hooks.defineLocale('sr-cyrl', {
12740        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split('_'),
12741        //monthsShort: 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),
12742		monthsShort: 'јан_феб_мар_апр_мај_јун_јул_авг_сеп_окт_нов_дец'.split('_'),
12743        monthsParseExact: true,
12744        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),
12745        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),
12746        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),
12747        weekdaysParseExact : true,
12748        longDateFormat: {
12749            LT: 'H:mm',
12750            LTS : 'H:mm:ss',
12751            L: 'DD.MM.YYYY',
12752            LL: 'D. MMMM YYYY',
12753            LLL: 'D. MMMM YYYY H:mm',
12754            LLLL: 'dddd, D. MMMM YYYY H:mm'
12755        },
12756        calendar: {
12757            sameDay: '[данас у] LT',
12758            nextDay: '[сутра у] LT',
12759            nextWeek: function () {
12760                switch (this.day()) {
12761                    case 0:
12762                        return '[у] [недељу] [у] LT';
12763                    case 3:
12764                        return '[у] [среду] [у] LT';
12765                    case 6:
12766                        return '[у] [суботу] [у] LT';
12767                    case 1:
12768                    case 2:
12769                    case 4:
12770                    case 5:
12771                        return '[у] dddd [у] LT';
12772                }
12773            },
12774            lastDay  : '[јуче у] LT',
12775            lastWeek : function () {
12776                var lastWeekDays = [
12777                    '[прошле] [недеље] [у] LT',
12778                    '[прошлог] [понедељка] [у] LT',
12779                    '[прошлог] [уторка] [у] LT',
12780                    '[прошле] [среде] [у] LT',
12781                    '[прошлог] [четвртка] [у] LT',
12782                    '[прошлог] [петка] [у] LT',
12783                    '[прошле] [суботе] [у] LT'
12784                ];
12785                return lastWeekDays[this.day()];
12786            },
12787            sameElse : 'L'
12788        },
12789        relativeTime : {
12790            future : 'за %s',
12791            past   : 'пре %s',
12792            s      : 'неколико секунди',
12793            ss     : translator$1.translate,
12794            m      : translator$1.translate,
12795            mm     : translator$1.translate,
12796            h      : translator$1.translate,
12797            hh     : translator$1.translate,
12798            d      : 'дан',
12799            dd     : translator$1.translate,
12800            M      : 'месец',
12801            MM     : translator$1.translate,
12802            y      : 'годину',
12803            yy     : translator$1.translate
12804        },
12805        dayOfMonthOrdinalParse: /\d{1,2}\./,
12806        ordinal : '%d.',
12807        week : {
12808            dow : 1, // Monday is the first day of the week.
12809            doy : 7  // The week that contains Jan 7th is the first week of the year.
12810        }
12811    });
12812
12813    //! moment.js locale configuration
12814
12815    var translator$2 = {
12816        words: { //Different grammatical cases
12817            ss: ['sekunda', 'sekunde', 'sekundi'],
12818            m: ['jedan minut', 'jedne minute'],
12819            mm: ['minut', 'minute', 'minuta'],
12820            h: ['jedan sat', 'jednog sata'],
12821            hh: ['sat', 'sata', 'sati'],
12822            dd: ['dan', 'dana', 'dana'],
12823            MM: ['mesec', 'meseca', 'meseci'],
12824            yy: ['godina', 'godine', 'godina']
12825        },
12826        correctGrammaticalCase: function (number, wordKey) {
12827            return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
12828        },
12829        translate: function (number, withoutSuffix, key) {
12830            var wordKey = translator$2.words[key];
12831            if (key.length === 1) {
12832                return withoutSuffix ? wordKey[0] : wordKey[1];
12833            } else {
12834                return number + ' ' + translator$2.correctGrammaticalCase(number, wordKey);
12835            }
12836        }
12837    };
12838
12839    hooks.defineLocale('sr', {
12840        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
12841        //monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
12842		monthsShort: 'jan_feb_mar_apr_maj_jun_jul_avg_sep_okt_nov_dec'.split('_'),
12843        monthsParseExact: true,
12844        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),
12845        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
12846        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
12847        weekdaysParseExact : true,
12848        longDateFormat: {
12849            LT: 'H:mm',
12850            LTS : 'H:mm:ss',
12851            L: 'DD.MM.YYYY',
12852            LL: 'D. MMMM YYYY',
12853            LLL: 'D. MMMM YYYY H:mm',
12854            LLLL: 'dddd, D. MMMM YYYY H:mm'
12855        },
12856        calendar: {
12857            sameDay: '[danas u] LT',
12858            nextDay: '[sutra u] LT',
12859            nextWeek: function () {
12860                switch (this.day()) {
12861                    case 0:
12862                        return '[u] [nedelju] [u] LT';
12863                    case 3:
12864                        return '[u] [sredu] [u] LT';
12865                    case 6:
12866                        return '[u] [subotu] [u] LT';
12867                    case 1:
12868                    case 2:
12869                    case 4:
12870                    case 5:
12871                        return '[u] dddd [u] LT';
12872                }
12873            },
12874            lastDay  : '[juče u] LT',
12875            lastWeek : function () {
12876                var lastWeekDays = [
12877                    '[prošle] [nedelje] [u] LT',
12878                    '[prošlog] [ponedeljka] [u] LT',
12879                    '[prošlog] [utorka] [u] LT',
12880                    '[prošle] [srede] [u] LT',
12881                    '[prošlog] [četvrtka] [u] LT',
12882                    '[prošlog] [petka] [u] LT',
12883                    '[prošle] [subote] [u] LT'
12884                ];
12885                return lastWeekDays[this.day()];
12886            },
12887            sameElse : 'L'
12888        },
12889        relativeTime : {
12890            future : 'za %s',
12891            past   : 'pre %s',
12892            s      : 'nekoliko sekundi',
12893            ss     : translator$2.translate,
12894            m      : translator$2.translate,
12895            mm     : translator$2.translate,
12896            h      : translator$2.translate,
12897            hh     : translator$2.translate,
12898            d      : 'dan',
12899            dd     : translator$2.translate,
12900            M      : 'mesec',
12901            MM     : translator$2.translate,
12902            y      : 'godinu',
12903            yy     : translator$2.translate
12904        },
12905        dayOfMonthOrdinalParse: /\d{1,2}\./,
12906        ordinal : '%d.',
12907        week : {
12908            dow : 1, // Monday is the first day of the week.
12909            doy : 7  // The week that contains Jan 7th is the first week of the year.
12910        }
12911    });
12912
12913    //! moment.js locale configuration
12914
12915    hooks.defineLocale('ss', {
12916        months : "Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split('_'),
12917        monthsShort : 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),
12918        weekdays : 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split('_'),
12919        weekdaysShort : 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),
12920        weekdaysMin : 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),
12921        weekdaysParseExact : true,
12922        longDateFormat : {
12923            LT : 'h:mm A',
12924            LTS : 'h:mm:ss A',
12925            L : 'DD/MM/YYYY',
12926            LL : 'D MMMM YYYY',
12927            LLL : 'D MMMM YYYY h:mm A',
12928            LLLL : 'dddd, D MMMM YYYY h:mm A'
12929        },
12930        calendar : {
12931            sameDay : '[Namuhla nga] LT',
12932            nextDay : '[Kusasa nga] LT',
12933            nextWeek : 'dddd [nga] LT',
12934            lastDay : '[Itolo nga] LT',
12935            lastWeek : 'dddd [leliphelile] [nga] LT',
12936            sameElse : 'L'
12937        },
12938        relativeTime : {
12939            future : 'nga %s',
12940            past : 'wenteka nga %s',
12941            s : 'emizuzwana lomcane',
12942            ss : '%d mzuzwana',
12943            m : 'umzuzu',
12944            mm : '%d emizuzu',
12945            h : 'lihora',
12946            hh : '%d emahora',
12947            d : 'lilanga',
12948            dd : '%d emalanga',
12949            M : 'inyanga',
12950            MM : '%d tinyanga',
12951            y : 'umnyaka',
12952            yy : '%d iminyaka'
12953        },
12954        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,
12955        meridiem : function (hours, minutes, isLower) {
12956            if (hours < 11) {
12957                return 'ekuseni';
12958            } else if (hours < 15) {
12959                return 'emini';
12960            } else if (hours < 19) {
12961                return 'entsambama';
12962            } else {
12963                return 'ebusuku';
12964            }
12965        },
12966        meridiemHour : function (hour, meridiem) {
12967            if (hour === 12) {
12968                hour = 0;
12969            }
12970            if (meridiem === 'ekuseni') {
12971                return hour;
12972            } else if (meridiem === 'emini') {
12973                return hour >= 11 ? hour : hour + 12;
12974            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {
12975                if (hour === 0) {
12976                    return 0;
12977                }
12978                return hour + 12;
12979            }
12980        },
12981        dayOfMonthOrdinalParse: /\d{1,2}/,
12982        ordinal : '%d',
12983        week : {
12984            dow : 1, // Monday is the first day of the week.
12985            doy : 4  // The week that contains Jan 4th is the first week of the year.
12986        }
12987    });
12988
12989    //! moment.js locale configuration
12990
12991    hooks.defineLocale('sv', {
12992        months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
12993        monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
12994        weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
12995        weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
12996        weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
12997        longDateFormat : {
12998            LT : 'HH:mm',
12999            LTS : 'HH:mm:ss',
13000            L : 'YYYY-MM-DD',
13001            LL : 'D MMMM YYYY',
13002            LLL : 'D MMMM YYYY [kl.] HH:mm',
13003            LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',
13004            lll : 'D MMM YYYY HH:mm',
13005            llll : 'ddd D MMM YYYY HH:mm'
13006        },
13007        calendar : {
13008            sameDay: '[Idag] LT',
13009            nextDay: '[Imorgon] LT',
13010            lastDay: '[Igår] LT',
13011            nextWeek: '[PÃ¥] dddd LT',
13012            lastWeek: '[I] dddd[s] LT',
13013            sameElse: 'L'
13014        },
13015        relativeTime : {
13016            future : 'om %s',
13017            past : 'för %s sedan',
13018            s : 'några sekunder',
13019            ss : '%d sekunder',
13020            m : 'en minut',
13021            mm : '%d minuter',
13022            h : 'en timme',
13023            hh : '%d timmar',
13024            d : 'en dag',
13025            dd : '%d dagar',
13026            M : 'en månad',
13027            MM : '%d månader',
13028            y : 'ett år',
13029            yy : '%d år'
13030        },
13031        dayOfMonthOrdinalParse: /\d{1,2}(e|a)/,
13032        ordinal : function (number) {
13033            var b = number % 10,
13034                output = (~~(number % 100 / 10) === 1) ? 'e' :
13035                (b === 1) ? 'a' :
13036                (b === 2) ? 'a' :
13037                (b === 3) ? 'e' : 'e';
13038            return number + output;
13039        },
13040        week : {
13041            dow : 1, // Monday is the first day of the week.
13042            doy : 4  // The week that contains Jan 4th is the first week of the year.
13043        }
13044    });
13045
13046    //! moment.js locale configuration
13047
13048    hooks.defineLocale('sw', {
13049        months : 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split('_'),
13050        monthsShort : 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),
13051        weekdays : 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split('_'),
13052        weekdaysShort : 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),
13053        weekdaysMin : 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),
13054        weekdaysParseExact : true,
13055        longDateFormat : {
13056            LT : 'HH:mm',
13057            LTS : 'HH:mm:ss',
13058            L : 'DD.MM.YYYY',
13059            LL : 'D MMMM YYYY',
13060            LLL : 'D MMMM YYYY HH:mm',
13061            LLLL : 'dddd, D MMMM YYYY HH:mm'
13062        },
13063        calendar : {
13064            sameDay : '[leo saa] LT',
13065            nextDay : '[kesho saa] LT',
13066            nextWeek : '[wiki ijayo] dddd [saat] LT',
13067            lastDay : '[jana] LT',
13068            lastWeek : '[wiki iliyopita] dddd [saat] LT',
13069            sameElse : 'L'
13070        },
13071        relativeTime : {
13072            future : '%s baadaye',
13073            past : 'tokea %s',
13074            s : 'hivi punde',
13075            ss : 'sekunde %d',
13076            m : 'dakika moja',
13077            mm : 'dakika %d',
13078            h : 'saa limoja',
13079            hh : 'masaa %d',
13080            d : 'siku moja',
13081            dd : 'masiku %d',
13082            M : 'mwezi mmoja',
13083            MM : 'miezi %d',
13084            y : 'mwaka mmoja',
13085            yy : 'miaka %d'
13086        },
13087        week : {
13088            dow : 1, // Monday is the first day of the week.
13089            doy : 7  // The week that contains Jan 7th is the first week of the year.
13090        }
13091    });
13092
13093    //! moment.js locale configuration
13094
13095    var symbolMap$f = {
13096        '1': '௧',
13097        '2': '௨',
13098        '3': '௩',
13099        '4': '௪',
13100        '5': '௫',
13101        '6': '௬',
13102        '7': '௭',
13103        '8': '௮',
13104        '9': '௯',
13105        '0': '௦'
13106    }, numberMap$e = {
13107        '௧': '1',
13108        '௨': '2',
13109        '௩': '3',
13110        '௪': '4',
13111        '௫': '5',
13112        '௬': '6',
13113        '௭': '7',
13114        '௮': '8',
13115        '௯': '9',
13116        '௦': '0'
13117    };
13118
13119    hooks.defineLocale('ta', {
13120        months : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
13121        monthsShort : 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split('_'),
13122        weekdays : 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split('_'),
13123        weekdaysShort : 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split('_'),
13124        weekdaysMin : 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),
13125        longDateFormat : {
13126            LT : 'HH:mm',
13127            LTS : 'HH:mm:ss',
13128            L : 'DD/MM/YYYY',
13129            LL : 'D MMMM YYYY',
13130            LLL : 'D MMMM YYYY, HH:mm',
13131            LLLL : 'dddd, D MMMM YYYY, HH:mm'
13132        },
13133        calendar : {
13134            sameDay : '[இன்று] LT',
13135            nextDay : '[நாளை] LT',
13136            nextWeek : 'dddd, LT',
13137            lastDay : '[நேற்று] LT',
13138            lastWeek : '[கடந்த வாரம்] dddd, LT',
13139            sameElse : 'L'
13140        },
13141        relativeTime : {
13142            future : '%s இல்',
13143            past : '%s முன்',
13144            s : 'ஒரு சில விநாடிகள்',
13145            ss : '%d விநாடிகள்',
13146            m : 'ஒரு நிமிடம்',
13147            mm : '%d நிமிடங்கள்',
13148            h : 'ஒரு மணி நேரம்',
13149            hh : '%d மணி நேரம்',
13150            d : 'ஒரு நாள்',
13151            dd : '%d நாட்கள்',
13152            M : 'ஒரு மாதம்',
13153            MM : '%d மாதங்கள்',
13154            y : 'ஒரு வருடம்',
13155            yy : '%d ஆண்டுகள்'
13156        },
13157        dayOfMonthOrdinalParse: /\d{1,2}வது/,
13158        ordinal : function (number) {
13159            return number + 'வது';
13160        },
13161        preparse: function (string) {
13162            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {
13163                return numberMap$e[match];
13164            });
13165        },
13166        postformat: function (string) {
13167            return string.replace(/\d/g, function (match) {
13168                return symbolMap$f[match];
13169            });
13170        },
13171        // refer http://ta.wikipedia.org/s/1er1
vendor: 24,600 bytes, lines 13172-13797
13172        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,
13173        meridiem : function (hour, minute, isLower) {
13174            if (hour < 2) {
13175                return ' யாமம்';
13176            } else if (hour < 6) {
13177                return ' வைகறை';  // வைகறை
13178            } else if (hour < 10) {
13179                return ' காலை'; // காலை
13180            } else if (hour < 14) {
13181                return ' நண்பகல்'; // நண்பகல்
13182            } else if (hour < 18) {
13183                return ' எற்பாடு'; // எற்பாடு
13184            } else if (hour < 22) {
13185                return ' மாலை'; // மாலை
13186            } else {
13187                return ' யாமம்';
13188            }
13189        },
13190        meridiemHour : function (hour, meridiem) {
13191            if (hour === 12) {
13192                hour = 0;
13193            }
13194            if (meridiem === 'யாமம்') {
13195                return hour < 2 ? hour : hour + 12;
13196            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {
13197                return hour;
13198            } else if (meridiem === 'நண்பகல்') {
13199                return hour >= 10 ? hour : hour + 12;
13200            } else {
13201                return hour + 12;
13202            }
13203        },
13204        week : {
13205            dow : 0, // Sunday is the first day of the week.
13206            doy : 6  // The week that contains Jan 6th is the first week of the year.
13207        }
13208    });
13209
13210    //! moment.js locale configuration
13211
13212    hooks.defineLocale('te', {
13213        months : 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split('_'),
13214        monthsShort : 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split('_'),
13215        monthsParseExact : true,
13216        weekdays : 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split('_'),
13217        weekdaysShort : 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),
13218        weekdaysMin : 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),
13219        longDateFormat : {
13220            LT : 'A h:mm',
13221            LTS : 'A h:mm:ss',
13222            L : 'DD/MM/YYYY',
13223            LL : 'D MMMM YYYY',
13224            LLL : 'D MMMM YYYY, A h:mm',
13225            LLLL : 'dddd, D MMMM YYYY, A h:mm'
13226        },
13227        calendar : {
13228            sameDay : '[నేడు] LT',
13229            nextDay : '[రేపు] LT',
13230            nextWeek : 'dddd, LT',
13231            lastDay : '[నిన్న] LT',
13232            lastWeek : '[గత] dddd, LT',
13233            sameElse : 'L'
13234        },
13235        relativeTime : {
13236            future : '%s లో',
13237            past : '%s క్రితం',
13238            s : 'కొన్ని క్షణాలు',
13239            ss : '%d సెకన్లు',
13240            m : 'ఒక నిమిషం',
13241            mm : '%d నిమిషాలు',
13242            h : 'ఒక గంట',
13243            hh : '%d గంటలు',
13244            d : 'ఒక రోజు',
13245            dd : '%d రోజులు',
13246            M : 'ఒక నెల',
13247            MM : '%d నెలలు',
13248            y : 'ఒక సంవత్సరం',
13249            yy : '%d సంవత్సరాలు'
13250        },
13251        dayOfMonthOrdinalParse : /\d{1,2}à°µ/,
13252        ordinal : '%dà°µ',
13253        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,
13254        meridiemHour : function (hour, meridiem) {
13255            if (hour === 12) {
13256                hour = 0;
13257            }
13258            if (meridiem === 'రాత్రి') {
13259                return hour < 4 ? hour : hour + 12;
13260            } else if (meridiem === 'ఉదయం') {
13261                return hour;
13262            } else if (meridiem === 'మధ్యాహ్నం') {
13263                return hour >= 10 ? hour : hour + 12;
13264            } else if (meridiem === 'సాయంత్రం') {
13265                return hour + 12;
13266            }
13267        },
13268        meridiem : function (hour, minute, isLower) {
13269            if (hour < 4) {
13270                return 'రాత్రి';
13271            } else if (hour < 10) {
13272                return 'ఉదయం';
13273            } else if (hour < 17) {
13274                return 'మధ్యాహ్నం';
13275            } else if (hour < 20) {
13276                return 'సాయంత్రం';
13277            } else {
13278                return 'రాత్రి';
13279            }
13280        },
13281        week : {
13282            dow : 0, // Sunday is the first day of the week.
13283            doy : 6  // The week that contains Jan 6th is the first week of the year.
13284        }
13285    });
13286
13287    //! moment.js locale configuration
13288
13289    hooks.defineLocale('tet', {
13290        months : 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split('_'),
13291        monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
13292        weekdays : 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),
13293        weekdaysShort : 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),
13294        weekdaysMin : 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),
13295        longDateFormat : {
13296            LT : 'HH:mm',
13297            LTS : 'HH:mm:ss',
13298            L : 'DD/MM/YYYY',
13299            LL : 'D MMMM YYYY',
13300            LLL : 'D MMMM YYYY HH:mm',
13301            LLLL : 'dddd, D MMMM YYYY HH:mm'
13302        },
13303        calendar : {
13304            sameDay: '[Ohin iha] LT',
13305            nextDay: '[Aban iha] LT',
13306            nextWeek: 'dddd [iha] LT',
13307            lastDay: '[Horiseik iha] LT',
13308            lastWeek: 'dddd [semana kotuk] [iha] LT',
13309            sameElse: 'L'
13310        },
13311        relativeTime : {
13312            future : 'iha %s',
13313            past : '%s liuba',
13314            s : 'minutu balun',
13315            ss : 'minutu %d',
13316            m : 'minutu ida',
13317            mm : 'minutu %d',
13318            h : 'oras ida',
13319            hh : 'oras %d',
13320            d : 'loron ida',
13321            dd : 'loron %d',
13322            M : 'fulan ida',
13323            MM : 'fulan %d',
13324            y : 'tinan ida',
13325            yy : 'tinan %d'
13326        },
13327        dayOfMonthOrdinalParse: /\d{1,2}(st|nd|rd|th)/,
13328        ordinal : function (number) {
13329            var b = number % 10,
13330                output = (~~(number % 100 / 10) === 1) ? 'th' :
13331                (b === 1) ? 'st' :
13332                (b === 2) ? 'nd' :
13333                (b === 3) ? 'rd' : 'th';
13334            return number + output;
13335        },
13336        week : {
13337            dow : 1, // Monday is the first day of the week.
13338            doy : 4  // The week that contains Jan 4th is the first week of the year.
13339        }
13340    });
13341
13342    //! moment.js locale configuration
13343
13344    var suffixes$3 = {
13345        0: '-ум',
13346        1: '-ум',
13347        2: '-юм',
13348        3: '-юм',
13349        4: '-ум',
13350        5: '-ум',
13351        6: '-ум',
13352        7: '-ум',
13353        8: '-ум',
13354        9: '-ум',
13355        10: '-ум',
13356        12: '-ум',
13357        13: '-ум',
13358        20: '-ум',
13359        30: '-юм',
13360        40: '-ум',
13361        50: '-ум',
13362        60: '-ум',
13363        70: '-ум',
13364        80: '-ум',
13365        90: '-ум',
13366        100: '-ум'
13367    };
13368
13369    hooks.defineLocale('tg', {
13370        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
13371        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
13372        weekdays : 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split('_'),
13373        weekdaysShort : 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),
13374        weekdaysMin : 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),
13375        longDateFormat : {
13376            LT : 'HH:mm',
13377            LTS : 'HH:mm:ss',
13378            L : 'DD/MM/YYYY',
13379            LL : 'D MMMM YYYY',
13380            LLL : 'D MMMM YYYY HH:mm',
13381            LLLL : 'dddd, D MMMM YYYY HH:mm'
13382        },
13383        calendar : {
13384            sameDay : '[Имрӯз соати] LT',
13385            nextDay : '[Пагоҳ соати] LT',
13386            lastDay : '[Дирӯз соати] LT',
13387            nextWeek : 'dddd[и] [ҳафтаи оянда соати] LT',
13388            lastWeek : 'dddd[и] [ҳафтаи гузашта соати] LT',
13389            sameElse : 'L'
13390        },
13391        relativeTime : {
13392            future : 'баъди %s',
13393            past : '%s пеш',
13394            s : 'якчанд сония',
13395            m : 'як дақиқа',
13396            mm : '%d дақиқа',
13397            h : 'як соат',
13398            hh : '%d соат',
13399            d : 'як рӯз',
13400            dd : '%d рӯз',
13401            M : 'як моҳ',
13402            MM : '%d моҳ',
13403            y : 'як сол',
13404            yy : '%d сол'
13405        },
13406        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,
13407        meridiemHour: function (hour, meridiem) {
13408            if (hour === 12) {
13409                hour = 0;
13410            }
13411            if (meridiem === 'шаб') {
13412                return hour < 4 ? hour : hour + 12;
13413            } else if (meridiem === 'субҳ') {
13414                return hour;
13415            } else if (meridiem === 'рӯз') {
13416                return hour >= 11 ? hour : hour + 12;
13417            } else if (meridiem === 'бегоҳ') {
13418                return hour + 12;
13419            }
13420        },
13421        meridiem: function (hour, minute, isLower) {
13422            if (hour < 4) {
13423                return 'шаб';
13424            } else if (hour < 11) {
13425                return 'субҳ';
13426            } else if (hour < 16) {
13427                return 'рӯз';
13428            } else if (hour < 19) {
13429                return 'бегоҳ';
13430            } else {
13431                return 'шаб';
13432            }
13433        },
13434        dayOfMonthOrdinalParse: /\d{1,2}-(ум|юм)/,
13435        ordinal: function (number) {
13436            var a = number % 10,
13437                b = number >= 100 ? 100 : null;
13438            return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);
13439        },
13440        week : {
13441            dow : 1, // Monday is the first day of the week.
13442            doy : 7  // The week that contains Jan 1th is the first week of the year.
13443        }
13444    });
13445
13446    //! moment.js locale configuration
13447
13448    hooks.defineLocale('th', {
13449        months : 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split('_'),
13450        monthsShort : 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split('_'),
13451        monthsParseExact: true,
13452        weekdays : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),
13453        weekdaysShort : 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference
13454        weekdaysMin : 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),
13455        weekdaysParseExact : true,
13456        longDateFormat : {
13457            LT : 'H:mm',
13458            LTS : 'H:mm:ss',
13459            L : 'DD/MM/YYYY',
13460            LL : 'D MMMM YYYY',
13461            LLL : 'D MMMM YYYY เวลา H:mm',
13462            LLLL : 'วันddddที่ D MMMM YYYY เวลา H:mm'
13463        },
13464        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,
13465        isPM: function (input) {
13466            return input === 'หลังเที่ยง';
13467        },
13468        meridiem : function (hour, minute, isLower) {
13469            if (hour < 12) {
13470                return 'ก่อนเที่ยง';
13471            } else {
13472                return 'หลังเที่ยง';
13473            }
13474        },
13475        calendar : {
13476            sameDay : '[วันนี้ เวลา] LT',
13477            nextDay : '[พรุ่งนี้ เวลา] LT',
13478            nextWeek : 'dddd[หน้า เวลา] LT',
13479            lastDay : '[เมื่อวานนี้ เวลา] LT',
13480            lastWeek : '[วัน]dddd[ที่แล้ว เวลา] LT',
13481            sameElse : 'L'
13482        },
13483        relativeTime : {
13484            future : 'อีก %s',
13485            past : '%sที่แล้ว',
13486            s : 'ไม่กี่วินาที',
13487            ss : '%d วินาที',
13488            m : '1 นาที',
13489            mm : '%d นาที',
13490            h : '1 ชั่วโมง',
13491            hh : '%d ชั่วโมง',
13492            d : '1 วัน',
13493            dd : '%d วัน',
13494            M : '1 เดือน',
13495            MM : '%d เดือน',
13496            y : '1 ปี',
13497            yy : '%d ปี'
13498        }
13499    });
13500
13501    //! moment.js locale configuration
13502
13503    hooks.defineLocale('tl-ph', {
13504        months : 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split('_'),
13505        monthsShort : 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),
13506        weekdays : 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split('_'),
13507        weekdaysShort : 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),
13508        weekdaysMin : 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),
13509        longDateFormat : {
13510            LT : 'HH:mm',
13511            LTS : 'HH:mm:ss',
13512            L : 'MM/D/YYYY',
13513            LL : 'MMMM D, YYYY',
13514            LLL : 'MMMM D, YYYY HH:mm',
13515            LLLL : 'dddd, MMMM DD, YYYY HH:mm'
13516        },
13517        calendar : {
13518            sameDay: 'LT [ngayong araw]',
13519            nextDay: '[Bukas ng] LT',
13520            nextWeek: 'LT [sa susunod na] dddd',
13521            lastDay: 'LT [kahapon]',
13522            lastWeek: 'LT [noong nakaraang] dddd',
13523            sameElse: 'L'
13524        },
13525        relativeTime : {
13526            future : 'sa loob ng %s',
13527            past : '%s ang nakalipas',
13528            s : 'ilang segundo',
13529            ss : '%d segundo',
13530            m : 'isang minuto',
13531            mm : '%d minuto',
13532            h : 'isang oras',
13533            hh : '%d oras',
13534            d : 'isang araw',
13535            dd : '%d araw',
13536            M : 'isang buwan',
13537            MM : '%d buwan',
13538            y : 'isang taon',
13539            yy : '%d taon'
13540        },
13541        dayOfMonthOrdinalParse: /\d{1,2}/,
13542        ordinal : function (number) {
13543            return number;
13544        },
13545        week : {
13546            dow : 1, // Monday is the first day of the week.
13547            doy : 4  // The week that contains Jan 4th is the first week of the year.
13548        }
13549    });
13550
13551    //! moment.js locale configuration
13552
13553    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');
13554
13555    function translateFuture(output) {
13556        var time = output;
13557        time = (output.indexOf('jaj') !== -1) ?
13558        time.slice(0, -3) + 'leS' :
13559        (output.indexOf('jar') !== -1) ?
13560        time.slice(0, -3) + 'waQ' :
13561        (output.indexOf('DIS') !== -1) ?
13562        time.slice(0, -3) + 'nem' :
13563        time + ' pIq';
13564        return time;
13565    }
13566
13567    function translatePast(output) {
13568        var time = output;
13569        time = (output.indexOf('jaj') !== -1) ?
13570        time.slice(0, -3) + 'Hu’' :
13571        (output.indexOf('jar') !== -1) ?
13572        time.slice(0, -3) + 'wen' :
13573        (output.indexOf('DIS') !== -1) ?
13574        time.slice(0, -3) + 'ben' :
13575        time + ' ret';
13576        return time;
13577    }
13578
13579    function translate$a(number, withoutSuffix, string, isFuture) {
13580        var numberNoun = numberAsNoun(number);
13581        switch (string) {
13582            case 'ss':
13583                return numberNoun + ' lup';
13584            case 'mm':
13585                return numberNoun + ' tup';
13586            case 'hh':
13587                return numberNoun + ' rep';
13588            case 'dd':
13589                return numberNoun + ' jaj';
13590            case 'MM':
13591                return numberNoun + ' jar';
13592            case 'yy':
13593                return numberNoun + ' DIS';
13594        }
13595    }
13596
13597    function numberAsNoun(number) {
13598        var hundred = Math.floor((number % 1000) / 100),
13599        ten = Math.floor((number % 100) / 10),
13600        one = number % 10,
13601        word = '';
13602        if (hundred > 0) {
13603            word += numbersNouns[hundred] + 'vatlh';
13604        }
13605        if (ten > 0) {
13606            word += ((word !== '') ? ' ' : '') + numbersNouns[ten] + 'maH';
13607        }
13608        if (one > 0) {
13609            word += ((word !== '') ? ' ' : '') + numbersNouns[one];
13610        }
13611        return (word === '') ? 'pagh' : word;
13612    }
13613
13614    hooks.defineLocale('tlh', {
13615        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('_'),
13616        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('_'),
13617        monthsParseExact : true,
13618        weekdays : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
13619        weekdaysShort : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
13620        weekdaysMin : 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),
13621        longDateFormat : {
13622            LT : 'HH:mm',
13623            LTS : 'HH:mm:ss',
13624            L : 'DD.MM.YYYY',
13625            LL : 'D MMMM YYYY',
13626            LLL : 'D MMMM YYYY HH:mm',
13627            LLLL : 'dddd, D MMMM YYYY HH:mm'
13628        },
13629        calendar : {
13630            sameDay: '[DaHjaj] LT',
13631            nextDay: '[wa’leS] LT',
13632            nextWeek: 'LLL',
13633            lastDay: '[wa’Hu’] LT',
13634            lastWeek: 'LLL',
13635            sameElse: 'L'
13636        },
13637        relativeTime : {
13638            future : translateFuture,
13639            past : translatePast,
13640            s : 'puS lup',
13641            ss : translate$a,
13642            m : 'wa’ tup',
13643            mm : translate$a,
13644            h : 'wa’ rep',
13645            hh : translate$a,
13646            d : 'wa’ jaj',
13647            dd : translate$a,
13648            M : 'wa’ jar',
13649            MM : translate$a,
13650            y : 'wa’ DIS',
13651            yy : translate$a
13652        },
13653        dayOfMonthOrdinalParse: /\d{1,2}\./,
13654        ordinal : '%d.',
13655        week : {
13656            dow : 1, // Monday is the first day of the week.
13657            doy : 4  // The week that contains Jan 4th is the first week of the year.
13658        }
13659    });
13660
13661    var suffixes$4 = {
13662        1: '\'inci',
13663        5: '\'inci',
13664        8: '\'inci',
13665        70: '\'inci',
13666        80: '\'inci',
13667        2: '\'nci',
13668        7: '\'nci',
13669        20: '\'nci',
13670        50: '\'nci',
13671        3: '\'üncü',
13672        4: '\'üncü',
13673        100: '\'üncü',
13674        6: '\'ncı',
13675        9: '\'uncu',
13676        10: '\'uncu',
13677        30: '\'uncu',
13678        60: '\'ıncı',
13679        90: '\'ıncı'
13680    };
13681
13682    hooks.defineLocale('tr', {
13683        months : 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split('_'),
13684        monthsShort : 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),
13685        weekdays : 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split('_'),
13686        weekdaysShort : 'Paz_Pts_Sal_Çar_Per_Cum_Cts'.split('_'),
13687        weekdaysMin : 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),
13688        longDateFormat : {
13689            LT : 'HH:mm',
13690            LTS : 'HH:mm:ss',
13691            L : 'DD.MM.YYYY',
13692            LL : 'D MMMM YYYY',
13693            LLL : 'D MMMM YYYY HH:mm',
13694            LLLL : 'dddd, D MMMM YYYY HH:mm'
13695        },
13696        calendar : {
13697            sameDay : '[bugün saat] LT',
13698            nextDay : '[yarın saat] LT',
13699            nextWeek : '[gelecek] dddd [saat] LT',
13700            lastDay : '[dün] LT',
13701            lastWeek : '[geçen] dddd [saat] LT',
13702            sameElse : 'L'
13703        },
13704        relativeTime : {
13705            future : '%s sonra',
13706            past : '%s önce',
13707            s : 'birkaç saniye',
13708            ss : '%d saniye',
13709            m : 'bir dakika',
13710            mm : '%d dakika',
13711            h : 'bir saat',
13712            hh : '%d saat',
13713            d : 'bir gün',
13714            dd : '%d gün',
13715            M : 'bir ay',
13716            MM : '%d ay',
13717            y : 'bir yıl',
13718            yy : '%d yıl'
13719        },
13720        ordinal: function (number, period) {
13721            switch (period) {
13722                case 'd':
13723                case 'D':
13724                case 'Do':
13725                case 'DD':
13726                    return number;
13727                default:
13728                    if (number === 0) {  // special case for zero
13729                        return number + '\'ıncı';
13730                    }
13731                    var a = number % 10,
13732                        b = number % 100 - a,
13733                        c = number >= 100 ? 100 : null;
13734                    return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);
13735            }
13736        },
13737        week : {
13738            dow : 1, // Monday is the first day of the week.
13739            doy : 7  // The week that contains Jan 7th is the first week of the year.
13740        }
13741    });
13742
13743    //! moment.js locale configuration
13744
13745    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.
13746    // This is currently too difficult (maybe even impossible) to add.
13747    hooks.defineLocale('tzl', {
13748        months : 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split('_'),
13749        monthsShort : 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),
13750        weekdays : 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),
13751        weekdaysShort : 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),
13752        weekdaysMin : 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),
13753        longDateFormat : {
13754            LT : 'HH.mm',
13755            LTS : 'HH.mm.ss',
13756            L : 'DD.MM.YYYY',
13757            LL : 'D. MMMM [dallas] YYYY',
13758            LLL : 'D. MMMM [dallas] YYYY HH.mm',
13759            LLLL : 'dddd, [li] D. MMMM [dallas] YYYY HH.mm'
13760        },
13761        meridiemParse: /d\'o|d\'a/i,
13762        isPM : function (input) {
13763            return 'd\'o' === input.toLowerCase();
13764        },
13765        meridiem : function (hours, minutes, isLower) {
13766            if (hours > 11) {
13767                return isLower ? 'd\'o' : 'D\'O';
13768            } else {
13769                return isLower ? 'd\'a' : 'D\'A';
13770            }
13771        },
13772        calendar : {
13773            sameDay : '[oxhi à] LT',
13774            nextDay : '[demà à] LT',
13775            nextWeek : 'dddd [à] LT',
13776            lastDay : '[ieiri à] LT',
13777            lastWeek : '[sür el] dddd [lasteu à] LT',
13778            sameElse : 'L'
13779        },
13780        relativeTime : {
13781            future : 'osprei %s',
13782            past : 'ja%s',
13783            s : processRelativeTime$7,
13784            ss : processRelativeTime$7,
13785            m : processRelativeTime$7,
13786            mm : processRelativeTime$7,
13787            h : processRelativeTime$7,
13788            hh : processRelativeTime$7,
13789            d : processRelativeTime$7,
13790            dd : processRelativeTime$7,
13791            M : processRelativeTime$7,
13792            MM : processRelativeTime$7,
13793            y : processRelativeTime$7,
13794            yy : processRelativeTime$7
13795        },
13796        dayOfMonthOrdinalParse: /\d{1,2}\./,
13797        ordinal : '%d.',
13798        week : {
13799            dow : 1, // Monday is the first day of the week.
13800            doy : 4  // The week that contains Jan 4th is the first week of the year.
13801        }
13802    });
13803
13804    function processRelativeTime$7(number, withoutSuffix, key, isFuture) {
13805        var format = {
13806            's': ['viensas secunds', '\'iensas secunds'],
13807            'ss': [number + ' secunds', '' + number + ' secunds'],
13808            'm': ['\'n míut', '\'iens míut'],
13809            'mm': [number + ' míuts', '' + number + ' míuts'],
13810            'h': ['\'n þora', '\'iensa þora'],
13811            'hh': [number + ' þoras', '' + number + ' þoras'],
13812            'd': ['\'n ziua', '\'iensa ziua'],
13813            'dd': [number + ' ziuas', '' + number + ' ziuas'],
13814            'M': ['\'n mes', '\'iens mes'],
13815            'MM': [number + ' mesen', '' + number + ' mesen'],
13816            'y': ['\'n ar', '\'iens ar'],
13817            'yy': [number + ' ars', '' + number + ' ars']
13818        };
13819        return isFuture ? format[key][0] : (withoutSuffix ? format[key][0] : format[key][1]);
13820    }
13821
13822    //! moment.js locale configuration
13823
13824    hooks.defineLocale('tzm-latn', {
13825        months : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
13826        monthsShort : 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split('_'),
13827        weekdays : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
13828        weekdaysShort : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
13829        weekdaysMin : 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),
13830        longDateFormat : {
13831            LT : 'HH:mm',
13832            LTS : 'HH:mm:ss',
13833            L : 'DD/MM/YYYY',
13834            LL : 'D MMMM YYYY',
13835            LLL : 'D MMMM YYYY HH:mm',
13836            LLLL : 'dddd D MMMM YYYY HH:mm'
13837        },
13838        calendar : {
13839            sameDay: '[asdkh g] LT',
13840            nextDay: '[aska g] LT',
13841            nextWeek: 'dddd [g] LT',
13842            lastDay: '[assant g] LT',
13843            lastWeek: 'dddd [g] LT',
13844            sameElse: 'L'
13845        },
13846        relativeTime : {
13847            future : 'dadkh s yan %s',
13848            past : 'yan %s',
13849            s : 'imik',
13850            ss : '%d imik',
13851            m : 'minuḍ',
13852            mm : '%d minuḍ',
13853            h : 'saɛa',
13854            hh : '%d tassaɛin',
13855            d : 'ass',
13856            dd : '%d ossan',
13857            M : 'ayowr',
13858            MM : '%d iyyirn',
13859            y : 'asgas',
13860            yy : '%d isgasn'
13861        },
13862        week : {
13863            dow : 6, // Saturday is the first day of the week.
13864            doy : 12  // The week that contains Jan 12th is the first week of the year.
13865        }
13866    });
13867
13868    //! moment.js locale configuration
13869
13870    hooks.defineLocale('tzm', {
13871        months : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
13872        monthsShort : 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split('_'),
13873        weekdays : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
13874        weekdaysShort : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
13875        weekdaysMin : 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),
13876        longDateFormat : {
13877            LT : 'HH:mm',
13878            LTS: 'HH:mm:ss',
13879            L : 'DD/MM/YYYY',
13880            LL : 'D MMMM YYYY',
13881            LLL : 'D MMMM YYYY HH:mm',
13882            LLLL : 'dddd D MMMM YYYY HH:mm'
13883        },
13884        calendar : {
13885            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',
13886            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',
13887            nextWeek: 'dddd [â´´] LT',
13888            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',
13889            lastWeek: 'dddd [â´´] LT',
13890            sameElse: 'L'
13891        },
13892        relativeTime : {
13893            future : 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',
13894            past : 'ⵢⴰⵏ %s',
13895            s : 'ⵉⵎⵉⴽ',
13896            ss : '%d ⵉⵎⵉⴽ',
13897            m : 'ⵎⵉⵏⵓⴺ',
13898            mm : '%d ⵎⵉⵏⵓⴺ',
13899            h : 'ⵙⴰⵄⴰ',
13900            hh : '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',
13901            d : 'ⴰⵙⵙ',
13902            dd : '%d oⵙⵙⴰⵏ',
13903            M : 'ⴰⵢoⵓⵔ',
13904            MM : '%d ⵉⵢⵢⵉⵔⵏ',
13905            y : 'ⴰⵙⴳⴰⵙ',
13906            yy : '%d ⵉⵙⴳⴰⵙⵏ'
13907        },
13908        week : {
13909            dow : 6, // Saturday is the first day of the week.
13910            doy : 12  // The week that contains Jan 12th is the first week of the year.
13911        }
13912    });
13913
13914    //! moment.js language configuration
13915
13916    hooks.defineLocale('ug-cn', {
13917        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
13918            '_'
13919        ),
13920        monthsShort: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(
13921            '_'
13922        ),
13923        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(
13924            '_'
13925        ),
13926        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
13927        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),
13928        longDateFormat: {
13929            LT: 'HH:mm',
13930            LTS: 'HH:mm:ss',
13931            L: 'YYYY-MM-DD',
13932            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',
vendor: 9,494 bytes, lines 13933-14161
13933            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',
13934            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm'
13935        },
13936        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,
13937        meridiemHour: function (hour, meridiem) {
13938            if (hour === 12) {
13939                hour = 0;
13940            }
13941            if (
13942                meridiem === 'يېرىم كېچە' ||
13943                meridiem === 'سەھەر' ||
13944                meridiem === 'چۈشتىن بۇرۇن'
13945            ) {
13946                return hour;
13947            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {
13948                return hour + 12;
13949            } else {
13950                return hour >= 11 ? hour : hour + 12;
13951            }
13952        },
13953        meridiem: function (hour, minute, isLower) {
13954            var hm = hour * 100 + minute;
13955            if (hm < 600) {
13956                return 'يېرىم كېچە';
13957            } else if (hm < 900) {
13958                return 'سەھەر';
13959            } else if (hm < 1130) {
13960                return 'چۈشتىن بۇرۇن';
13961            } else if (hm < 1230) {
13962                return 'چۈش';
13963            } else if (hm < 1800) {
13964                return 'چۈشتىن كېيىن';
13965            } else {
13966                return 'كەچ';
13967            }
13968        },
13969        calendar: {
13970            sameDay: '[بۈگۈن سائەت] LT',
13971            nextDay: '[ئەتە سائەت] LT',
13972            nextWeek: '[كېلەركى] dddd [سائەت] LT',
13973            lastDay: '[تۆنۈگۈن] LT',
13974            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',
13975            sameElse: 'L'
13976        },
13977        relativeTime: {
13978            future: '%s كېيىن',
13979            past: '%s بۇرۇن',
13980            s: 'نەچچە سېكونت',
13981            ss: '%d سېكونت',
13982            m: 'بىر مىنۇت',
13983            mm: '%d مىنۇت',
13984            h: 'بىر سائەت',
13985            hh: '%d سائەت',
13986            d: 'بىر كۈن',
13987            dd: '%d كۈن',
13988            M: 'بىر ئاي',
13989            MM: '%d ئاي',
13990            y: 'بىر يىل',
13991            yy: '%d يىل'
13992        },
13993
13994        dayOfMonthOrdinalParse: /\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,
13995        ordinal: function (number, period) {
13996            switch (period) {
13997                case 'd':
13998                case 'D':
13999                case 'DDD':
14000                    return number + '-كۈنى';
14001                case 'w':
14002                case 'W':
14003                    return number + '-ھەپتە';
14004                default:
14005                    return number;
14006            }
14007        },
14008        preparse: function (string) {
14009            return string.replace(/،/g, ',');
14010        },
14011        postformat: function (string) {
14012            return string.replace(/,/g, '،');
14013        },
14014        week: {
14015            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
14016            dow: 1, // Monday is the first day of the week.
14017            doy: 7 // The week that contains Jan 1st is the first week of the year.
14018        }
14019    });
14020
14021    //! moment.js locale configuration
14022
14023    function plural$6(word, num) {
14024        var forms = word.split('_');
14025        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]);
14026    }
14027    function relativeTimeWithPlural$4(number, withoutSuffix, key) {
14028        var format = {
14029            'ss': withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',
14030            'mm': withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',
14031            'hh': withoutSuffix ? 'година_години_годин' : 'годину_години_годин',
14032            'dd': 'день_дні_днів',
14033            'MM': 'місяць_місяці_місяців',
14034            'yy': 'рік_роки_років'
14035        };
14036        if (key === 'm') {
14037            return withoutSuffix ? 'хвилина' : 'хвилину';
14038        }
14039        else if (key === 'h') {
14040            return withoutSuffix ? 'година' : 'годину';
14041        }
14042        else {
14043            return number + ' ' + plural$6(format[key], +number);
14044        }
14045    }
14046    function weekdaysCaseReplace(m, format) {
14047        var weekdays = {
14048            'nominative': 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split('_'),
14049            'accusative': 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split('_'),
14050            'genitive': 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split('_')
14051        };
14052
14053        if (m === true) {
14054            return weekdays['nominative'].slice(1, 7).concat(weekdays['nominative'].slice(0, 1));
14055        }
14056        if (!m) {
14057            return weekdays['nominative'];
14058        }
14059
14060        var nounCase = (/(\[[ВвУу]\]) ?dddd/).test(format) ?
14061            'accusative' :
14062            ((/\[?(?:минулої|наступної)? ?\] ?dddd/).test(format) ?
14063                'genitive' :
14064                'nominative');
14065        return weekdays[nounCase][m.day()];
14066    }
14067    function processHoursFunction(str) {
14068        return function () {
14069            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';
14070        };
14071    }
14072
14073    hooks.defineLocale('uk', {
14074        months : {
14075            'format': 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split('_'),
14076            'standalone': 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split('_')
14077        },
14078        monthsShort : 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split('_'),
14079        weekdays : weekdaysCaseReplace,
14080        weekdaysShort : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
14081        weekdaysMin : 'нд_пн_вт_ср_чт_пт_сб'.split('_'),
14082        longDateFormat : {
14083            LT : 'HH:mm',
14084            LTS : 'HH:mm:ss',
14085            L : 'DD.MM.YYYY',
14086            LL : 'D MMMM YYYY р.',
14087            LLL : 'D MMMM YYYY р., HH:mm',
14088            LLLL : 'dddd, D MMMM YYYY р., HH:mm'
14089        },
14090        calendar : {
14091            sameDay: processHoursFunction('[Сьогодні '),
14092            nextDay: processHoursFunction('[Завтра '),
14093            lastDay: processHoursFunction('[Вчора '),
14094            nextWeek: processHoursFunction('[У] dddd ['),
14095            lastWeek: function () {
14096                switch (this.day()) {
14097                    case 0:
14098                    case 3:
14099                    case 5:
14100                    case 6:
14101                        return processHoursFunction('[Минулої] dddd [').call(this);
14102                    case 1:
14103                    case 2:
14104                    case 4:
14105                        return processHoursFunction('[Минулого] dddd [').call(this);
14106                }
14107            },
14108            sameElse: 'L'
14109        },
14110        relativeTime : {
14111            future : 'за %s',
14112            past : '%s тому',
14113            s : 'декілька секунд',
14114            ss : relativeTimeWithPlural$4,
14115            m : relativeTimeWithPlural$4,
14116            mm : relativeTimeWithPlural$4,
14117            h : 'годину',
14118            hh : relativeTimeWithPlural$4,
14119            d : 'день',
14120            dd : relativeTimeWithPlural$4,
14121            M : 'місяць',
14122            MM : relativeTimeWithPlural$4,
14123            y : 'рік',
14124            yy : relativeTimeWithPlural$4
14125        },
14126        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason
14127        meridiemParse: /ночі|ранку|дня|вечора/,
14128        isPM: function (input) {
14129            return /^(дня|вечора)$/.test(input);
14130        },
14131        meridiem : function (hour, minute, isLower) {
14132            if (hour < 4) {
14133                return 'ночі';
14134            } else if (hour < 12) {
14135                return 'ранку';
14136            } else if (hour < 17) {
14137                return 'дня';
14138            } else {
14139                return 'вечора';
14140            }
14141        },
14142        dayOfMonthOrdinalParse: /\d{1,2}-(й|го)/,
14143        ordinal: function (number, period) {
14144            switch (period) {
14145                case 'M':
14146                case 'd':
14147                case 'DDD':
14148                case 'w':
14149                case 'W':
14150                    return number + '-й';
14151                case 'D':
14152                    return number + '-го';
14153                default:
14154                    return number;
14155            }
14156        },
14157        week : {
14158            dow : 1, // Monday is the first day of the week.
14159            doy : 7  // The week that contains Jan 7th is the first week of the year.
14160        }
14161    });
14162
14163    //! moment.js locale configuration
14164
14165    var months$a = [
14166        'جنوری',
14167        'فروری',
14168        'مارچ',
14169        'اپریل',
14170        'مئی',
14171        'جون',
14172        'جولائی',
14173        'اگست',
14174        'ستمبر',
14175        'اکتوبر',
14176        'نومبر',
14177        'دسمبر'
14178    ];
14179    var days$2 = [
14180        'اتوار',
14181        'پیر',
14182        'منگل',
14183        'بدھ',
14184        'جمعرات',
14185        'جمعہ',
14186        'ہفتہ'
14187    ];
14188
14189    hooks.defineLocale('ur', {
14190        months : months$a,
14191        monthsShort : months$a,
14192        weekdays : days$2,
14193        weekdaysShort : days$2,
14194        weekdaysMin : days$2,
14195        longDateFormat : {
14196            LT : 'HH:mm',
14197            LTS : 'HH:mm:ss',
14198            L : 'DD/MM/YYYY',
14199            LL : 'D MMMM YYYY',
14200            LLL : 'D MMMM YYYY HH:mm',
14201            LLLL : 'dddd، D MMMM YYYY HH:mm'
14202        },
14203        meridiemParse: /صبح|شام/,
14204        isPM : function (input) {
14205            return 'شام' === input;
14206        },
14207        meridiem : function (hour, minute, isLower) {
14208            if (hour < 12) {
14209                return 'صبح';
14210            }
14211            return 'شام';
14212        },
14213        calendar : {
14214            sameDay : '[آج بوقت] LT',
14215            nextDay : '[کل بوقت] LT',
14216            nextWeek : 'dddd [بوقت] LT',
14217            lastDay : '[گذشتہ روز بوقت] LT',
14218            lastWeek : '[گذشتہ] dddd [بوقت] LT',
14219            sameElse : 'L'
14220        },
14221        relativeTime : {
14222            future : '%s بعد',
14223            past : '%s قبل',
14224            s : 'چند سیکنڈ',
14225            ss : '%d سیکنڈ',
14226            m : 'ایک منٹ',
14227            mm : '%d منٹ',
14228            h : 'ایک گھنٹہ',
14229            hh : '%d گھنٹے',
14230            d : 'ایک دن',
14231            dd : '%d دن',
14232            M : 'ایک ماہ',
14233            MM : '%d ماہ',
14234            y : 'ایک سال',
14235            yy : '%d سال'
14236        },
14237        preparse: function (string) {
14238            return string.replace(/،/g, ',');
14239        },
14240        postformat: function (string) {
14241            return string.replace(/,/g, '،');
14242        },
14243        week : {
14244            dow : 1, // Monday is the first day of the week.
14245            doy : 4  // The week that contains Jan 4th is the first week of the year.
14246        }
14247    });
14248
14249    //! moment.js locale configuration
14250
14251    hooks.defineLocale('uz-latn', {
14252        months : 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split('_'),
14253        monthsShort : 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),
14254        weekdays : 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split('_'),
14255        weekdaysShort : 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),
14256        weekdaysMin : 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),
14257        longDateFormat : {
14258            LT : 'HH:mm',
14259            LTS : 'HH:mm:ss',
14260            L : 'DD/MM/YYYY',
14261            LL : 'D MMMM YYYY',
14262            LLL : 'D MMMM YYYY HH:mm',
14263            LLLL : 'D MMMM YYYY, dddd HH:mm'
14264        },
14265        calendar : {
14266            sameDay : '[Bugun soat] LT [da]',
14267            nextDay : '[Ertaga] LT [da]',
14268            nextWeek : 'dddd [kuni soat] LT [da]',
14269            lastDay : '[Kecha soat] LT [da]',
14270            lastWeek : '[O\'tgan] dddd [kuni soat] LT [da]',
14271            sameElse : 'L'
14272        },
14273        relativeTime : {
14274            future : 'Yaqin %s ichida',
14275            past : 'Bir necha %s oldin',
14276            s : 'soniya',
14277            ss : '%d soniya',
14278            m : 'bir daqiqa',
14279            mm : '%d daqiqa',
14280            h : 'bir soat',
14281            hh : '%d soat',
14282            d : 'bir kun',
14283            dd : '%d kun',
14284            M : 'bir oy',
14285            MM : '%d oy',
14286            y : 'bir yil',
14287            yy : '%d yil'
14288        },
14289        week : {
14290            dow : 1, // Monday is the first day of the week.
14291            doy : 7  // The week that contains Jan 7th is the first week of the year.
14292        }
14293    });
vendor: 4,468 bytes, lines 14294-14406
14294
14295    //! moment.js locale configuration
14296
14297    hooks.defineLocale('uz', {
14298        months : 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split('_'),
14299        monthsShort : 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),
14300        weekdays : 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),
14301        weekdaysShort : 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),
14302        weekdaysMin : 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),
14303        longDateFormat : {
14304            LT : 'HH:mm',
14305            LTS : 'HH:mm:ss',
14306            L : 'DD/MM/YYYY',
14307            LL : 'D MMMM YYYY',
14308            LLL : 'D MMMM YYYY HH:mm',
14309            LLLL : 'D MMMM YYYY, dddd HH:mm'
14310        },
14311        calendar : {
14312            sameDay : '[Бугун соат] LT [да]',
14313            nextDay : '[Эртага] LT [да]',
14314            nextWeek : 'dddd [куни соат] LT [да]',
14315            lastDay : '[Кеча соат] LT [да]',
14316            lastWeek : '[Утган] dddd [куни соат] LT [да]',
14317            sameElse : 'L'
14318        },
14319        relativeTime : {
14320            future : 'Якин %s ичида',
14321            past : 'Бир неча %s олдин',
14322            s : 'фурсат',
14323            ss : '%d фурсат',
14324            m : 'бир дакика',
14325            mm : '%d дакика',
14326            h : 'бир соат',
14327            hh : '%d соат',
14328            d : 'бир кун',
14329            dd : '%d кун',
14330            M : 'бир ой',
14331            MM : '%d ой',
14332            y : 'бир йил',
14333            yy : '%d йил'
14334        },
14335        week : {
14336            dow : 1, // Monday is the first day of the week.
14337            doy : 7  // The week that contains Jan 4th is the first week of the year.
14338        }
14339    });
14340
14341    //! moment.js locale configuration
14342
14343    hooks.defineLocale('vi', {
14344        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('_'),
14345        monthsShort : 'Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12'.split('_'),
14346        monthsParseExact : true,
14347        weekdays : 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split('_'),
14348        weekdaysShort : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
14349        weekdaysMin : 'CN_T2_T3_T4_T5_T6_T7'.split('_'),
14350        weekdaysParseExact : true,
14351        meridiemParse: /sa|ch/i,
14352        isPM : function (input) {
14353            return /^ch$/i.test(input);
14354        },
14355        meridiem : function (hours, minutes, isLower) {
14356            if (hours < 12) {
14357                return isLower ? 'sa' : 'SA';
14358            } else {
14359                return isLower ? 'ch' : 'CH';
14360            }
14361        },
14362        longDateFormat : {
14363            LT : 'HH:mm',
14364            LTS : 'HH:mm:ss',
14365            L : 'DD/MM/YYYY',
14366            LL : 'D MMMM [năm] YYYY',
14367            LLL : 'D MMMM [năm] YYYY HH:mm',
14368            LLLL : 'dddd, D MMMM [năm] YYYY HH:mm',
14369            l : 'DD/M/YYYY',
14370            ll : 'D MMM YYYY',
14371            lll : 'D MMM YYYY HH:mm',
14372            llll : 'ddd, D MMM YYYY HH:mm'
14373        },
14374        calendar : {
14375            sameDay: '[Hôm nay lúc] LT',
14376            nextDay: '[Ngày mai lúc] LT',
14377            nextWeek: 'dddd [tuần tới lúc] LT',
14378            lastDay: '[Hôm qua lúc] LT',
14379            lastWeek: 'dddd [tuần rồi lúc] LT',
14380            sameElse: 'L'
14381        },
14382        relativeTime : {
14383            future : '%s tới',
14384            past : '%s trước',
14385            s : 'vài giây',
14386            ss : '%d giây' ,
14387            m : 'một phút',
14388            mm : '%d phút',
14389            h : 'một giờ',
14390            hh : '%d giờ',
14391            d : 'một ngày',
14392            dd : '%d ngày',
14393            M : 'một tháng',
14394            MM : '%d tháng',
14395            y : 'một năm',
14396            yy : '%d năm'
14397        },
14398        dayOfMonthOrdinalParse: /\d{1,2}/,
14399        ordinal : function (number) {
14400            return number;
14401        },
14402        week : {
14403            dow : 1, // Monday is the first day of the week.
14404            doy : 4  // The week that contains Jan 4th is the first week of the year.
14405        }
14406    });
14407
14408    //! moment.js locale configuration
14409
14410    hooks.defineLocale('x-pseudo', {
14411        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('_'),
14412        monthsShort : 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split('_'),
14413        monthsParseExact : true,
14414        weekdays : 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split('_'),
14415        weekdaysShort : 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),
14416        weekdaysMin : 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),
14417        weekdaysParseExact : true,
14418        longDateFormat : {
14419            LT : 'HH:mm',
14420            L : 'DD/MM/YYYY',
14421            LL : 'D MMMM YYYY',
14422            LLL : 'D MMMM YYYY HH:mm',
14423            LLLL : 'dddd, D MMMM YYYY HH:mm'
14424        },
14425        calendar : {
14426            sameDay : '[T~ódá~ý át] LT',
14427            nextDay : '[T~ómó~rró~w át] LT',
14428            nextWeek : 'dddd [át] LT',
14429            lastDay : '[Ý~ést~érdá~ý át] LT',
14430            lastWeek : '[L~ást] dddd [át] LT',
14431            sameElse : 'L'
14432        },
14433        relativeTime : {
14434            future : 'í~ñ %s',
14435            past : '%s á~gó',
14436            s : 'á ~féw ~sécó~ñds',
14437            ss : '%d s~écóñ~ds',
vendor: 16,478 bytes, lines 14438-14885
14438            m : 'á ~míñ~úté',
14439            mm : '%d m~íñú~tés',
14440            h : 'á~ñ hó~úr',
14441            hh : '%d h~óúrs',
14442            d : 'á ~dáý',
14443            dd : '%d d~áýs',
14444            M : 'á ~móñ~th',
14445            MM : '%d m~óñt~hs',
14446            y : 'á ~ýéár',
14447            yy : '%d ý~éárs'
14448        },
14449        dayOfMonthOrdinalParse: /\d{1,2}(th|st|nd|rd)/,
14450        ordinal : function (number) {
14451            var b = number % 10,
14452                output = (~~(number % 100 / 10) === 1) ? 'th' :
14453                (b === 1) ? 'st' :
14454                (b === 2) ? 'nd' :
14455                (b === 3) ? 'rd' : 'th';
14456            return number + output;
14457        },
14458        week : {
14459            dow : 1, // Monday is the first day of the week.
14460            doy : 4  // The week that contains Jan 4th is the first week of the year.
14461        }
14462    });
14463
14464    //! moment.js locale configuration
14465
14466    hooks.defineLocale('yo', {
14467        months : 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split('_'),
14468        monthsShort : 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),
14469        weekdays : 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),
14470        weekdaysShort : 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),
14471        weekdaysMin : 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),
14472        longDateFormat : {
14473            LT : 'h:mm A',
14474            LTS : 'h:mm:ss A',
14475            L : 'DD/MM/YYYY',
14476            LL : 'D MMMM YYYY',
14477            LLL : 'D MMMM YYYY h:mm A',
14478            LLLL : 'dddd, D MMMM YYYY h:mm A'
14479        },
14480        calendar : {
14481            sameDay : '[Ònì ni] LT',
14482            nextDay : '[Ọ̀la ni] LT',
14483            nextWeek : 'dddd [Ọsẹ̀ tón\'bọ] [ni] LT',
14484            lastDay : '[Àna ni] LT',
14485            lastWeek : 'dddd [Ọsẹ̀ tólọ́] [ni] LT',
14486            sameElse : 'L'
14487        },
14488        relativeTime : {
14489            future : 'ní %s',
14490            past : '%s kọjá',
14491            s : 'ìsẹjú aayá die',
14492            ss :'aayá %d',
14493            m : 'ìsẹjú kan',
14494            mm : 'ìsẹjú %d',
14495            h : 'wákati kan',
14496            hh : 'wákati %d',
14497            d : 'ọjọ́ kan',
14498            dd : 'ọjọ́ %d',
14499            M : 'osù kan',
14500            MM : 'osù %d',
14501            y : 'ọdún kan',
14502            yy : 'ọdún %d'
14503        },
14504        dayOfMonthOrdinalParse : /ọjọ́\s\d{1,2}/,
14505        ordinal : 'ọjọ́ %d',
14506        week : {
14507            dow : 1, // Monday is the first day of the week.
14508            doy : 4 // The week that contains Jan 4th is the first week of the year.
14509        }
14510    });
14511
14512    //! moment.js locale configuration
14513
14514    hooks.defineLocale('zh-cn', {
14515        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14516        monthsShort : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14517        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
14518        weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
14519        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
14520        longDateFormat : {
14521            LT : 'HH:mm',
14522            LTS : 'HH:mm:ss',
14523            L : 'YYYY/MM/DD',
14524            LL : 'YYYY年M月D日',
14525            LLL : 'YYYY年M月D日Ah点mm分',
14526            LLLL : 'YYYY年M月D日ddddAh点mm分',
14527            l : 'YYYY/M/D',
14528            ll : 'YYYY年M月D日',
14529            lll : 'YYYY年M月D日 HH:mm',
14530            llll : 'YYYY年M月D日dddd HH:mm'
14531        },
14532        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
14533        meridiemHour: function (hour, meridiem) {
14534            if (hour === 12) {
14535                hour = 0;
14536            }
14537            if (meridiem === '凌晨' || meridiem === '早上' ||
14538                    meridiem === '上午') {
14539                return hour;
14540            } else if (meridiem === '下午' || meridiem === '晚上') {
14541                return hour + 12;
14542            } else {
14543                // '中午'
14544                return hour >= 11 ? hour : hour + 12;
14545            }
14546        },
14547        meridiem : function (hour, minute, isLower) {
14548            var hm = hour * 100 + minute;
14549            if (hm < 600) {
14550                return '凌晨';
14551            } else if (hm < 900) {
14552                return '早上';
14553            } else if (hm < 1130) {
14554                return '上午';
14555            } else if (hm < 1230) {
14556                return '中午';
14557            } else if (hm < 1800) {
14558                return '下午';
14559            } else {
14560                return '晚上';
14561            }
14562        },
14563        calendar : {
14564            sameDay : '[今天]LT',
14565            nextDay : '[明天]LT',
14566            nextWeek : '[下]ddddLT',
14567            lastDay : '[昨天]LT',
14568            lastWeek : '[上]ddddLT',
14569            sameElse : 'L'
14570        },
14571        dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
14572        ordinal : function (number, period) {
14573            switch (period) {
14574                case 'd':
14575                case 'D':
14576                case 'DDD':
14577                    return number + '日';
14578                case 'M':
14579                    return number + '月';
14580                case 'w':
14581                case 'W':
14582                    return number + '周';
14583                default:
14584                    return number;
14585            }
14586        },
14587        relativeTime : {
14588            future : '%s内',
14589            past : '%s前',
14590            s : '几秒',
14591            ss : '%d 秒',
14592            m : '1 分钟',
14593            mm : '%d 分钟',
14594            h : '1 小时',
14595            hh : '%d 小时',
14596            d : '1 天',
14597            dd : '%d 天',
14598            M : '1 个月',
14599            MM : '%d 个月',
14600            y : '1 å¹´',
14601            yy : '%d å¹´'
14602        },
14603        week : {
14604            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
14605            dow : 1, // Monday is the first day of the week.
14606            doy : 4  // The week that contains Jan 4th is the first week of the year.
14607        }
14608    });
14609
14610    //! moment.js locale configuration
14611
14612    hooks.defineLocale('zh-hk', {
14613        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14614        monthsShort : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14615        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
14616        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
14617        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
14618        longDateFormat : {
14619            LT : 'HH:mm',
14620            LTS : 'HH:mm:ss',
14621            L : 'YYYY/MM/DD',
14622            LL : 'YYYY年M月D日',
14623            LLL : 'YYYY年M月D日 HH:mm',
14624            LLLL : 'YYYY年M月D日dddd HH:mm',
14625            l : 'YYYY/M/D',
14626            ll : 'YYYY年M月D日',
14627            lll : 'YYYY年M月D日 HH:mm',
14628            llll : 'YYYY年M月D日dddd HH:mm'
14629        },
14630        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
14631        meridiemHour : function (hour, meridiem) {
14632            if (hour === 12) {
14633                hour = 0;
14634            }
14635            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
14636                return hour;
14637            } else if (meridiem === '中午') {
14638                return hour >= 11 ? hour : hour + 12;
14639            } else if (meridiem === '下午' || meridiem === '晚上') {
14640                return hour + 12;
14641            }
14642        },
14643        meridiem : function (hour, minute, isLower) {
14644            var hm = hour * 100 + minute;
14645            if (hm < 600) {
14646                return '凌晨';
14647            } else if (hm < 900) {
14648                return '早上';
14649            } else if (hm < 1130) {
14650                return '上午';
14651            } else if (hm < 1230) {
14652                return '中午';
14653            } else if (hm < 1800) {
14654                return '下午';
14655            } else {
14656                return '晚上';
14657            }
14658        },
14659        calendar : {
14660            sameDay : '[今天]LT',
14661            nextDay : '[明天]LT',
14662            nextWeek : '[下]ddddLT',
14663            lastDay : '[昨天]LT',
14664            lastWeek : '[上]ddddLT',
14665            sameElse : 'L'
14666        },
14667        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
14668        ordinal : function (number, period) {
14669            switch (period) {
14670                case 'd' :
14671                case 'D' :
14672                case 'DDD' :
14673                    return number + '日';
14674                case 'M' :
14675                    return number + '月';
14676                case 'w' :
14677                case 'W' :
14678                    return number + '週';
14679                default :
14680                    return number;
14681            }
14682        },
14683        relativeTime : {
14684            future : '%s內',
14685            past : '%s前',
14686            s : '幾秒',
14687            ss : '%d 秒',
14688            m : '1 分鐘',
14689            mm : '%d 分鐘',
14690            h : '1 小時',
14691            hh : '%d 小時',
14692            d : '1 天',
14693            dd : '%d 天',
14694            M : '1 個月',
14695            MM : '%d 個月',
14696            y : '1 å¹´',
14697            yy : '%d å¹´'
14698        }
14699    });
14700
14701    //! moment.js locale configuration
14702
14703    hooks.defineLocale('zh-tw', {
14704        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14705        monthsShort : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14706        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
14707        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
14708        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
14709        longDateFormat : {
14710            LT : 'HH:mm',
14711            LTS : 'HH:mm:ss',
14712            L : 'YYYY/MM/DD',
14713            LL : 'YYYY年M月D日',
14714            LLL : 'YYYY年M月D日 HH:mm',
14715            LLLL : 'YYYY年M月D日dddd HH:mm',
14716            l : 'YYYY/M/D',
14717            ll : 'YYYY年M月D日',
14718            lll : 'YYYY年M月D日 HH:mm',
14719            llll : 'YYYY年M月D日dddd HH:mm'
14720        },
14721        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
14722        meridiemHour : function (hour, meridiem) {
14723            if (hour === 12) {
14724                hour = 0;
14725            }
14726            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
14727                return hour;
14728            } else if (meridiem === '中午') {
14729                return hour >= 11 ? hour : hour + 12;
14730            } else if (meridiem === '下午' || meridiem === '晚上') {
14731                return hour + 12;
14732            }
14733        },
14734        meridiem : function (hour, minute, isLower) {
14735            var hm = hour * 100 + minute;
14736            if (hm < 600) {
14737                return '凌晨';
14738            } else if (hm < 900) {
14739                return '早上';
14740            } else if (hm < 1130) {
14741                return '上午';
14742            } else if (hm < 1230) {
14743                return '中午';
14744            } else if (hm < 1800) {
14745                return '下午';
14746            } else {
14747                return '晚上';
14748            }
14749        },
14750        calendar : {
14751            sameDay : '[今天] LT',
14752            nextDay : '[明天] LT',
14753            nextWeek : '[下]dddd LT',
14754            lastDay : '[昨天] LT',
14755            lastWeek : '[上]dddd LT',
14756            sameElse : 'L'
14757        },
14758        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
14759        ordinal : function (number, period) {
14760            switch (period) {
14761                case 'd' :
14762                case 'D' :
14763                case 'DDD' :
14764                    return number + '日';
14765                case 'M' :
14766                    return number + '月';
14767                case 'w' :
14768                case 'W' :
14769                    return number + '週';
14770                default :
14771                    return number;
14772            }
14773        },
14774        relativeTime : {
14775            future : '%s內',
14776            past : '%s前',
14777            s : '幾秒',
14778            ss : '%d 秒',
14779            m : '1 分鐘',
14780            mm : '%d 分鐘',
14781            h : '1 小時',
14782            hh : '%d 小時',
14783            d : '1 天',
14784            dd : '%d 天',
14785            M : '1 個月',
14786            MM : '%d 個月',
14787            y : '1 å¹´',
14788            yy : '%d å¹´'
14789        }
14790    });
14791
14792    hooks.defineLocale('zh', {
14793        months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14794        monthsShort : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
14795        weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
14796        weekdaysShort : '週日_週一_週二_週三_週四_週五_週六'.split('_'),
14797        weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
14798        longDateFormat : {
14799            LT : 'HH:mm',
14800            LTS : 'HH:mm:ss',
14801            L : 'YYYY/MM/DD',
14802            LL : 'YYYY年M月D日',
14803            LLL : 'YYYY年M月D日 HH:mm',
14804            LLLL : 'YYYY年M月D日dddd HH:mm',
14805            l : 'YYYY/M/D',
14806            ll : 'YYYY年M月D日',
14807            lll : 'YYYY年M月D日 HH:mm',
14808            llll : 'YYYY年M月D日dddd HH:mm'
14809        },
14810        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
14811        meridiemHour : function (hour, meridiem) {
14812            if (hour === 12) {
14813                hour = 0;
14814            }
14815            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {
14816                return hour;
14817            } else if (meridiem === '中午') {
14818                return hour >= 11 ? hour : hour + 12;
14819            } else if (meridiem === '下午' || meridiem === '晚上') {
14820                return hour + 12;
14821            }
14822        },
14823        meridiem : function (hour, minute, isLower) {
14824            var hm = hour * 100 + minute;
14825            if (hm < 600) {
14826                return '凌晨';
14827            } else if (hm < 900) {
14828                return '早上';
14829            } else if (hm < 1130) {
14830                return '上午';
14831            } else if (hm < 1230) {
14832                return '中午';
14833            } else if (hm < 1800) {
14834                return '下午';
14835            } else {
14836                return '晚上';
14837            }
14838        },
14839        calendar : {
14840            sameDay : '[今天] LT',
14841            nextDay : '[明天] LT',
14842            nextWeek : '[下]dddd LT',
14843            lastDay : '[昨天] LT',
14844            lastWeek : '[上]dddd LT',
14845            sameElse : 'L'
14846        },
14847        dayOfMonthOrdinalParse: /\d{1,2}(日|月|週)/,
14848        ordinal : function (number, period) {
14849            switch (period) {
14850                case 'd' :
14851                case 'D' :
14852                case 'DDD' :
14853                    return number + '日';
14854                case 'M' :
14855                    return number + '月';
14856                case 'w' :
14857                case 'W' :
14858                    return number + '週';
14859                default :
14860                    return number;
14861            }
14862        },
14863        relativeTime : {
14864            future : '%s內',
14865            past : '%s前',
14866            s : '幾秒',
14867            ss : '%d 秒',
14868            m : '1 分鐘',
14869            mm : '%d 分鐘',
14870            h : '1 小時',
14871            hh : '%d 小時',
14872            d : '1 天',
14873            dd : '%d 天',
14874            M : '1 個月',
14875            MM : '%d 個月',
14876            y : '1 å¹´',
14877            yy : '%d å¹´'
14878        }
14879    });
14880
14881    hooks.locale('en');
14882
14883    return hooks;
14884
14885})));

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.