{"version":3,"file":"index-DjIio1qt.chunk.mjs","sources":["../node_modules/@nextcloud/l10n/dist/gettext.mjs","../node_modules/moment/min/moment-with-locales.js","../node_modules/@nextcloud/moment/dist/index.mjs","../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.js","../node_modules/vite-plugin-node-polyfills/shims/buffer/dist/index.cjs","../node_modules/safe-buffer/index.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/@nextcloud/capabilities/node_modules/@nextcloud/initial-state/dist/index.js","../node_modules/@nextcloud/capabilities/dist/index.mjs","../node_modules/@nextcloud/files/dist/index.mjs"],"sourcesContent":["import { a as getLanguage, e as getPlural, t as translate, d as translatePlural } from \"./chunks/translation-DoG5ZELJ.mjs\";\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass GettextWrapper {\n  bundle;\n  constructor(pluralFunction) {\n    this.bundle = {\n      pluralFunction,\n      translations: {}\n    };\n  }\n  /**\n   * Append new translations to the wrapper.\n   *\n   * This is useful if translations should be added on demand,\n   * e.g. depending on component usage.\n   *\n   * @param bundle - The new translation bundle to append\n   */\n  addTranslations(bundle) {\n    const dict = Object.values(bundle.translations[\"\"] ?? {}).map(({ msgid, msgid_plural: msgidPlural, msgstr }) => {\n      if (msgidPlural !== void 0) {\n        return [`_${msgid}_::_${msgidPlural}_`, msgstr];\n      }\n      return [msgid, msgstr[0]];\n    });\n    this.bundle.translations = {\n      ...this.bundle.translations,\n      ...Object.fromEntries(dict)\n    };\n  }\n  /**\n   * Get translated string (singular form), optionally with placeholders\n   *\n   * @param original original string to translate\n   * @param placeholders map of placeholder key to value\n   */\n  gettext(original, placeholders = {}) {\n    return translate(\"\", original, placeholders, void 0, { bundle: this.bundle });\n  }\n  /**\n   * Get translated string with plural forms\n   *\n   * @param singular Singular text form\n   * @param plural Plural text form to be used if `count` requires it\n   * @param count The number to insert into the text\n   * @param placeholders optional map of placeholder key to value\n   */\n  ngettext(singular, plural, count, placeholders = {}) {\n    return translatePlural(\"\", singular, plural, count, placeholders, { bundle: this.bundle });\n  }\n}\nclass GettextBuilder {\n  debug = false;\n  language = \"en\";\n  translations = {};\n  setLanguage(language) {\n    this.language = language;\n    return this;\n  }\n  /**\n   * Try to detect locale from context with `en` as fallback value\n   * This only works within a Nextcloud page context.\n   *\n   * @deprecated use `detectLanguage` instead.\n   */\n  detectLocale() {\n    return this.detectLanguage();\n  }\n  /**\n   * Try to detect locale from context with `en` as fallback value.\n   * This only works within a Nextcloud page context.\n   */\n  detectLanguage() {\n    return this.setLanguage(getLanguage().replace(\"-\", \"_\"));\n  }\n  /**\n   * Register a new translation bundle for a specified language.\n   *\n   * Please note that existing translations for that language will be overwritten.\n   *\n   * @param language - Language this is the translation for\n   * @param data - The translation bundle\n   */\n  addTranslation(language, data) {\n    this.translations[language] = data;\n    return this;\n  }\n  enableDebugMode() {\n    this.debug = true;\n    return this;\n  }\n  build() {\n    if (this.debug) {\n      console.debug(`Creating gettext instance for language ${this.language}`);\n    }\n    const wrapper = new GettextWrapper((n) => getPlural(n, this.language));\n    if (this.language in this.translations) {\n      wrapper.addTranslations(this.translations[this.language]);\n    }\n    return wrapper;\n  }\n}\nfunction getGettextBuilder() {\n  return new GettextBuilder();\n}\nexport {\n  getGettextBuilder\n};\n//# sourceMappingURL=gettext.mjs.map\n",";(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        var flags = null,\n            parsedParts = false,\n            isNowValid = m._d && !isNaN(m._d.getTime());\n        if (isNowValid) {\n            flags = getParsingFlags(m);\n            parsedParts = some.call(flags.parsedDateParts, function (i) {\n                return i != null;\n            });\n            isNowValid =\n                flags.overflow < 0 &&\n                !flags.empty &&\n                !flags.invalidEra &&\n                !flags.invalidMonth &&\n                !flags.invalidWeekday &&\n                !flags.weekdayMismatch &&\n                !flags.nullInput &&\n                !flags.invalidFormat &&\n                !flags.userInvalidated &&\n                (!flags.meridiem || (flags.meridiem && parsedParts));\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n        }\n        if (Object.isFrozen == null || !Object.isFrozen(m)) {\n            m._isValid = isNowValid;\n        } else {\n            return isNowValid;\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {\n        D: 'date',\n        dates: 'date',\n        date: 'date',\n        d: 'day',\n        days: 'day',\n        day: 'day',\n        e: 'weekday',\n        weekdays: 'weekday',\n        weekday: 'weekday',\n        E: 'isoWeekday',\n        isoweekdays: 'isoWeekday',\n        isoweekday: 'isoWeekday',\n        DDD: 'dayOfYear',\n        dayofyears: 'dayOfYear',\n        dayofyear: 'dayOfYear',\n        h: 'hour',\n        hours: 'hour',\n        hour: 'hour',\n        ms: 'millisecond',\n        milliseconds: 'millisecond',\n        millisecond: 'millisecond',\n        m: 'minute',\n        minutes: 'minute',\n        minute: 'minute',\n        M: 'month',\n        months: 'month',\n        month: 'month',\n        Q: 'quarter',\n        quarters: 'quarter',\n        quarter: 'quarter',\n        s: 'second',\n        seconds: 'second',\n        second: 'second',\n        gg: 'weekYear',\n        weekyears: 'weekYear',\n        weekyear: 'weekYear',\n        GG: 'isoWeekYear',\n        isoweekyears: 'isoWeekYear',\n        isoweekyear: 'isoWeekYear',\n        w: 'week',\n        weeks: 'week',\n        week: 'week',\n        W: 'isoWeek',\n        isoweeks: 'isoWeek',\n        isoweek: 'isoWeek',\n        y: 'year',\n        years: 'year',\n        year: 'year',\n    };\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {\n        date: 9,\n        day: 11,\n        weekday: 11,\n        isoWeekday: 11,\n        dayOfYear: 4,\n        hour: 13,\n        millisecond: 16,\n        minute: 14,\n        month: 8,\n        quarter: 7,\n        second: 15,\n        weekYear: 1,\n        isoWeekYear: 1,\n        week: 5,\n        isoWeek: 5,\n        year: 1,\n    };\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[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,\n        match1to2NoLeadingZero = /^[1-9]\\d?/, //         1-99\n        match1to2HasZero = /^([1-9]\\d|\\d)/, //           0-99\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        if (!mom.isValid()) {\n            return NaN;\n        }\n\n        var d = mom._d,\n            isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n            case 'Seconds':\n                return isUTC ? d.getUTCSeconds() : d.getSeconds();\n            case 'Minutes':\n                return isUTC ? d.getUTCMinutes() : d.getMinutes();\n            case 'Hours':\n                return isUTC ? d.getUTCHours() : d.getHours();\n            case 'Date':\n                return isUTC ? d.getUTCDate() : d.getDate();\n            case 'Day':\n                return isUTC ? d.getUTCDay() : d.getDay();\n            case 'Month':\n                return isUTC ? d.getUTCMonth() : d.getMonth();\n            case 'FullYear':\n                return isUTC ? d.getUTCFullYear() : d.getFullYear();\n            default:\n                return NaN; // Just in case\n        }\n    }\n\n    function set$1(mom, unit, value) {\n        var d, isUTC, year, month, date;\n\n        if (!mom.isValid() || isNaN(value)) {\n            return;\n        }\n\n        d = mom._d;\n        isUTC = mom._isUTC;\n\n        switch (unit) {\n            case 'Milliseconds':\n                return void (isUTC\n                    ? d.setUTCMilliseconds(value)\n                    : d.setMilliseconds(value));\n            case 'Seconds':\n                return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n            case 'Minutes':\n                return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n            case 'Hours':\n                return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n            case 'Date':\n                return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n            // case 'Day': // Not real\n            //    return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n            // case 'Month': // Not used because we need to pass two variables\n            //     return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n            case 'FullYear':\n                break; // See below ...\n            default:\n                return; // Just in case\n        }\n\n        year = value;\n        month = mom.month();\n        date = mom.date();\n        date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n        void (isUTC\n            ? d.setUTCFullYear(year, month, date)\n            : d.setFullYear(year, month, date));\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // PARSING\n\n    addRegexToken('M', match1to2, match1to2NoLeadingZero);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        var month = value,\n            date = mom.date();\n\n        date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n        void (mom._isUTC\n            ? mom._d.setUTCMonth(month, date)\n            : mom._d.setMonth(month, date));\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            shortP,\n            longP;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortP = regexEscape(this.monthsShort(mom, ''));\n            longP = regexEscape(this.months(mom, ''));\n            shortPieces.push(shortP);\n            longPieces.push(longP);\n            mixedPieces.push(longP);\n            mixedPieces.push(shortP);\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // PARSING\n\n    addRegexToken('w', match1to2, match1to2NoLeadingZero);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2, match1to2NoLeadingZero);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n              ? weekdays[m.day()]\n              : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n              ? this._weekdaysShort[m.day()]\n              : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n              ? this._weekdaysMin[m.day()]\n              : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        var day = get(this, 'Day');\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2, match1to2HasZero);\n    addRegexToken('h', match1to2, match1to2NoLeadingZero);\n    addRegexToken('k', match1to2, match1to2NoLeadingZero);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        // Ensure name is available and function returns boolean\n        return !!(name && name.match('^[^/\\\\\\\\]*$'));\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                      ? DATE\n                      : a[HOUR] < 0 ||\n                          a[HOUR] > 24 ||\n                          (a[HOUR] === 24 &&\n                              (a[MINUTE] !== 0 ||\n                                  a[SECOND] !== 0 ||\n                                  a[MILLISECOND] !== 0))\n                        ? HOUR\n                        : a[MINUTE] < 0 || a[MINUTE] > 59\n                          ? MINUTE\n                          : a[SECOND] < 0 || a[SECOND] > 59\n                            ? SECOND\n                            : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                              ? MILLISECOND\n                              : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 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)\n    var extendedIsoRegex =\n            /^\\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)?)?$/,\n        basicIsoRegex =\n            /^\\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)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(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}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n              ? 'lastWeek'\n              : diff < 0\n                ? 'lastDay'\n                : diff < 1\n                  ? 'sameDay'\n                  : diff < 2\n                    ? 'nextDay'\n                    : diff < 7\n                      ? 'nextWeek'\n                      : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            erasName,\n            erasAbbr,\n            erasNarrow,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            erasName = regexEscape(eras[i].name);\n            erasAbbr = regexEscape(eras[i].abbr);\n            erasNarrow = regexEscape(eras[i].narrow);\n\n            namePieces.push(erasName);\n            abbrPieces.push(erasAbbr);\n            narrowPieces.push(erasNarrow);\n            mixedPieces.push(erasName);\n            mixedPieces.push(erasAbbr);\n            mixedPieces.push(erasNarrow);\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday() + this.localeData()._week.dow,\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // PARSING\n\n    addRegexToken('D', match1to2, match1to2NoLeadingZero);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // PARSING\n\n    addRegexToken('m', match1to2, match1to2HasZero);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // PARSING\n\n    addRegexToken('s', match1to2, match1to2HasZero);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y'),\n        valueOf$1 = asMilliseconds;\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.30.1';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('af', {\n        months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n            '_'\n        ),\n        weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n        weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n        meridiemParse: /vm|nm/i,\n        isPM: function (input) {\n            return /^nm$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'vm' : 'VM';\n            } else {\n                return isLower ? 'nm' : 'NM';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Vandag om] LT',\n            nextDay: '[Môre om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[Gister om] LT',\n            lastWeek: '[Laas] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oor %s',\n            past: '%s gelede',\n            s: \"'n paar sekondes\",\n            ss: '%d sekondes',\n            m: \"'n minuut\",\n            mm: '%d minute',\n            h: \"'n uur\",\n            hh: '%d ure',\n            d: \"'n dag\",\n            dd: '%d dae',\n            M: \"'n maand\",\n            MM: '%d maande',\n            y: \"'n jaar\",\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            ); // Thanks to Joris Röling : https://github.com/jjupiter\n        },\n        week: {\n            dow: 1, // Maandag is die eerste dag van die week.\n            doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var pluralForm = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                  ? 1\n                  : n === 2\n                    ? 2\n                    : n % 100 >= 3 && n % 100 <= 10\n                      ? 3\n                      : n % 100 >= 11\n                        ? 4\n                        : 5;\n        },\n        plurals = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm(number),\n                    str = plurals[u][pluralForm(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months$1 = [\n            'جانفي',\n            'فيفري',\n            'مارس',\n            'أفريل',\n            'ماي',\n            'جوان',\n            'جويلية',\n            'أوت',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    hooks.defineLocale('ar-dz', {\n        months: months$1,\n        monthsShort: months$1,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize('s'),\n            ss: pluralize('s'),\n            m: pluralize('m'),\n            mm: pluralize('m'),\n            h: pluralize('h'),\n            hh: pluralize('h'),\n            d: pluralize('d'),\n            dd: pluralize('d'),\n            M: pluralize('M'),\n            MM: pluralize('M'),\n            y: pluralize('y'),\n            yy: pluralize('y'),\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('ar-kw', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap = {\n            1: '1',\n            2: '2',\n            3: '3',\n            4: '4',\n            5: '5',\n            6: '6',\n            7: '7',\n            8: '8',\n            9: '9',\n            0: '0',\n        },\n        pluralForm$1 = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                  ? 1\n                  : n === 2\n                    ? 2\n                    : n % 100 >= 3 && n % 100 <= 10\n                      ? 3\n                      : n % 100 >= 11\n                        ? 4\n                        : 5;\n        },\n        plurals$1 = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize$1 = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm$1(number),\n                    str = plurals$1[u][pluralForm$1(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months$2 = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    hooks.defineLocale('ar-ly', {\n        months: months$2,\n        monthsShort: months$2,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize$1('s'),\n            ss: pluralize$1('s'),\n            m: pluralize$1('m'),\n            mm: pluralize$1('m'),\n            h: pluralize$1('h'),\n            hh: pluralize$1('h'),\n            d: pluralize$1('d'),\n            dd: pluralize$1('d'),\n            M: pluralize$1('M'),\n            MM: pluralize$1('M'),\n            y: pluralize$1('y'),\n            yy: pluralize$1('y'),\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('ar-ma', {\n        months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$1 = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        };\n\n    hooks.defineLocale('ar-ps', {\n        months: 'كانون الثاني_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_تشري الأوّل_تشرين الثاني_كانون الأوّل'.split(\n            '_'\n        ),\n        monthsShort:\n            'ك٢_شباط_آذار_نيسان_أيّار_حزيران_تمّوز_آب_أيلول_ت١_ت٢_ك١'.split('_'),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap[match];\n                })\n                .split('') // reversed since negative lookbehind not supported everywhere\n                .reverse()\n                .join('')\n                .replace(/[١٢](?![\\u062a\\u0643])/g, function (match) {\n                    return numberMap[match];\n                })\n                .split('')\n                .reverse()\n                .join('')\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap$1[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$2 = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap$1 = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        };\n\n    hooks.defineLocale('ar-sa', {\n        months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap$1[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap$2[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('ar-tn', {\n        months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n                '_'\n            ),\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[اليوم على الساعة] LT',\n            nextDay: '[غدا على الساعة] LT',\n            nextWeek: 'dddd [على الساعة] LT',\n            lastDay: '[أمس على الساعة] LT',\n            lastWeek: 'dddd [على الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'في %s',\n            past: 'منذ %s',\n            s: 'ثوان',\n            ss: '%d ثانية',\n            m: 'دقيقة',\n            mm: '%d دقائق',\n            h: 'ساعة',\n            hh: '%d ساعات',\n            d: 'يوم',\n            dd: '%d أيام',\n            M: 'شهر',\n            MM: '%d أشهر',\n            y: 'سنة',\n            yy: '%d سنوات',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$3 = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap$2 = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        pluralForm$2 = function (n) {\n            return n === 0\n                ? 0\n                : n === 1\n                  ? 1\n                  : n === 2\n                    ? 2\n                    : n % 100 >= 3 && n % 100 <= 10\n                      ? 3\n                      : n % 100 >= 11\n                        ? 4\n                        : 5;\n        },\n        plurals$2 = {\n            s: [\n                'أقل من ثانية',\n                'ثانية واحدة',\n                ['ثانيتان', 'ثانيتين'],\n                '%d ثوان',\n                '%d ثانية',\n                '%d ثانية',\n            ],\n            m: [\n                'أقل من دقيقة',\n                'دقيقة واحدة',\n                ['دقيقتان', 'دقيقتين'],\n                '%d دقائق',\n                '%d دقيقة',\n                '%d دقيقة',\n            ],\n            h: [\n                'أقل من ساعة',\n                'ساعة واحدة',\n                ['ساعتان', 'ساعتين'],\n                '%d ساعات',\n                '%d ساعة',\n                '%d ساعة',\n            ],\n            d: [\n                'أقل من يوم',\n                'يوم واحد',\n                ['يومان', 'يومين'],\n                '%d أيام',\n                '%d يومًا',\n                '%d يوم',\n            ],\n            M: [\n                'أقل من شهر',\n                'شهر واحد',\n                ['شهران', 'شهرين'],\n                '%d أشهر',\n                '%d شهرا',\n                '%d شهر',\n            ],\n            y: [\n                'أقل من عام',\n                'عام واحد',\n                ['عامان', 'عامين'],\n                '%d أعوام',\n                '%d عامًا',\n                '%d عام',\n            ],\n        },\n        pluralize$2 = function (u) {\n            return function (number, withoutSuffix, string, isFuture) {\n                var f = pluralForm$2(number),\n                    str = plurals$2[u][pluralForm$2(number)];\n                if (f === 2) {\n                    str = str[withoutSuffix ? 0 : 1];\n                }\n                return str.replace(/%d/i, number);\n            };\n        },\n        months$3 = [\n            'يناير',\n            'فبراير',\n            'مارس',\n            'أبريل',\n            'مايو',\n            'يونيو',\n            'يوليو',\n            'أغسطس',\n            'سبتمبر',\n            'أكتوبر',\n            'نوفمبر',\n            'ديسمبر',\n        ];\n\n    hooks.defineLocale('ar', {\n        months: months$3,\n        monthsShort: months$3,\n        weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n        weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n        weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/\\u200FM/\\u200FYYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ص|م/,\n        isPM: function (input) {\n            return 'م' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ص';\n            } else {\n                return 'م';\n            }\n        },\n        calendar: {\n            sameDay: '[اليوم عند الساعة] LT',\n            nextDay: '[غدًا عند الساعة] LT',\n            nextWeek: 'dddd [عند الساعة] LT',\n            lastDay: '[أمس عند الساعة] LT',\n            lastWeek: 'dddd [عند الساعة] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'بعد %s',\n            past: 'منذ %s',\n            s: pluralize$2('s'),\n            ss: pluralize$2('s'),\n            m: pluralize$2('m'),\n            mm: pluralize$2('m'),\n            h: pluralize$2('h'),\n            hh: pluralize$2('h'),\n            d: pluralize$2('d'),\n            dd: pluralize$2('d'),\n            M: pluralize$2('M'),\n            MM: pluralize$2('M'),\n            y: pluralize$2('y'),\n            yy: pluralize$2('y'),\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap$2[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap$3[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var suffixes = {\n        1: '-inci',\n        5: '-inci',\n        8: '-inci',\n        70: '-inci',\n        80: '-inci',\n        2: '-nci',\n        7: '-nci',\n        20: '-nci',\n        50: '-nci',\n        3: '-üncü',\n        4: '-üncü',\n        100: '-üncü',\n        6: '-ncı',\n        9: '-uncu',\n        10: '-uncu',\n        30: '-uncu',\n        60: '-ıncı',\n        90: '-ıncı',\n    };\n\n    hooks.defineLocale('az', {\n        months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n        weekdays:\n            'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n                '_'\n            ),\n        weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n        weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[sabah saat] LT',\n            nextWeek: '[gələn həftə] dddd [saat] LT',\n            lastDay: '[dünən] LT',\n            lastWeek: '[keçən həftə] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s əvvəl',\n            s: 'bir neçə saniyə',\n            ss: '%d saniyə',\n            m: 'bir dəqiqə',\n            mm: '%d dəqiqə',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir il',\n            yy: '%d il',\n        },\n        meridiemParse: /gecə|səhər|gündüz|axşam/,\n        isPM: function (input) {\n            return /^(gündüz|axşam)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'gecə';\n            } else if (hour < 12) {\n                return 'səhər';\n            } else if (hour < 17) {\n                return 'gündüz';\n            } else {\n                return 'axşam';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n        ordinal: function (number) {\n            if (number === 0) {\n                // special case for zero\n                return number + '-ıncı';\n            }\n            var a = number % 10,\n                b = (number % 100) - a,\n                c = number >= 100 ? 100 : null;\n            return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function plural(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n              ? forms[1]\n              : forms[2];\n    }\n    function relativeTimeWithPlural(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n            hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n            dd: 'дзень_дні_дзён',\n            MM: 'месяц_месяцы_месяцаў',\n            yy: 'год_гады_гадоў',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвіліна' : 'хвіліну';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'гадзіна' : 'гадзіну';\n        } else {\n            return number + ' ' + plural(format[key], +number);\n        }\n    }\n\n    hooks.defineLocale('be', {\n        months: {\n            format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n                '_'\n            ),\n            standalone:\n                'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n                    '_'\n                ),\n        },\n        monthsShort:\n            'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n        weekdays: {\n            format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n                '_'\n            ),\n            standalone:\n                'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n                    '_'\n                ),\n            isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n        },\n        weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n        },\n        calendar: {\n            sameDay: '[Сёння ў] LT',\n            nextDay: '[Заўтра ў] LT',\n            lastDay: '[Учора ў] LT',\n            nextWeek: function () {\n                return '[У] dddd [ў] LT';\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return '[У мінулую] dddd [ў] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                        return '[У мінулы] dddd [ў] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'праз %s',\n            past: '%s таму',\n            s: 'некалькі секунд',\n            m: relativeTimeWithPlural,\n            mm: relativeTimeWithPlural,\n            h: relativeTimeWithPlural,\n            hh: relativeTimeWithPlural,\n            d: 'дзень',\n            dd: relativeTimeWithPlural,\n            M: 'месяц',\n            MM: relativeTimeWithPlural,\n            y: 'год',\n            yy: relativeTimeWithPlural,\n        },\n        meridiemParse: /ночы|раніцы|дня|вечара/,\n        isPM: function (input) {\n            return /^(дня|вечара)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночы';\n            } else if (hour < 12) {\n                return 'раніцы';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечара';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return (number % 10 === 2 || number % 10 === 3) &&\n                        number % 100 !== 12 &&\n                        number % 100 !== 13\n                        ? number + '-і'\n                        : number + '-ы';\n                case 'D':\n                    return number + '-га';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('bg', {\n        months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Днес в] LT',\n            nextDay: '[Утре в] LT',\n            nextWeek: 'dddd [в] LT',\n            lastDay: '[Вчера в] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Миналата] dddd [в] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Миналия] dddd [в] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'след %s',\n            past: 'преди %s',\n            s: 'няколко секунди',\n            ss: '%d секунди',\n            m: 'минута',\n            mm: '%d минути',\n            h: 'час',\n            hh: '%d часа',\n            d: 'ден',\n            dd: '%d дена',\n            w: 'седмица',\n            ww: '%d седмици',\n            M: 'месец',\n            MM: '%d месеца',\n            y: 'година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('bm', {\n        months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n            '_'\n        ),\n        monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n        weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n        weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n        weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'MMMM [tile] D [san] YYYY',\n            LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n            LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bi lɛrɛ] LT',\n            nextDay: '[Sini lɛrɛ] LT',\n            nextWeek: 'dddd [don lɛrɛ] LT',\n            lastDay: '[Kunu lɛrɛ] LT',\n            lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s kɔnɔ',\n            past: 'a bɛ %s bɔ',\n            s: 'sanga dama dama',\n            ss: 'sekondi %d',\n            m: 'miniti kelen',\n            mm: 'miniti %d',\n            h: 'lɛrɛ kelen',\n            hh: 'lɛrɛ %d',\n            d: 'tile kelen',\n            dd: 'tile %d',\n            M: 'kalo kelen',\n            MM: 'kalo %d',\n            y: 'san kelen',\n            yy: 'san %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$4 = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap$3 = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    hooks.defineLocale('bn-bd', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort:\n            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n                '_'\n            ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap$3[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap$4[match];\n            });\n        },\n\n        meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'রাত') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ভোর') {\n                return hour;\n            } else if (meridiem === 'সকাল') {\n                return hour;\n            } else if (meridiem === 'দুপুর') {\n                return hour >= 3 ? hour : hour + 12;\n            } else if (meridiem === 'বিকাল') {\n                return hour + 12;\n            } else if (meridiem === 'সন্ধ্যা') {\n                return hour + 12;\n            }\n        },\n\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 6) {\n                return 'ভোর';\n            } else if (hour < 12) {\n                return 'সকাল';\n            } else if (hour < 15) {\n                return 'দুপুর';\n            } else if (hour < 18) {\n                return 'বিকাল';\n            } else if (hour < 20) {\n                return 'সন্ধ্যা';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$5 = {\n            1: '১',\n            2: '২',\n            3: '৩',\n            4: '৪',\n            5: '৫',\n            6: '৬',\n            7: '৭',\n            8: '৮',\n            9: '৯',\n            0: '০',\n        },\n        numberMap$4 = {\n            '১': '1',\n            '২': '2',\n            '৩': '3',\n            '৪': '4',\n            '৫': '5',\n            '৬': '6',\n            '৭': '7',\n            '৮': '8',\n            '৯': '9',\n            '০': '0',\n        };\n\n    hooks.defineLocale('bn', {\n        months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n            '_'\n        ),\n        monthsShort:\n            'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n                '_'\n            ),\n        weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n            '_'\n        ),\n        weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n        weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm সময়',\n            LTS: 'A h:mm:ss সময়',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm সময়',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n        },\n        calendar: {\n            sameDay: '[আজ] LT',\n            nextDay: '[আগামীকাল] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[গতকাল] LT',\n            lastWeek: '[গত] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s পরে',\n            past: '%s আগে',\n            s: 'কয়েক সেকেন্ড',\n            ss: '%d সেকেন্ড',\n            m: 'এক মিনিট',\n            mm: '%d মিনিট',\n            h: 'এক ঘন্টা',\n            hh: '%d ঘন্টা',\n            d: 'এক দিন',\n            dd: '%d দিন',\n            M: 'এক মাস',\n            MM: '%d মাস',\n            y: 'এক বছর',\n            yy: '%d বছর',\n        },\n        preparse: function (string) {\n            return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n                return numberMap$4[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap$5[match];\n            });\n        },\n        meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'রাত' && hour >= 4) ||\n                (meridiem === 'দুপুর' && hour < 5) ||\n                meridiem === 'বিকাল'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'রাত';\n            } else if (hour < 10) {\n                return 'সকাল';\n            } else if (hour < 17) {\n                return 'দুপুর';\n            } else if (hour < 20) {\n                return 'বিকাল';\n            } else {\n                return 'রাত';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$6 = {\n            1: '༡',\n            2: '༢',\n            3: '༣',\n            4: '༤',\n            5: '༥',\n            6: '༦',\n            7: '༧',\n            8: '༨',\n            9: '༩',\n            0: '༠',\n        },\n        numberMap$5 = {\n            '༡': '1',\n            '༢': '2',\n            '༣': '3',\n            '༤': '4',\n            '༥': '5',\n            '༦': '6',\n            '༧': '7',\n            '༨': '8',\n            '༩': '9',\n            '༠': '0',\n        };\n\n    hooks.defineLocale('bo', {\n        months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n                '_'\n            ),\n        monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n        monthsParseExact: true,\n        weekdays:\n            'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n                '_'\n            ),\n        weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n            '_'\n        ),\n        weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[དི་རིང] LT',\n            nextDay: '[སང་ཉིན] LT',\n            nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n            lastDay: '[ཁ་སང] LT',\n            lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ལ་',\n            past: '%s སྔན་ལ',\n            s: 'ལམ་སང',\n            ss: '%d སྐར་ཆ།',\n            m: 'སྐར་མ་གཅིག',\n            mm: '%d སྐར་མ',\n            h: 'ཆུ་ཚོད་གཅིག',\n            hh: '%d ཆུ་ཚོད',\n            d: 'ཉིན་གཅིག',\n            dd: '%d ཉིན་',\n            M: 'ཟླ་བ་གཅིག',\n            MM: '%d ཟླ་བ',\n            y: 'ལོ་གཅིག',\n            yy: '%d ལོ',\n        },\n        preparse: function (string) {\n            return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n                return numberMap$5[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap$6[match];\n            });\n        },\n        meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'མཚན་མོ' && hour >= 4) ||\n                (meridiem === 'ཉིན་གུང' && hour < 5) ||\n                meridiem === 'དགོང་དག'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'མཚན་མོ';\n            } else if (hour < 10) {\n                return 'ཞོགས་ཀས';\n            } else if (hour < 17) {\n                return 'ཉིན་གུང';\n            } else if (hour < 20) {\n                return 'དགོང་དག';\n            } else {\n                return 'མཚན་མོ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithMutation(number, withoutSuffix, key) {\n        var format = {\n            mm: 'munutenn',\n            MM: 'miz',\n            dd: 'devezh',\n        };\n        return number + ' ' + mutation(format[key], number);\n    }\n    function specialMutationForYears(number) {\n        switch (lastNumber(number)) {\n            case 1:\n            case 3:\n            case 4:\n            case 5:\n            case 9:\n                return number + ' bloaz';\n            default:\n                return number + ' vloaz';\n        }\n    }\n    function lastNumber(number) {\n        if (number > 9) {\n            return lastNumber(number % 10);\n        }\n        return number;\n    }\n    function mutation(text, number) {\n        if (number === 2) {\n            return softMutation(text);\n        }\n        return text;\n    }\n    function softMutation(text) {\n        var mutationTable = {\n            m: 'v',\n            b: 'v',\n            d: 'z',\n        };\n        if (mutationTable[text.charAt(0)] === undefined) {\n            return text;\n        }\n        return mutationTable[text.charAt(0)] + text.substring(1);\n    }\n\n    var monthsParse = [\n            /^gen/i,\n            /^c[ʼ\\']hwe/i,\n            /^meu/i,\n            /^ebr/i,\n            /^mae/i,\n            /^(mez|eve)/i,\n            /^gou/i,\n            /^eos/i,\n            /^gwe/i,\n            /^her/i,\n            /^du/i,\n            /^ker/i,\n        ],\n        monthsRegex$1 =\n            /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        monthsStrictRegex =\n            /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n        monthsShortStrictRegex =\n            /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n        fullWeekdaysParse = [\n            /^sul/i,\n            /^lun/i,\n            /^meurzh/i,\n            /^merc[ʼ\\']her/i,\n            /^yaou/i,\n            /^gwener/i,\n            /^sadorn/i,\n        ],\n        shortWeekdaysParse = [\n            /^Sul/i,\n            /^Lun/i,\n            /^Meu/i,\n            /^Mer/i,\n            /^Yao/i,\n            /^Gwe/i,\n            /^Sad/i,\n        ],\n        minWeekdaysParse = [\n            /^Su/i,\n            /^Lu/i,\n            /^Me([^r]|$)/i,\n            /^Mer/i,\n            /^Ya/i,\n            /^Gw/i,\n            /^Sa/i,\n        ];\n\n    hooks.defineLocale('br', {\n        months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n            '_'\n        ),\n        monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n        weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n        weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n        weekdaysParse: minWeekdaysParse,\n        fullWeekdaysParse: fullWeekdaysParse,\n        shortWeekdaysParse: shortWeekdaysParse,\n        minWeekdaysParse: minWeekdaysParse,\n\n        monthsRegex: monthsRegex$1,\n        monthsShortRegex: monthsRegex$1,\n        monthsStrictRegex: monthsStrictRegex,\n        monthsShortStrictRegex: monthsShortStrictRegex,\n        monthsParse: monthsParse,\n        longMonthsParse: monthsParse,\n        shortMonthsParse: monthsParse,\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [a viz] MMMM YYYY',\n            LLL: 'D [a viz] MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hiziv da] LT',\n            nextDay: '[Warcʼhoazh da] LT',\n            nextWeek: 'dddd [da] LT',\n            lastDay: '[Decʼh da] LT',\n            lastWeek: 'dddd [paset da] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'a-benn %s',\n            past: '%s ʼzo',\n            s: 'un nebeud segondennoù',\n            ss: '%d eilenn',\n            m: 'ur vunutenn',\n            mm: relativeTimeWithMutation,\n            h: 'un eur',\n            hh: '%d eur',\n            d: 'un devezh',\n            dd: relativeTimeWithMutation,\n            M: 'ur miz',\n            MM: relativeTimeWithMutation,\n            y: 'ur bloaz',\n            yy: specialMutationForYears,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'añ' : 'vet';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n        isPM: function (token) {\n            return token === 'g.m.';\n        },\n        meridiem: function (hour, minute, isLower) {\n            return hour < 12 ? 'a.m.' : 'g.m.';\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function processRelativeTime(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 'm':\n                return withoutSuffix\n                    ? 'jedna minuta'\n                    : isFuture\n                      ? 'jednu minutu'\n                      : 'jedne minute';\n        }\n    }\n\n    function translate(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jedan sat';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    hooks.defineLocale('bs', {\n        months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                        return '[prošlu] dddd [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate,\n            m: processRelativeTime,\n            mm: translate,\n            h: translate,\n            hh: translate,\n            d: 'dan',\n            dd: translate,\n            M: 'mjesec',\n            MM: translate,\n            y: 'godinu',\n            yy: translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('ca', {\n        months: {\n            standalone:\n                'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n                    '_'\n                ),\n            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(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort:\n            'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n                '_'\n            ),\n        weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a les] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextDay: function () {\n                return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastDay: function () {\n                return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [passat a ' +\n                    (this.hours() !== 1 ? 'les' : 'la') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'uns segons',\n            ss: '%d segons',\n            m: 'un minut',\n            mm: '%d minuts',\n            h: 'una hora',\n            hh: '%d hores',\n            d: 'un dia',\n            dd: '%d dies',\n            M: 'un mes',\n            MM: '%d mesos',\n            y: 'un any',\n            yy: '%d anys',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                      ? 'n'\n                      : number === 3\n                        ? 'r'\n                        : number === 4\n                          ? 't'\n                          : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var months$4 = {\n            standalone:\n                'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n                    '_'\n                ),\n            format: 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n                '_'\n            ),\n            isFormat: /DD?[o.]?(\\[[^\\[\\]]*\\]|\\s)+MMMM/,\n        },\n        monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n        monthsParse$1 = [\n            /^led/i,\n            /^úno/i,\n            /^bře/i,\n            /^dub/i,\n            /^kvě/i,\n            /^(čvn|červen$|června)/i,\n            /^(čvc|červenec|července)/i,\n            /^srp/i,\n            /^zář/i,\n            /^říj/i,\n            /^lis/i,\n            /^pro/i,\n        ],\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsRegex$2 =\n            /^(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;\n\n    function plural$1(n) {\n        return n > 1 && n < 5 && ~~(n / 10) !== 1;\n    }\n    function translate$1(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural$1(number) ? 'sekundy' : 'sekund');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural$1(number) ? 'minuty' : 'minut');\n                } else {\n                    return result + 'minutami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural$1(number) ? 'hodiny' : 'hodin');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'den' : 'dnem';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural$1(number) ? 'dny' : 'dní');\n                } else {\n                    return result + 'dny';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural$1(number) ? 'měsíce' : 'měsíců');\n                } else {\n                    return result + 'měsíci';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokem';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural$1(number) ? 'roky' : 'let');\n                } else {\n                    return result + 'lety';\n                }\n        }\n    }\n\n    hooks.defineLocale('cs', {\n        months: months$4,\n        monthsShort: monthsShort,\n        monthsRegex: monthsRegex$2,\n        monthsShortRegex: monthsRegex$2,\n        // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n        // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n        monthsStrictRegex:\n            /^(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,\n        monthsShortStrictRegex:\n            /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n        monthsParse: monthsParse$1,\n        longMonthsParse: monthsParse$1,\n        shortMonthsParse: monthsParse$1,\n        weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n        weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n        weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n            l: 'D. M. YYYY',\n        },\n        calendar: {\n            sameDay: '[dnes v] LT',\n            nextDay: '[zítra v] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [v] LT';\n                    case 3:\n                        return '[ve středu v] LT';\n                    case 4:\n                        return '[ve čtvrtek v] LT';\n                    case 5:\n                        return '[v pátek v] LT';\n                    case 6:\n                        return '[v sobotu v] LT';\n                }\n            },\n            lastDay: '[včera v] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulou neděli v] LT';\n                    case 1:\n                    case 2:\n                        return '[minulé] dddd [v] LT';\n                    case 3:\n                        return '[minulou středu v] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [v] LT';\n                    case 6:\n                        return '[minulou sobotu v] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'před %s',\n            s: translate$1,\n            ss: translate$1,\n            m: translate$1,\n            mm: translate$1,\n            h: translate$1,\n            hh: translate$1,\n            d: translate$1,\n            dd: translate$1,\n            M: translate$1,\n            MM: translate$1,\n            y: translate$1,\n            yy: translate$1,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('cv', {\n        months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n            '_'\n        ),\n        monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n        weekdays:\n            'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n                '_'\n            ),\n        weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n        weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n            LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n            LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n        },\n        calendar: {\n            sameDay: '[Паян] LT [сехетре]',\n            nextDay: '[Ыран] LT [сехетре]',\n            lastDay: '[Ӗнер] LT [сехетре]',\n            nextWeek: '[Ҫитес] dddd LT [сехетре]',\n            lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (output) {\n                var affix = /сехет$/i.exec(output)\n                    ? 'рен'\n                    : /ҫул$/i.exec(output)\n                      ? 'тан'\n                      : 'ран';\n                return output + affix;\n            },\n            past: '%s каялла',\n            s: 'пӗр-ик ҫеккунт',\n            ss: '%d ҫеккунт',\n            m: 'пӗр минут',\n            mm: '%d минут',\n            h: 'пӗр сехет',\n            hh: '%d сехет',\n            d: 'пӗр кун',\n            dd: '%d кун',\n            M: 'пӗр уйӑх',\n            MM: '%d уйӑх',\n            y: 'пӗр ҫул',\n            yy: '%d ҫул',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n        ordinal: '%d-мӗш',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('cy', {\n        months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n            '_'\n        ),\n        monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n            '_'\n        ),\n        weekdays:\n            'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n                '_'\n            ),\n        weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n        weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n        weekdaysParseExact: true,\n        // time formats are the same as en-gb\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Heddiw am] LT',\n            nextDay: '[Yfory am] LT',\n            nextWeek: 'dddd [am] LT',\n            lastDay: '[Ddoe am] LT',\n            lastWeek: 'dddd [diwethaf am] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'mewn %s',\n            past: '%s yn ôl',\n            s: 'ychydig eiliadau',\n            ss: '%d eiliad',\n            m: 'munud',\n            mm: '%d munud',\n            h: 'awr',\n            hh: '%d awr',\n            d: 'diwrnod',\n            dd: '%d diwrnod',\n            M: 'mis',\n            MM: '%d mis',\n            y: 'blwyddyn',\n            yy: '%d flynedd',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n        // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n        ordinal: function (number) {\n            var b = number,\n                output = '',\n                lookup = [\n                    '',\n                    'af',\n                    'il',\n                    'ydd',\n                    'ydd',\n                    'ed',\n                    'ed',\n                    'ed',\n                    'fed',\n                    'fed',\n                    'fed', // 1af to 10fed\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'eg',\n                    'fed',\n                    'eg',\n                    'fed', // 11eg to 20fed\n                ];\n            if (b > 20) {\n                if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n                    output = 'fed'; // not 30ain, 70ain or 90ain\n                } else {\n                    output = 'ain';\n                }\n            } else if (b > 0) {\n                output = lookup[b];\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('da', {\n        months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'på dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[i] dddd[s kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'få sekunder',\n            ss: '%d sekunder',\n            m: 'et minut',\n            mm: '%d minutter',\n            h: 'en time',\n            hh: '%d timer',\n            d: 'en dag',\n            dd: '%d dage',\n            M: 'en måned',\n            MM: '%d måneder',\n            y: 'et år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function processRelativeTime$1(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    hooks.defineLocale('de-at', {\n        months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays:\n            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n                '_'\n            ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime$1,\n            mm: '%d Minuten',\n            h: processRelativeTime$1,\n            hh: '%d Stunden',\n            d: processRelativeTime$1,\n            dd: processRelativeTime$1,\n            w: processRelativeTime$1,\n            ww: '%d Wochen',\n            M: processRelativeTime$1,\n            MM: processRelativeTime$1,\n            y: processRelativeTime$1,\n            yy: processRelativeTime$1,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function processRelativeTime$2(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    hooks.defineLocale('de-ch', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays:\n            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n                '_'\n            ),\n        weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime$2,\n            mm: '%d Minuten',\n            h: processRelativeTime$2,\n            hh: '%d Stunden',\n            d: processRelativeTime$2,\n            dd: processRelativeTime$2,\n            w: processRelativeTime$2,\n            ww: '%d Wochen',\n            M: processRelativeTime$2,\n            MM: processRelativeTime$2,\n            y: processRelativeTime$2,\n            yy: processRelativeTime$2,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function processRelativeTime$3(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eine Minute', 'einer Minute'],\n            h: ['eine Stunde', 'einer Stunde'],\n            d: ['ein Tag', 'einem Tag'],\n            dd: [number + ' Tage', number + ' Tagen'],\n            w: ['eine Woche', 'einer Woche'],\n            M: ['ein Monat', 'einem Monat'],\n            MM: [number + ' Monate', number + ' Monaten'],\n            y: ['ein Jahr', 'einem Jahr'],\n            yy: [number + ' Jahre', number + ' Jahren'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n\n    hooks.defineLocale('de', {\n        months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays:\n            'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n                '_'\n            ),\n        weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY HH:mm',\n            LLLL: 'dddd, D. MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[heute um] LT [Uhr]',\n            sameElse: 'L',\n            nextDay: '[morgen um] LT [Uhr]',\n            nextWeek: 'dddd [um] LT [Uhr]',\n            lastDay: '[gestern um] LT [Uhr]',\n            lastWeek: '[letzten] dddd [um] LT [Uhr]',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: 'vor %s',\n            s: 'ein paar Sekunden',\n            ss: '%d Sekunden',\n            m: processRelativeTime$3,\n            mm: '%d Minuten',\n            h: processRelativeTime$3,\n            hh: '%d Stunden',\n            d: processRelativeTime$3,\n            dd: processRelativeTime$3,\n            w: processRelativeTime$3,\n            ww: '%d Wochen',\n            M: processRelativeTime$3,\n            MM: processRelativeTime$3,\n            y: processRelativeTime$3,\n            yy: processRelativeTime$3,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var months$5 = [\n            'ޖެނުއަރީ',\n            'ފެބްރުއަރީ',\n            'މާރިޗު',\n            'އޭޕްރީލު',\n            'މޭ',\n            'ޖޫން',\n            'ޖުލައި',\n            'އޯގަސްޓު',\n            'ސެޕްޓެމްބަރު',\n            'އޮކްޓޯބަރު',\n            'ނޮވެމްބަރު',\n            'ޑިސެމްބަރު',\n        ],\n        weekdays = [\n            'އާދިއްތަ',\n            'ހޯމަ',\n            'އަންގާރަ',\n            'ބުދަ',\n            'ބުރާސްފަތި',\n            'ހުކުރު',\n            'ހޮނިހިރު',\n        ];\n\n    hooks.defineLocale('dv', {\n        months: months$5,\n        monthsShort: months$5,\n        weekdays: weekdays,\n        weekdaysShort: weekdays,\n        weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'D/M/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /މކ|މފ/,\n        isPM: function (input) {\n            return 'މފ' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'މކ';\n            } else {\n                return 'މފ';\n            }\n        },\n        calendar: {\n            sameDay: '[މިއަދު] LT',\n            nextDay: '[މާދަމާ] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[އިއްޔެ] LT',\n            lastWeek: '[ފާއިތުވި] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ތެރޭގައި %s',\n            past: 'ކުރިން %s',\n            s: 'ސިކުންތުކޮޅެއް',\n            ss: 'd% ސިކުންތު',\n            m: 'މިނިޓެއް',\n            mm: 'މިނިޓު %d',\n            h: 'ގަޑިއިރެއް',\n            hh: 'ގަޑިއިރު %d',\n            d: 'ދުވަހެއް',\n            dd: 'ދުވަސް %d',\n            M: 'މަހެއް',\n            MM: 'މަސް %d',\n            y: 'އަހަރެއް',\n            yy: 'އަހަރު %d',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 7, // Sunday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function isFunction$1(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    hooks.defineLocale('el', {\n        monthsNominativeEl:\n            'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n                '_'\n            ),\n        monthsGenitiveEl:\n            'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n                '_'\n            ),\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return this._monthsNominativeEl;\n            } else if (\n                typeof format === 'string' &&\n                /D/.test(format.substring(0, format.indexOf('MMMM')))\n            ) {\n                // if there is a day number before 'MMMM'\n                return this._monthsGenitiveEl[momentToFormat.month()];\n            } else {\n                return this._monthsNominativeEl[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n        weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n            '_'\n        ),\n        weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n        weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'μμ' : 'ΜΜ';\n            } else {\n                return isLower ? 'πμ' : 'ΠΜ';\n            }\n        },\n        isPM: function (input) {\n            return (input + '').toLowerCase()[0] === 'μ';\n        },\n        meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendarEl: {\n            sameDay: '[Σήμερα {}] LT',\n            nextDay: '[Αύριο {}] LT',\n            nextWeek: 'dddd [{}] LT',\n            lastDay: '[Χθες {}] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 6:\n                        return '[το προηγούμενο] dddd [{}] LT';\n                    default:\n                        return '[την προηγούμενη] dddd [{}] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        calendar: function (key, mom) {\n            var output = this._calendarEl[key],\n                hours = mom && mom.hours();\n            if (isFunction$1(output)) {\n                output = output.apply(mom);\n            }\n            return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n        },\n        relativeTime: {\n            future: 'σε %s',\n            past: '%s πριν',\n            s: 'λίγα δευτερόλεπτα',\n            ss: '%d δευτερόλεπτα',\n            m: 'ένα λεπτό',\n            mm: '%d λεπτά',\n            h: 'μία ώρα',\n            hh: '%d ώρες',\n            d: 'μία μέρα',\n            dd: '%d μέρες',\n            M: 'ένας μήνας',\n            MM: '%d μήνες',\n            y: 'ένας χρόνος',\n            yy: '%d χρόνια',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}η/,\n        ordinal: '%dη',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4st is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('en-au', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('en-ca', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'YYYY-MM-DD',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY h:mm A',\n            LLLL: 'dddd, MMMM D, YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('en-gb', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('en-ie', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('en-il', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('en-in', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('en-nz', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('en-sg', {\n        months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n            '_'\n        ),\n        weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Today at] LT',\n            nextDay: '[Tomorrow at] LT',\n            nextWeek: 'dddd [at] LT',\n            lastDay: '[Yesterday at] LT',\n            lastWeek: '[Last] dddd [at] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'in %s',\n            past: '%s ago',\n            s: 'a few seconds',\n            ss: '%d seconds',\n            m: 'a minute',\n            mm: '%d minutes',\n            h: 'an hour',\n            hh: '%d hours',\n            d: 'a day',\n            dd: '%d days',\n            M: 'a month',\n            MM: '%d months',\n            y: 'a year',\n            yy: '%d years',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('eo', {\n        months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n        weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n        weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: '[la] D[-an de] MMMM, YYYY',\n            LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n            LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n            llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n        },\n        meridiemParse: /[ap]\\.t\\.m/i,\n        isPM: function (input) {\n            return input.charAt(0).toLowerCase() === 'p';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'p.t.m.' : 'P.T.M.';\n            } else {\n                return isLower ? 'a.t.m.' : 'A.T.M.';\n            }\n        },\n        calendar: {\n            sameDay: '[Hodiaŭ je] LT',\n            nextDay: '[Morgaŭ je] LT',\n            nextWeek: 'dddd[n je] LT',\n            lastDay: '[Hieraŭ je] LT',\n            lastWeek: '[pasintan] dddd[n je] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'post %s',\n            past: 'antaŭ %s',\n            s: 'kelkaj sekundoj',\n            ss: '%d sekundoj',\n            m: 'unu minuto',\n            mm: '%d minutoj',\n            h: 'unu horo',\n            hh: '%d horoj',\n            d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n            dd: '%d tagoj',\n            M: 'unu monato',\n            MM: '%d monatoj',\n            y: 'unu jaro',\n            yy: '%d jaroj',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}a/,\n        ordinal: '%da',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var monthsShortDot =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort$1 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse$2 = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex$3 =\n            /^(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;\n\n    hooks.defineLocale('es-do', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort$1[m.month()];\n            } else {\n                return monthsShortDot[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex$3,\n        monthsShortRegex: monthsRegex$3,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse$2,\n        longMonthsParse: monthsParse$2,\n        shortMonthsParse: monthsParse$2,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var monthsShortDot$1 =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort$2 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse$3 = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex$4 =\n            /^(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;\n\n    hooks.defineLocale('es-mx', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot$1;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort$2[m.month()];\n            } else {\n                return monthsShortDot$1[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex$4,\n        monthsShortRegex: monthsRegex$4,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse$3,\n        longMonthsParse: monthsParse$3,\n        shortMonthsParse: monthsParse$3,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    //! moment.js locale configuration\n\n    var monthsShortDot$2 =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort$3 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse$4 = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex$5 =\n            /^(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;\n\n    hooks.defineLocale('es-us', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot$2;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort$3[m.month()];\n            } else {\n                return monthsShortDot$2[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex$5,\n        monthsShortRegex: monthsRegex$5,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse$4,\n        longMonthsParse: monthsParse$4,\n        shortMonthsParse: monthsParse$4,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'MM/DD/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY h:mm A',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var monthsShortDot$3 =\n            'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n                '_'\n            ),\n        monthsShort$4 = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n        monthsParse$5 = [\n            /^ene/i,\n            /^feb/i,\n            /^mar/i,\n            /^abr/i,\n            /^may/i,\n            /^jun/i,\n            /^jul/i,\n            /^ago/i,\n            /^sep/i,\n            /^oct/i,\n            /^nov/i,\n            /^dic/i,\n        ],\n        monthsRegex$6 =\n            /^(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;\n\n    hooks.defineLocale('es', {\n        months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortDot$3;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShort$4[m.month()];\n            } else {\n                return monthsShortDot$3[m.month()];\n            }\n        },\n        monthsRegex: monthsRegex$6,\n        monthsShortRegex: monthsRegex$6,\n        monthsStrictRegex:\n            /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n        monthsShortStrictRegex:\n            /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n        monthsParse: monthsParse$5,\n        longMonthsParse: monthsParse$5,\n        shortMonthsParse: monthsParse$5,\n        weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastDay: function () {\n                return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[el] dddd [pasado a la' +\n                    (this.hours() !== 1 ? 's' : '') +\n                    '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'en %s',\n            past: 'hace %s',\n            s: 'unos segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'una hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            w: 'una semana',\n            ww: '%d semanas',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un año',\n            yy: '%d años',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n        invalidDate: 'Fecha inválida',\n    });\n\n    //! moment.js locale configuration\n\n    function processRelativeTime$4(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n            ss: [number + 'sekundi', number + 'sekundit'],\n            m: ['ühe minuti', 'üks minut'],\n            mm: [number + ' minuti', number + ' minutit'],\n            h: ['ühe tunni', 'tund aega', 'üks tund'],\n            hh: [number + ' tunni', number + ' tundi'],\n            d: ['ühe päeva', 'üks päev'],\n            M: ['kuu aja', 'kuu aega', 'üks kuu'],\n            MM: [number + ' kuu', number + ' kuud'],\n            y: ['ühe aasta', 'aasta', 'üks aasta'],\n            yy: [number + ' aasta', number + ' aastat'],\n        };\n        if (withoutSuffix) {\n            return format[key][2] ? format[key][2] : format[key][1];\n        }\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    hooks.defineLocale('et', {\n        months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n            '_'\n        ),\n        monthsShort:\n            'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n        weekdays:\n            'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n                '_'\n            ),\n        weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n        weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Täna,] LT',\n            nextDay: '[Homme,] LT',\n            nextWeek: '[Järgmine] dddd LT',\n            lastDay: '[Eile,] LT',\n            lastWeek: '[Eelmine] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s pärast',\n            past: '%s tagasi',\n            s: processRelativeTime$4,\n            ss: processRelativeTime$4,\n            m: processRelativeTime$4,\n            mm: processRelativeTime$4,\n            h: processRelativeTime$4,\n            hh: processRelativeTime$4,\n            d: processRelativeTime$4,\n            dd: '%d päeva',\n            M: processRelativeTime$4,\n            MM: processRelativeTime$4,\n            y: processRelativeTime$4,\n            yy: processRelativeTime$4,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('eu', {\n        months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n            '_'\n        ),\n        monthsShort:\n            'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n                '_'\n            ),\n        weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n        weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY[ko] MMMM[ren] D[a]',\n            LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n            LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n            l: 'YYYY-M-D',\n            ll: 'YYYY[ko] MMM D[a]',\n            lll: 'YYYY[ko] MMM D[a] HH:mm',\n            llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n        },\n        calendar: {\n            sameDay: '[gaur] LT[etan]',\n            nextDay: '[bihar] LT[etan]',\n            nextWeek: 'dddd LT[etan]',\n            lastDay: '[atzo] LT[etan]',\n            lastWeek: '[aurreko] dddd LT[etan]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s barru',\n            past: 'duela %s',\n            s: 'segundo batzuk',\n            ss: '%d segundo',\n            m: 'minutu bat',\n            mm: '%d minutu',\n            h: 'ordu bat',\n            hh: '%d ordu',\n            d: 'egun bat',\n            dd: '%d egun',\n            M: 'hilabete bat',\n            MM: '%d hilabete',\n            y: 'urte bat',\n            yy: '%d urte',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$7 = {\n            1: '۱',\n            2: '۲',\n            3: '۳',\n            4: '۴',\n            5: '۵',\n            6: '۶',\n            7: '۷',\n            8: '۸',\n            9: '۹',\n            0: '۰',\n        },\n        numberMap$6 = {\n            '۱': '1',\n            '۲': '2',\n            '۳': '3',\n            '۴': '4',\n            '۵': '5',\n            '۶': '6',\n            '۷': '7',\n            '۸': '8',\n            '۹': '9',\n            '۰': '0',\n        };\n\n    hooks.defineLocale('fa', {\n        months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n            '_'\n        ),\n        monthsShort:\n            'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n                '_'\n            ),\n        weekdays:\n            'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n                '_'\n            ),\n        weekdaysShort:\n            'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n                '_'\n            ),\n        weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /قبل از ظهر|بعد از ظهر/,\n        isPM: function (input) {\n            return /بعد از ظهر/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'قبل از ظهر';\n            } else {\n                return 'بعد از ظهر';\n            }\n        },\n        calendar: {\n            sameDay: '[امروز ساعت] LT',\n            nextDay: '[فردا ساعت] LT',\n            nextWeek: 'dddd [ساعت] LT',\n            lastDay: '[دیروز ساعت] LT',\n            lastWeek: 'dddd [پیش] [ساعت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'در %s',\n            past: '%s پیش',\n            s: 'چند ثانیه',\n            ss: '%d ثانیه',\n            m: 'یک دقیقه',\n            mm: '%d دقیقه',\n            h: 'یک ساعت',\n            hh: '%d ساعت',\n            d: 'یک روز',\n            dd: '%d روز',\n            M: 'یک ماه',\n            MM: '%d ماه',\n            y: 'یک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[۰-۹]/g, function (match) {\n                    return numberMap$6[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap$7[match];\n                })\n                .replace(/,/g, '،');\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}م/,\n        ordinal: '%dم',\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var numbersPast =\n            'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n                ' '\n            ),\n        numbersFuture = [\n            'nolla',\n            'yhden',\n            'kahden',\n            'kolmen',\n            'neljän',\n            'viiden',\n            'kuuden',\n            numbersPast[7],\n            numbersPast[8],\n            numbersPast[9],\n        ];\n    function translate$2(number, withoutSuffix, key, isFuture) {\n        var result = '';\n        switch (key) {\n            case 's':\n                return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n            case 'ss':\n                result = isFuture ? 'sekunnin' : 'sekuntia';\n                break;\n            case 'm':\n                return isFuture ? 'minuutin' : 'minuutti';\n            case 'mm':\n                result = isFuture ? 'minuutin' : 'minuuttia';\n                break;\n            case 'h':\n                return isFuture ? 'tunnin' : 'tunti';\n            case 'hh':\n                result = isFuture ? 'tunnin' : 'tuntia';\n                break;\n            case 'd':\n                return isFuture ? 'päivän' : 'päivä';\n            case 'dd':\n                result = isFuture ? 'päivän' : 'päivää';\n                break;\n            case 'M':\n                return isFuture ? 'kuukauden' : 'kuukausi';\n            case 'MM':\n                result = isFuture ? 'kuukauden' : 'kuukautta';\n                break;\n            case 'y':\n                return isFuture ? 'vuoden' : 'vuosi';\n            case 'yy':\n                result = isFuture ? 'vuoden' : 'vuotta';\n                break;\n        }\n        result = verbalNumber(number, isFuture) + ' ' + result;\n        return result;\n    }\n    function verbalNumber(number, isFuture) {\n        return number < 10\n            ? isFuture\n                ? numbersFuture[number]\n                : numbersPast[number]\n            : number;\n    }\n\n    hooks.defineLocale('fi', {\n        months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n            '_'\n        ),\n        monthsShort:\n            'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n                '_'\n            ),\n        weekdays:\n            'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n                '_'\n            ),\n        weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM[ta] YYYY',\n            LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n            LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n            l: 'D.M.YYYY',\n            ll: 'Do MMM YYYY',\n            lll: 'Do MMM YYYY, [klo] HH.mm',\n            llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n        },\n        calendar: {\n            sameDay: '[tänään] [klo] LT',\n            nextDay: '[huomenna] [klo] LT',\n            nextWeek: 'dddd [klo] LT',\n            lastDay: '[eilen] [klo] LT',\n            lastWeek: '[viime] dddd[na] [klo] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s päästä',\n            past: '%s sitten',\n            s: translate$2,\n            ss: translate$2,\n            m: translate$2,\n            mm: translate$2,\n            h: translate$2,\n            hh: translate$2,\n            d: translate$2,\n            dd: translate$2,\n            M: translate$2,\n            MM: translate$2,\n            y: translate$2,\n            yy: translate$2,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('fil', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('fo', {\n        months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n        weekdays:\n            'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n                '_'\n            ),\n        weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n        weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D. MMMM, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Í dag kl.] LT',\n            nextDay: '[Í morgin kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[Í gjár kl.] LT',\n            lastWeek: '[síðstu] dddd [kl] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'um %s',\n            past: '%s síðani',\n            s: 'fá sekund',\n            ss: '%d sekundir',\n            m: 'ein minuttur',\n            mm: '%d minuttir',\n            h: 'ein tími',\n            hh: '%d tímar',\n            d: 'ein dagur',\n            dd: '%d dagar',\n            M: 'ein mánaður',\n            MM: '%d mánaðir',\n            y: 'eitt ár',\n            yy: '%d ár',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('fr-ca', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('fr-ch', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'D':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var monthsStrictRegex$1 =\n            /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsShortStrictRegex$1 =\n            /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n        monthsRegex$7 =\n            /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n        monthsParse$6 = [\n            /^janv/i,\n            /^févr/i,\n            /^mars/i,\n            /^avr/i,\n            /^mai/i,\n            /^juin/i,\n            /^juil/i,\n            /^août/i,\n            /^sept/i,\n            /^oct/i,\n            /^nov/i,\n            /^déc/i,\n        ];\n\n    hooks.defineLocale('fr', {\n        months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n            '_'\n        ),\n        monthsShort:\n            'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n                '_'\n            ),\n        monthsRegex: monthsRegex$7,\n        monthsShortRegex: monthsRegex$7,\n        monthsStrictRegex: monthsStrictRegex$1,\n        monthsShortStrictRegex: monthsShortStrictRegex$1,\n        monthsParse: monthsParse$6,\n        longMonthsParse: monthsParse$6,\n        shortMonthsParse: monthsParse$6,\n        weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n        weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n        weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Aujourd’hui à] LT',\n            nextDay: '[Demain à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[Hier à] LT',\n            lastWeek: 'dddd [dernier à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dans %s',\n            past: 'il y a %s',\n            s: 'quelques secondes',\n            ss: '%d secondes',\n            m: 'une minute',\n            mm: '%d minutes',\n            h: 'une heure',\n            hh: '%d heures',\n            d: 'un jour',\n            dd: '%d jours',\n            w: 'une semaine',\n            ww: '%d semaines',\n            M: 'un mois',\n            MM: '%d mois',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // TODO: Return 'e' when day of month > 1. Move this case inside\n                // block for masculine words below.\n                // See https://github.com/moment/moment/issues/3375\n                case 'D':\n                    return number + (number === 1 ? 'er' : '');\n\n                // Words with masculine grammatical gender: mois, trimestre, jour\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                    return number + (number === 1 ? 'er' : 'e');\n\n                // Words with feminine grammatical gender: semaine\n                case 'w':\n                case 'W':\n                    return number + (number === 1 ? 're' : 'e');\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots =\n            'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n        monthsShortWithoutDots =\n            'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n    hooks.defineLocale('fy', {\n        months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots[m.month()];\n            } else {\n                return monthsShortWithDots[m.month()];\n            }\n        },\n        monthsParseExact: true,\n        weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n            '_'\n        ),\n        weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n        weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[hjoed om] LT',\n            nextDay: '[moarn om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[juster om] LT',\n            lastWeek: '[ôfrûne] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'oer %s',\n            past: '%s lyn',\n            s: 'in pear sekonden',\n            ss: '%d sekonden',\n            m: 'ien minút',\n            mm: '%d minuten',\n            h: 'ien oere',\n            hh: '%d oeren',\n            d: 'ien dei',\n            dd: '%d dagen',\n            M: 'ien moanne',\n            MM: '%d moannen',\n            y: 'ien jier',\n            yy: '%d jierren',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var months$6 = [\n            'Eanáir',\n            'Feabhra',\n            'Márta',\n            'Aibreán',\n            'Bealtaine',\n            'Meitheamh',\n            'Iúil',\n            'Lúnasa',\n            'Meán Fómhair',\n            'Deireadh Fómhair',\n            'Samhain',\n            'Nollaig',\n        ],\n        monthsShort$5 = [\n            'Ean',\n            'Feabh',\n            'Márt',\n            'Aib',\n            'Beal',\n            'Meith',\n            'Iúil',\n            'Lún',\n            'M.F.',\n            'D.F.',\n            'Samh',\n            'Noll',\n        ],\n        weekdays$1 = [\n            'Dé Domhnaigh',\n            'Dé Luain',\n            'Dé Máirt',\n            'Dé Céadaoin',\n            'Déardaoin',\n            'Dé hAoine',\n            'Dé Sathairn',\n        ],\n        weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n        weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n    hooks.defineLocale('ga', {\n        months: months$6,\n        monthsShort: monthsShort$5,\n        monthsParseExact: true,\n        weekdays: weekdays$1,\n        weekdaysShort: weekdaysShort,\n        weekdaysMin: weekdaysMin,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Inniu ag] LT',\n            nextDay: '[Amárach ag] LT',\n            nextWeek: 'dddd [ag] LT',\n            lastDay: '[Inné ag] LT',\n            lastWeek: 'dddd [seo caite] [ag] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i %s',\n            past: '%s ó shin',\n            s: 'cúpla soicind',\n            ss: '%d soicind',\n            m: 'nóiméad',\n            mm: '%d nóiméad',\n            h: 'uair an chloig',\n            hh: '%d uair an chloig',\n            d: 'lá',\n            dd: '%d lá',\n            M: 'mí',\n            MM: '%d míonna',\n            y: 'bliain',\n            yy: '%d bliain',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var months$7 = [\n            'Am Faoilleach',\n            'An Gearran',\n            'Am Màrt',\n            'An Giblean',\n            'An Cèitean',\n            'An t-Ògmhios',\n            'An t-Iuchar',\n            'An Lùnastal',\n            'An t-Sultain',\n            'An Dàmhair',\n            'An t-Samhain',\n            'An Dùbhlachd',\n        ],\n        monthsShort$6 = [\n            'Faoi',\n            'Gear',\n            'Màrt',\n            'Gibl',\n            'Cèit',\n            'Ògmh',\n            'Iuch',\n            'Lùn',\n            'Sult',\n            'Dàmh',\n            'Samh',\n            'Dùbh',\n        ],\n        weekdays$2 = [\n            'Didòmhnaich',\n            'Diluain',\n            'Dimàirt',\n            'Diciadain',\n            'Diardaoin',\n            'Dihaoine',\n            'Disathairne',\n        ],\n        weekdaysShort$1 = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n        weekdaysMin$1 = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n    hooks.defineLocale('gd', {\n        months: months$7,\n        monthsShort: monthsShort$6,\n        monthsParseExact: true,\n        weekdays: weekdays$2,\n        weekdaysShort: weekdaysShort$1,\n        weekdaysMin: weekdaysMin$1,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[An-diugh aig] LT',\n            nextDay: '[A-màireach aig] LT',\n            nextWeek: 'dddd [aig] LT',\n            lastDay: '[An-dè aig] LT',\n            lastWeek: 'dddd [seo chaidh] [aig] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ann an %s',\n            past: 'bho chionn %s',\n            s: 'beagan diogan',\n            ss: '%d diogan',\n            m: 'mionaid',\n            mm: '%d mionaidean',\n            h: 'uair',\n            hh: '%d uairean',\n            d: 'latha',\n            dd: '%d latha',\n            M: 'mìos',\n            MM: '%d mìosan',\n            y: 'bliadhna',\n            yy: '%d bliadhna',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n        ordinal: function (number) {\n            var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('gl', {\n        months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n            '_'\n        ),\n        monthsShort:\n            'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n        weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n        weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY H:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextDay: function () {\n                return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n            },\n            nextWeek: function () {\n                return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n            },\n            lastDay: function () {\n                return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n            },\n            lastWeek: function () {\n                return (\n                    '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n                );\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (str) {\n                if (str.indexOf('un') === 0) {\n                    return 'n' + str;\n                }\n                return 'en ' + str;\n            },\n            past: 'hai %s',\n            s: 'uns segundos',\n            ss: '%d segundos',\n            m: 'un minuto',\n            mm: '%d minutos',\n            h: 'unha hora',\n            hh: '%d horas',\n            d: 'un día',\n            dd: '%d días',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function processRelativeTime$5(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n            ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n            m: ['एका मिणटान', 'एक मिनूट'],\n            mm: [number + ' मिणटांनी', number + ' मिणटां'],\n            h: ['एका वरान', 'एक वर'],\n            hh: [number + ' वरांनी', number + ' वरां'],\n            d: ['एका दिसान', 'एक दीस'],\n            dd: [number + ' दिसांनी', number + ' दीस'],\n            M: ['एका म्हयन्यान', 'एक म्हयनो'],\n            MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n            y: ['एका वर्सान', 'एक वर्स'],\n            yy: [number + ' वर्सांनी', number + ' वर्सां'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    hooks.defineLocale('gom-deva', {\n        months: {\n            standalone:\n                'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n                    '_'\n                ),\n            format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort:\n            'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n        weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n        weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [वाजतां]',\n            LTS: 'A h:mm:ss [वाजतां]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n            llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n        },\n        calendar: {\n            sameDay: '[आयज] LT',\n            nextDay: '[फाल्यां] LT',\n            nextWeek: '[फुडलो] dddd[,] LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[फाटलो] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s आदीं',\n            s: processRelativeTime$5,\n            ss: processRelativeTime$5,\n            m: processRelativeTime$5,\n            mm: processRelativeTime$5,\n            h: processRelativeTime$5,\n            hh: processRelativeTime$5,\n            d: processRelativeTime$5,\n            dd: processRelativeTime$5,\n            M: processRelativeTime$5,\n            MM: processRelativeTime$5,\n            y: processRelativeTime$5,\n            yy: processRelativeTime$5,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'वेर' only applies to day of the month\n                case 'D':\n                    return number + 'वेर';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राती') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सकाळीं') {\n                return hour;\n            } else if (meridiem === 'दनपारां') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'सांजे') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'राती';\n            } else if (hour < 12) {\n                return 'सकाळीं';\n            } else if (hour < 16) {\n                return 'दनपारां';\n            } else if (hour < 20) {\n                return 'सांजे';\n            } else {\n                return 'राती';\n            }\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function processRelativeTime$6(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['thoddea sekondamni', 'thodde sekond'],\n            ss: [number + ' sekondamni', number + ' sekond'],\n            m: ['eka mintan', 'ek minut'],\n            mm: [number + ' mintamni', number + ' mintam'],\n            h: ['eka voran', 'ek vor'],\n            hh: [number + ' voramni', number + ' voram'],\n            d: ['eka disan', 'ek dis'],\n            dd: [number + ' disamni', number + ' dis'],\n            M: ['eka mhoinean', 'ek mhoino'],\n            MM: [number + ' mhoineamni', number + ' mhoine'],\n            y: ['eka vorsan', 'ek voros'],\n            yy: [number + ' vorsamni', number + ' vorsam'],\n        };\n        return isFuture ? format[key][0] : format[key][1];\n    }\n\n    hooks.defineLocale('gom-latn', {\n        months: {\n            standalone:\n                'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n                    '_'\n                ),\n            format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n                '_'\n            ),\n            isFormat: /MMMM(\\s)+D[oD]?/,\n        },\n        monthsShort:\n            'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n        monthsParseExact: true,\n        weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n        weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n        weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'A h:mm [vazta]',\n            LTS: 'A h:mm:ss [vazta]',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY A h:mm [vazta]',\n            LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n            llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n        },\n        calendar: {\n            sameDay: '[Aiz] LT',\n            nextDay: '[Faleam] LT',\n            nextWeek: '[Fuddlo] dddd[,] LT',\n            lastDay: '[Kal] LT',\n            lastWeek: '[Fattlo] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s',\n            past: '%s adim',\n            s: processRelativeTime$6,\n            ss: processRelativeTime$6,\n            m: processRelativeTime$6,\n            mm: processRelativeTime$6,\n            h: processRelativeTime$6,\n            hh: processRelativeTime$6,\n            d: processRelativeTime$6,\n            dd: processRelativeTime$6,\n            M: processRelativeTime$6,\n            MM: processRelativeTime$6,\n            y: processRelativeTime$6,\n            yy: processRelativeTime$6,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                // the ordinal 'er' only applies to day of the month\n                case 'D':\n                    return number + 'er';\n                default:\n                case 'M':\n                case 'Q':\n                case 'DDD':\n                case 'd':\n                case 'w':\n                case 'W':\n                    return number;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week\n            doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n        },\n        meridiemParse: /rati|sokallim|donparam|sanje/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'rati') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'sokallim') {\n                return hour;\n            } else if (meridiem === 'donparam') {\n                return hour > 12 ? hour : hour + 12;\n            } else if (meridiem === 'sanje') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'rati';\n            } else if (hour < 12) {\n                return 'sokallim';\n            } else if (hour < 16) {\n                return 'donparam';\n            } else if (hour < 20) {\n                return 'sanje';\n            } else {\n                return 'rati';\n            }\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$8 = {\n            1: '૧',\n            2: '૨',\n            3: '૩',\n            4: '૪',\n            5: '૫',\n            6: '૬',\n            7: '૭',\n            8: '૮',\n            9: '૯',\n            0: '૦',\n        },\n        numberMap$7 = {\n            '૧': '1',\n            '૨': '2',\n            '૩': '3',\n            '૪': '4',\n            '૫': '5',\n            '૬': '6',\n            '૭': '7',\n            '૮': '8',\n            '૯': '9',\n            '૦': '0',\n        };\n\n    hooks.defineLocale('gu', {\n        months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n            '_'\n        ),\n        monthsShort:\n            'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n            '_'\n        ),\n        weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n        weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm વાગ્યે',\n            LTS: 'A h:mm:ss વાગ્યે',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n        },\n        calendar: {\n            sameDay: '[આજ] LT',\n            nextDay: '[કાલે] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ગઇકાલે] LT',\n            lastWeek: '[પાછલા] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s મા',\n            past: '%s પહેલા',\n            s: 'અમુક પળો',\n            ss: '%d સેકંડ',\n            m: 'એક મિનિટ',\n            mm: '%d મિનિટ',\n            h: 'એક કલાક',\n            hh: '%d કલાક',\n            d: 'એક દિવસ',\n            dd: '%d દિવસ',\n            M: 'એક મહિનો',\n            MM: '%d મહિનો',\n            y: 'એક વર્ષ',\n            yy: '%d વર્ષ',\n        },\n        preparse: function (string) {\n            return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n                return numberMap$7[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap$8[match];\n            });\n        },\n        // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n        meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'રાત') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'સવાર') {\n                return hour;\n            } else if (meridiem === 'બપોર') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'સાંજ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'રાત';\n            } else if (hour < 10) {\n                return 'સવાર';\n            } else if (hour < 17) {\n                return 'બપોર';\n            } else if (hour < 20) {\n                return 'સાંજ';\n            } else {\n                return 'રાત';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('he', {\n        months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n            '_'\n        ),\n        monthsShort:\n            'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n        weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n        weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n        weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [ב]MMMM YYYY',\n            LLL: 'D [ב]MMMM YYYY HH:mm',\n            LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[היום ב־]LT',\n            nextDay: '[מחר ב־]LT',\n            nextWeek: 'dddd [בשעה] LT',\n            lastDay: '[אתמול ב־]LT',\n            lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'בעוד %s',\n            past: 'לפני %s',\n            s: 'מספר שניות',\n            ss: '%d שניות',\n            m: 'דקה',\n            mm: '%d דקות',\n            h: 'שעה',\n            hh: function (number) {\n                if (number === 2) {\n                    return 'שעתיים';\n                }\n                return number + ' שעות';\n            },\n            d: 'יום',\n            dd: function (number) {\n                if (number === 2) {\n                    return 'יומיים';\n                }\n                return number + ' ימים';\n            },\n            M: 'חודש',\n            MM: function (number) {\n                if (number === 2) {\n                    return 'חודשיים';\n                }\n                return number + ' חודשים';\n            },\n            y: 'שנה',\n            yy: function (number) {\n                if (number === 2) {\n                    return 'שנתיים';\n                } else if (number % 10 === 0 && number !== 10) {\n                    return number + ' שנה';\n                }\n                return number + ' שנים';\n            },\n        },\n        meridiemParse:\n            /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n        isPM: function (input) {\n            return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 5) {\n                return 'לפנות בוקר';\n            } else if (hour < 10) {\n                return 'בבוקר';\n            } else if (hour < 12) {\n                return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n            } else if (hour < 18) {\n                return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n            } else {\n                return 'בערב';\n            }\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$9 = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap$8 = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        },\n        monthsParse$7 = [\n            /^जन/i,\n            /^फ़र|फर/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सितं|सित/i,\n            /^अक्टू/i,\n            /^नव|नवं/i,\n            /^दिसं|दिस/i,\n        ],\n        shortMonthsParse = [\n            /^जन/i,\n            /^फ़र/i,\n            /^मार्च/i,\n            /^अप्रै/i,\n            /^मई/i,\n            /^जून/i,\n            /^जुल/i,\n            /^अग/i,\n            /^सित/i,\n            /^अक्टू/i,\n            /^नव/i,\n            /^दिस/i,\n        ];\n\n    hooks.defineLocale('hi', {\n        months: {\n            format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n                '_'\n            ),\n            standalone:\n                'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n                    '_'\n                ),\n        },\n        monthsShort:\n            'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n        weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm बजे',\n            LTS: 'A h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n        },\n\n        monthsParse: monthsParse$7,\n        longMonthsParse: monthsParse$7,\n        shortMonthsParse: shortMonthsParse,\n\n        monthsRegex:\n            /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsShortRegex:\n            /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n        monthsStrictRegex:\n            /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n        monthsShortStrictRegex:\n            /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[कल] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[कल] LT',\n            lastWeek: '[पिछले] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s में',\n            past: '%s पहले',\n            s: 'कुछ ही क्षण',\n            ss: '%d सेकंड',\n            m: 'एक मिनट',\n            mm: '%d मिनट',\n            h: 'एक घंटा',\n            hh: '%d घंटे',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महीने',\n            MM: '%d महीने',\n            y: 'एक वर्ष',\n            yy: '%d वर्ष',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap$8[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap$9[match];\n            });\n        },\n        // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n        meridiemParse: /रात|सुबह|दोपहर|शाम/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'रात') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'सुबह') {\n                return hour;\n            } else if (meridiem === 'दोपहर') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'शाम') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'रात';\n            } else if (hour < 10) {\n                return 'सुबह';\n            } else if (hour < 17) {\n                return 'दोपहर';\n            } else if (hour < 20) {\n                return 'शाम';\n            } else {\n                return 'रात';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function translate$3(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                if (number === 1) {\n                    result += 'sekunda';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sekunde';\n                } else {\n                    result += 'sekundi';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n            case 'mm':\n                if (number === 1) {\n                    result += 'minuta';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'minute';\n                } else {\n                    result += 'minuta';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'jedan sat' : 'jednog sata';\n            case 'hh':\n                if (number === 1) {\n                    result += 'sat';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'sata';\n                } else {\n                    result += 'sati';\n                }\n                return result;\n            case 'dd':\n                if (number === 1) {\n                    result += 'dan';\n                } else {\n                    result += 'dana';\n                }\n                return result;\n            case 'MM':\n                if (number === 1) {\n                    result += 'mjesec';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'mjeseca';\n                } else {\n                    result += 'mjeseci';\n                }\n                return result;\n            case 'yy':\n                if (number === 1) {\n                    result += 'godina';\n                } else if (number === 2 || number === 3 || number === 4) {\n                    result += 'godine';\n                } else {\n                    result += 'godina';\n                }\n                return result;\n        }\n    }\n\n    hooks.defineLocale('hr', {\n        months: {\n            format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n                '_'\n            ),\n            standalone:\n                'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n                    '_'\n                ),\n        },\n        monthsShort:\n            'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM YYYY',\n            LLL: 'Do MMMM YYYY H:mm',\n            LLLL: 'dddd, Do MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[jučer u] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prošlu] [nedjelju] [u] LT';\n                    case 3:\n                        return '[prošlu] [srijedu] [u] LT';\n                    case 6:\n                        return '[prošle] [subote] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prošli] dddd [u] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'par sekundi',\n            ss: translate$3,\n            m: translate$3,\n            mm: translate$3,\n            h: translate$3,\n            hh: translate$3,\n            d: 'dan',\n            dd: translate$3,\n            M: 'mjesec',\n            MM: translate$3,\n            y: 'godinu',\n            yy: translate$3,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var weekEndings =\n        'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n    function translate$4(number, withoutSuffix, key, isFuture) {\n        var num = number;\n        switch (key) {\n            case 's':\n                return isFuture || withoutSuffix\n                    ? 'néhány másodperc'\n                    : 'néhány másodperce';\n            case 'ss':\n                return num + (isFuture || withoutSuffix)\n                    ? ' másodperc'\n                    : ' másodperce';\n            case 'm':\n                return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'mm':\n                return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n            case 'h':\n                return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'hh':\n                return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n            case 'd':\n                return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'dd':\n                return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n            case 'M':\n                return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'MM':\n                return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n            case 'y':\n                return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n            case 'yy':\n                return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n        }\n        return '';\n    }\n    function week(isFuture) {\n        return (\n            (isFuture ? '' : '[múlt] ') +\n            '[' +\n            weekEndings[this.day()] +\n            '] LT[-kor]'\n        );\n    }\n\n    hooks.defineLocale('hu', {\n        months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n        weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n        weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY. MMMM D.',\n            LLL: 'YYYY. MMMM D. H:mm',\n            LLLL: 'YYYY. MMMM D., dddd H:mm',\n        },\n        meridiemParse: /de|du/i,\n        isPM: function (input) {\n            return input.charAt(1).toLowerCase() === 'u';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower === true ? 'de' : 'DE';\n            } else {\n                return isLower === true ? 'du' : 'DU';\n            }\n        },\n        calendar: {\n            sameDay: '[ma] LT[-kor]',\n            nextDay: '[holnap] LT[-kor]',\n            nextWeek: function () {\n                return week.call(this, true);\n            },\n            lastDay: '[tegnap] LT[-kor]',\n            lastWeek: function () {\n                return week.call(this, false);\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s múlva',\n            past: '%s',\n            s: translate$4,\n            ss: translate$4,\n            m: translate$4,\n            mm: translate$4,\n            h: translate$4,\n            hh: translate$4,\n            d: translate$4,\n            dd: translate$4,\n            M: translate$4,\n            MM: translate$4,\n            y: translate$4,\n            yy: translate$4,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('hy-am', {\n        months: {\n            format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n                '_'\n            ),\n            standalone:\n                'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n                    '_'\n                ),\n        },\n        monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n        weekdays:\n            'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n                '_'\n            ),\n        weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY թ.',\n            LLL: 'D MMMM YYYY թ., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n        },\n        calendar: {\n            sameDay: '[այսօր] LT',\n            nextDay: '[վաղը] LT',\n            lastDay: '[երեկ] LT',\n            nextWeek: function () {\n                return 'dddd [օրը ժամը] LT';\n            },\n            lastWeek: function () {\n                return '[անցած] dddd [օրը ժամը] LT';\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s հետո',\n            past: '%s առաջ',\n            s: 'մի քանի վայրկյան',\n            ss: '%d վայրկյան',\n            m: 'րոպե',\n            mm: '%d րոպե',\n            h: 'ժամ',\n            hh: '%d ժամ',\n            d: 'օր',\n            dd: '%d օր',\n            M: 'ամիս',\n            MM: '%d ամիս',\n            y: 'տարի',\n            yy: '%d տարի',\n        },\n        meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n        isPM: function (input) {\n            return /^(ցերեկվա|երեկոյան)$/.test(input);\n        },\n        meridiem: function (hour) {\n            if (hour < 4) {\n                return 'գիշերվա';\n            } else if (hour < 12) {\n                return 'առավոտվա';\n            } else if (hour < 17) {\n                return 'ցերեկվա';\n            } else {\n                return 'երեկոյան';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'DDD':\n                case 'w':\n                case 'W':\n                case 'DDDo':\n                    if (number === 1) {\n                        return number + '-ին';\n                    }\n                    return number + '-րդ';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('id', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n        weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|siang|sore|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'siang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sore' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'siang';\n            } else if (hours < 19) {\n                return 'sore';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Besok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kemarin pukul] LT',\n            lastWeek: 'dddd [lalu pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lalu',\n            s: 'beberapa detik',\n            ss: '%d detik',\n            m: 'semenit',\n            mm: '%d menit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function plural$2(n) {\n        if (n % 100 === 11) {\n            return true;\n        } else if (n % 10 === 1) {\n            return false;\n        }\n        return true;\n    }\n    function translate$5(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nokkrar sekúndur'\n                    : 'nokkrum sekúndum';\n            case 'ss':\n                if (plural$2(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n                    );\n                }\n                return result + 'sekúnda';\n            case 'm':\n                return withoutSuffix ? 'mínúta' : 'mínútu';\n            case 'mm':\n                if (plural$2(number)) {\n                    return (\n                        result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n                    );\n                } else if (withoutSuffix) {\n                    return result + 'mínúta';\n                }\n                return result + 'mínútu';\n            case 'hh':\n                if (plural$2(number)) {\n                    return (\n                        result +\n                        (withoutSuffix || isFuture\n                            ? 'klukkustundir'\n                            : 'klukkustundum')\n                    );\n                }\n                return result + 'klukkustund';\n            case 'd':\n                if (withoutSuffix) {\n                    return 'dagur';\n                }\n                return isFuture ? 'dag' : 'degi';\n            case 'dd':\n                if (plural$2(number)) {\n                    if (withoutSuffix) {\n                        return result + 'dagar';\n                    }\n                    return result + (isFuture ? 'daga' : 'dögum');\n                } else if (withoutSuffix) {\n                    return result + 'dagur';\n                }\n                return result + (isFuture ? 'dag' : 'degi');\n            case 'M':\n                if (withoutSuffix) {\n                    return 'mánuður';\n                }\n                return isFuture ? 'mánuð' : 'mánuði';\n            case 'MM':\n                if (plural$2(number)) {\n                    if (withoutSuffix) {\n                        return result + 'mánuðir';\n                    }\n                    return result + (isFuture ? 'mánuði' : 'mánuðum');\n                } else if (withoutSuffix) {\n                    return result + 'mánuður';\n                }\n                return result + (isFuture ? 'mánuð' : 'mánuði');\n            case 'y':\n                return withoutSuffix || isFuture ? 'ár' : 'ári';\n            case 'yy':\n                if (plural$2(number)) {\n                    return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n                }\n                return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n        }\n    }\n\n    hooks.defineLocale('is', {\n        months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n        weekdays:\n            'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n                '_'\n            ),\n        weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n        weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n        },\n        calendar: {\n            sameDay: '[í dag kl.] LT',\n            nextDay: '[á morgun kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[í gær kl.] LT',\n            lastWeek: '[síðasta] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'eftir %s',\n            past: 'fyrir %s síðan',\n            s: translate$5,\n            ss: translate$5,\n            m: translate$5,\n            mm: translate$5,\n            h: 'klukkustund',\n            hh: translate$5,\n            d: translate$5,\n            dd: translate$5,\n            M: translate$5,\n            MM: translate$5,\n            y: translate$5,\n            yy: translate$5,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('it-ch', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Oggi alle] LT',\n            nextDay: '[Domani alle] LT',\n            nextWeek: 'dddd [alle] LT',\n            lastDay: '[Ieri alle] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[la scorsa] dddd [alle] LT';\n                    default:\n                        return '[lo scorso] dddd [alle] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n            },\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('it', {\n        months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n            '_'\n        ),\n        monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n        weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n            '_'\n        ),\n        weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n        weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: function () {\n                return (\n                    '[Oggi a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextDay: function () {\n                return (\n                    '[Domani a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            nextWeek: function () {\n                return (\n                    'dddd [a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastDay: function () {\n                return (\n                    '[Ieri a' +\n                    (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n                    ']LT'\n                );\n            },\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return (\n                            '[La scorsa] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                  ? ' '\n                                  : \"ll'\") +\n                            ']LT'\n                        );\n                    default:\n                        return (\n                            '[Lo scorso] dddd [a' +\n                            (this.hours() > 1\n                                ? 'lle '\n                                : this.hours() === 0\n                                  ? ' '\n                                  : \"ll'\") +\n                            ']LT'\n                        );\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'tra %s',\n            past: '%s fa',\n            s: 'alcuni secondi',\n            ss: '%d secondi',\n            m: 'un minuto',\n            mm: '%d minuti',\n            h: \"un'ora\",\n            hh: '%d ore',\n            d: 'un giorno',\n            dd: '%d giorni',\n            w: 'una settimana',\n            ww: '%d settimane',\n            M: 'un mese',\n            MM: '%d mesi',\n            y: 'un anno',\n            yy: '%d anni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('ja', {\n        eras: [\n            {\n                since: '2019-05-01',\n                offset: 1,\n                name: '令和',\n                narrow: '㋿',\n                abbr: 'R',\n            },\n            {\n                since: '1989-01-08',\n                until: '2019-04-30',\n                offset: 1,\n                name: '平成',\n                narrow: '㍻',\n                abbr: 'H',\n            },\n            {\n                since: '1926-12-25',\n                until: '1989-01-07',\n                offset: 1,\n                name: '昭和',\n                narrow: '㍼',\n                abbr: 'S',\n            },\n            {\n                since: '1912-07-30',\n                until: '1926-12-24',\n                offset: 1,\n                name: '大正',\n                narrow: '㍽',\n                abbr: 'T',\n            },\n            {\n                since: '1873-01-01',\n                until: '1912-07-29',\n                offset: 6,\n                name: '明治',\n                narrow: '㍾',\n                abbr: 'M',\n            },\n            {\n                since: '0001-01-01',\n                until: '1873-12-31',\n                offset: 1,\n                name: '西暦',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: '紀元前',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        eraYearOrdinalRegex: /(元|\\d+)年/,\n        eraYearOrdinalParse: function (input, match) {\n            return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n        },\n        months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n        weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n        weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日 dddd HH:mm',\n            l: 'YYYY/MM/DD',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日(ddd) HH:mm',\n        },\n        meridiemParse: /午前|午後/i,\n        isPM: function (input) {\n            return input === '午後';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return '午前';\n            } else {\n                return '午後';\n            }\n        },\n        calendar: {\n            sameDay: '[今日] LT',\n            nextDay: '[明日] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[来週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            lastDay: '[昨日] LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[先週]dddd LT';\n                } else {\n                    return 'dddd LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}日/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'y':\n                    return number === 1 ? '元年' : number + '年';\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '数秒',\n            ss: '%d秒',\n            m: '1分',\n            mm: '%d分',\n            h: '1時間',\n            hh: '%d時間',\n            d: '1日',\n            dd: '%d日',\n            M: '1ヶ月',\n            MM: '%dヶ月',\n            y: '1年',\n            yy: '%d年',\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('jv', {\n        months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n        weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n        weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n        weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /enjing|siyang|sonten|ndalu/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'enjing') {\n                return hour;\n            } else if (meridiem === 'siyang') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'enjing';\n            } else if (hours < 15) {\n                return 'siyang';\n            } else if (hours < 19) {\n                return 'sonten';\n            } else {\n                return 'ndalu';\n            }\n        },\n        calendar: {\n            sameDay: '[Dinten puniko pukul] LT',\n            nextDay: '[Mbenjang pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kala wingi pukul] LT',\n            lastWeek: 'dddd [kepengker pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'wonten ing %s',\n            past: '%s ingkang kepengker',\n            s: 'sawetawis detik',\n            ss: '%d detik',\n            m: 'setunggal menit',\n            mm: '%d menit',\n            h: 'setunggal jam',\n            hh: '%d jam',\n            d: 'sedinten',\n            dd: '%d dinten',\n            M: 'sewulan',\n            MM: '%d wulan',\n            y: 'setaun',\n            yy: '%d taun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('ka', {\n        months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n            '_'\n        ),\n        monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n        weekdays: {\n            standalone:\n                'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n                    '_'\n                ),\n            format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n                '_'\n            ),\n            isFormat: /(წინა|შემდეგ)/,\n        },\n        weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n        weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[დღეს] LT[-ზე]',\n            nextDay: '[ხვალ] LT[-ზე]',\n            lastDay: '[გუშინ] LT[-ზე]',\n            nextWeek: '[შემდეგ] dddd LT[-ზე]',\n            lastWeek: '[წინა] dddd LT-ზე',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: function (s) {\n                return s.replace(\n                    /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n                    function ($0, $1, $2) {\n                        return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n                    }\n                );\n            },\n            past: function (s) {\n                if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n                    return s.replace(/(ი|ე)$/, 'ის წინ');\n                }\n                if (/წელი/.test(s)) {\n                    return s.replace(/წელი$/, 'წლის წინ');\n                }\n                return s;\n            },\n            s: 'რამდენიმე წამი',\n            ss: '%d წამი',\n            m: 'წუთი',\n            mm: '%d წუთი',\n            h: 'საათი',\n            hh: '%d საათი',\n            d: 'დღე',\n            dd: '%d დღე',\n            M: 'თვე',\n            MM: '%d თვე',\n            y: 'წელი',\n            yy: '%d წელი',\n        },\n        dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n        ordinal: function (number) {\n            if (number === 0) {\n                return number;\n            }\n            if (number === 1) {\n                return number + '-ლი';\n            }\n            if (\n                number < 20 ||\n                (number <= 100 && number % 20 === 0) ||\n                number % 100 === 0\n            ) {\n                return 'მე-' + number;\n            }\n            return number + '-ე';\n        },\n        week: {\n            dow: 1,\n            doy: 7,\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var suffixes$1 = {\n        0: '-ші',\n        1: '-ші',\n        2: '-ші',\n        3: '-ші',\n        4: '-ші',\n        5: '-ші',\n        6: '-шы',\n        7: '-ші',\n        8: '-ші',\n        9: '-шы',\n        10: '-шы',\n        20: '-шы',\n        30: '-шы',\n        40: '-шы',\n        50: '-ші',\n        60: '-шы',\n        70: '-ші',\n        80: '-ші',\n        90: '-шы',\n        100: '-ші',\n    };\n\n    hooks.defineLocale('kk', {\n        months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n            '_'\n        ),\n        monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n        weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n            '_'\n        ),\n        weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n        weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгін сағат] LT',\n            nextDay: '[Ертең сағат] LT',\n            nextWeek: 'dddd [сағат] LT',\n            lastDay: '[Кеше сағат] LT',\n            lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ішінде',\n            past: '%s бұрын',\n            s: 'бірнеше секунд',\n            ss: '%d секунд',\n            m: 'бір минут',\n            mm: '%d минут',\n            h: 'бір сағат',\n            hh: '%d сағат',\n            d: 'бір күн',\n            dd: '%d күн',\n            M: 'бір ай',\n            MM: '%d ай',\n            y: 'бір жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes$1[number] || suffixes$1[a] || suffixes$1[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$a = {\n            1: '១',\n            2: '២',\n            3: '៣',\n            4: '៤',\n            5: '៥',\n            6: '៦',\n            7: '៧',\n            8: '៨',\n            9: '៩',\n            0: '០',\n        },\n        numberMap$9 = {\n            '១': '1',\n            '២': '2',\n            '៣': '3',\n            '៤': '4',\n            '៥': '5',\n            '៦': '6',\n            '៧': '7',\n            '៨': '8',\n            '៩': '9',\n            '០': '0',\n        };\n\n    hooks.defineLocale('km', {\n        months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n            '_'\n        ),\n        monthsShort:\n            'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n                '_'\n            ),\n        weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n        weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ព្រឹក|ល្ងាច/,\n        isPM: function (input) {\n            return input === 'ល្ងាច';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ព្រឹក';\n            } else {\n                return 'ល្ងាច';\n            }\n        },\n        calendar: {\n            sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n            nextDay: '[ស្អែក ម៉ោង] LT',\n            nextWeek: 'dddd [ម៉ោង] LT',\n            lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n            lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sទៀត',\n            past: '%sមុន',\n            s: 'ប៉ុន្មានវិនាទី',\n            ss: '%d វិនាទី',\n            m: 'មួយនាទី',\n            mm: '%d នាទី',\n            h: 'មួយម៉ោង',\n            hh: '%d ម៉ោង',\n            d: 'មួយថ្ងៃ',\n            dd: '%d ថ្ងៃ',\n            M: 'មួយខែ',\n            MM: '%d ខែ',\n            y: 'មួយឆ្នាំ',\n            yy: '%d ឆ្នាំ',\n        },\n        dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n        ordinal: 'ទី%d',\n        preparse: function (string) {\n            return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n                return numberMap$9[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap$a[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$b = {\n            1: '೧',\n            2: '೨',\n            3: '೩',\n            4: '೪',\n            5: '೫',\n            6: '೬',\n            7: '೭',\n            8: '೮',\n            9: '೯',\n            0: '೦',\n        },\n        numberMap$a = {\n            '೧': '1',\n            '೨': '2',\n            '೩': '3',\n            '೪': '4',\n            '೫': '5',\n            '೬': '6',\n            '೭': '7',\n            '೮': '8',\n            '೯': '9',\n            '೦': '0',\n        };\n\n    hooks.defineLocale('kn', {\n        months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n            '_'\n        ),\n        monthsShort:\n            'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n        weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[ಇಂದು] LT',\n            nextDay: '[ನಾಳೆ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ನಿನ್ನೆ] LT',\n            lastWeek: '[ಕೊನೆಯ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ನಂತರ',\n            past: '%s ಹಿಂದೆ',\n            s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n            ss: '%d ಸೆಕೆಂಡುಗಳು',\n            m: 'ಒಂದು ನಿಮಿಷ',\n            mm: '%d ನಿಮಿಷ',\n            h: 'ಒಂದು ಗಂಟೆ',\n            hh: '%d ಗಂಟೆ',\n            d: 'ಒಂದು ದಿನ',\n            dd: '%d ದಿನ',\n            M: 'ಒಂದು ತಿಂಗಳು',\n            MM: '%d ತಿಂಗಳು',\n            y: 'ಒಂದು ವರ್ಷ',\n            yy: '%d ವರ್ಷ',\n        },\n        preparse: function (string) {\n            return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n                return numberMap$a[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap$b[match];\n            });\n        },\n        meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ರಾತ್ರಿ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n                return hour;\n            } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ಸಂಜೆ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ರಾತ್ರಿ';\n            } else if (hour < 10) {\n                return 'ಬೆಳಿಗ್ಗೆ';\n            } else if (hour < 17) {\n                return 'ಮಧ್ಯಾಹ್ನ';\n            } else if (hour < 20) {\n                return 'ಸಂಜೆ';\n            } else {\n                return 'ರಾತ್ರಿ';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n        ordinal: function (number) {\n            return number + 'ನೇ';\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('ko', {\n        months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n        monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n            '_'\n        ),\n        weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n        weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n        weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'YYYY.MM.DD.',\n            LL: 'YYYY년 MMMM D일',\n            LLL: 'YYYY년 MMMM D일 A h:mm',\n            LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n            l: 'YYYY.MM.DD.',\n            ll: 'YYYY년 MMMM D일',\n            lll: 'YYYY년 MMMM D일 A h:mm',\n            llll: 'YYYY년 MMMM D일 dddd A h:mm',\n        },\n        calendar: {\n            sameDay: '오늘 LT',\n            nextDay: '내일 LT',\n            nextWeek: 'dddd LT',\n            lastDay: '어제 LT',\n            lastWeek: '지난주 dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s 후',\n            past: '%s 전',\n            s: '몇 초',\n            ss: '%d초',\n            m: '1분',\n            mm: '%d분',\n            h: '한 시간',\n            hh: '%d시간',\n            d: '하루',\n            dd: '%d일',\n            M: '한 달',\n            MM: '%d달',\n            y: '일 년',\n            yy: '%d년',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '일';\n                case 'M':\n                    return number + '월';\n                case 'w':\n                case 'W':\n                    return number + '주';\n                default:\n                    return number;\n            }\n        },\n        meridiemParse: /오전|오후/,\n        isPM: function (token) {\n            return token === '오후';\n        },\n        meridiem: function (hour, minute, isUpper) {\n            return hour < 12 ? '오전' : '오후';\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function processRelativeTime$7(num, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['çend sanîye', 'çend sanîyeyan'],\n            ss: [num + ' sanîye', num + ' sanîyeyan'],\n            m: ['deqîqeyek', 'deqîqeyekê'],\n            mm: [num + ' deqîqe', num + ' deqîqeyan'],\n            h: ['saetek', 'saetekê'],\n            hh: [num + ' saet', num + ' saetan'],\n            d: ['rojek', 'rojekê'],\n            dd: [num + ' roj', num + ' rojan'],\n            w: ['hefteyek', 'hefteyekê'],\n            ww: [num + ' hefte', num + ' hefteyan'],\n            M: ['mehek', 'mehekê'],\n            MM: [num + ' meh', num + ' mehan'],\n            y: ['salek', 'salekê'],\n            yy: [num + ' sal', num + ' salan'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    // function obliqueNumSuffix(num) {\n    //     if(num.includes(':'))\n    //         num = parseInt(num.split(':')[0]);\n    //     else\n    //         num = parseInt(num);\n    //     return num == 0 || num % 10 == 1 ? 'ê'\n    //                         : (num > 10 && num % 10 == 0 ? 'î' : 'an');\n    // }\n    function ezafeNumSuffix(num) {\n        num = '' + num;\n        var l = num.substring(num.length - 1),\n            ll = num.length > 1 ? num.substring(num.length - 2) : '';\n        if (\n            !(ll == 12 || ll == 13) &&\n            (l == '2' || l == '3' || ll == '50' || l == '70' || l == '80')\n        )\n            return 'yê';\n        return 'ê';\n    }\n\n    hooks.defineLocale('ku-kmr', {\n        // According to the spelling rules defined by the work group of Weqfa Mezopotamyayê (Mesopotamia Foundation)\n        // this should be: 'Kanûna Paşîn_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Çirîya Pêşîn_Çirîya Paşîn_Kanûna Pêşîn'\n        // But the names below are more well known and handy\n        months: 'Rêbendan_Sibat_Adar_Nîsan_Gulan_Hezîran_Tîrmeh_Tebax_Îlon_Cotmeh_Mijdar_Berfanbar'.split(\n            '_'\n        ),\n        monthsShort: 'Rêb_Sib_Ada_Nîs_Gul_Hez_Tîr_Teb_Îlo_Cot_Mij_Ber'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'Yekşem_Duşem_Sêşem_Çarşem_Pêncşem_În_Şemî'.split('_'),\n        weekdaysShort: 'Yek_Du_Sê_Çar_Pên_În_Şem'.split('_'),\n        weekdaysMin: 'Ye_Du_Sê_Ça_Pê_În_Şe'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'bn' : 'BN';\n            } else {\n                return isLower ? 'pn' : 'PN';\n            }\n        },\n        meridiemParse: /bn|BN|pn|PN/,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'Do MMMM[a] YYYY[an]',\n            LLL: 'Do MMMM[a] YYYY[an] HH:mm',\n            LLLL: 'dddd, Do MMMM[a] YYYY[an] HH:mm',\n            ll: 'Do MMM[.] YYYY[an]',\n            lll: 'Do MMM[.] YYYY[an] HH:mm',\n            llll: 'ddd[.], Do MMM[.] YYYY[an] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Îro di saet] LT [de]',\n            nextDay: '[Sibê di saet] LT [de]',\n            nextWeek: 'dddd [di saet] LT [de]',\n            lastDay: '[Duh di saet] LT [de]',\n            lastWeek: 'dddd[a borî di saet] LT [de]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'di %s de',\n            past: 'berî %s',\n            s: processRelativeTime$7,\n            ss: processRelativeTime$7,\n            m: processRelativeTime$7,\n            mm: processRelativeTime$7,\n            h: processRelativeTime$7,\n            hh: processRelativeTime$7,\n            d: processRelativeTime$7,\n            dd: processRelativeTime$7,\n            w: processRelativeTime$7,\n            ww: processRelativeTime$7,\n            M: processRelativeTime$7,\n            MM: processRelativeTime$7,\n            y: processRelativeTime$7,\n            yy: processRelativeTime$7,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(?:yê|ê|\\.)/,\n        ordinal: function (num, period) {\n            var p = period.toLowerCase();\n            if (p.includes('w') || p.includes('m')) return num + '.';\n\n            return num + ezafeNumSuffix(num);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$c = {\n            1: '١',\n            2: '٢',\n            3: '٣',\n            4: '٤',\n            5: '٥',\n            6: '٦',\n            7: '٧',\n            8: '٨',\n            9: '٩',\n            0: '٠',\n        },\n        numberMap$b = {\n            '١': '1',\n            '٢': '2',\n            '٣': '3',\n            '٤': '4',\n            '٥': '5',\n            '٦': '6',\n            '٧': '7',\n            '٨': '8',\n            '٩': '9',\n            '٠': '0',\n        },\n        months$8 = [\n            'کانونی دووەم',\n            'شوبات',\n            'ئازار',\n            'نیسان',\n            'ئایار',\n            'حوزەیران',\n            'تەمموز',\n            'ئاب',\n            'ئەیلوول',\n            'تشرینی یەكەم',\n            'تشرینی دووەم',\n            'كانونی یەکەم',\n        ];\n\n    hooks.defineLocale('ku', {\n        months: months$8,\n        monthsShort: months$8,\n        weekdays:\n            'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n                '_'\n            ),\n        weekdaysShort:\n            'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n        weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ئێواره‌|به‌یانی/,\n        isPM: function (input) {\n            return /ئێواره‌/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'به‌یانی';\n            } else {\n                return 'ئێواره‌';\n            }\n        },\n        calendar: {\n            sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n            nextDay: '[به‌یانی كاتژمێر] LT',\n            nextWeek: 'dddd [كاتژمێر] LT',\n            lastDay: '[دوێنێ كاتژمێر] LT',\n            lastWeek: 'dddd [كاتژمێر] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'له‌ %s',\n            past: '%s',\n            s: 'چه‌ند چركه‌یه‌ك',\n            ss: 'چركه‌ %d',\n            m: 'یه‌ك خوله‌ك',\n            mm: '%d خوله‌ك',\n            h: 'یه‌ك كاتژمێر',\n            hh: '%d كاتژمێر',\n            d: 'یه‌ك ڕۆژ',\n            dd: '%d ڕۆژ',\n            M: 'یه‌ك مانگ',\n            MM: '%d مانگ',\n            y: 'یه‌ك ساڵ',\n            yy: '%d ساڵ',\n        },\n        preparse: function (string) {\n            return string\n                .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n                    return numberMap$b[match];\n                })\n                .replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string\n                .replace(/\\d/g, function (match) {\n                    return symbolMap$c[match];\n                })\n                .replace(/,/g, '،');\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var suffixes$2 = {\n        0: '-чү',\n        1: '-чи',\n        2: '-чи',\n        3: '-чү',\n        4: '-чү',\n        5: '-чи',\n        6: '-чы',\n        7: '-чи',\n        8: '-чи',\n        9: '-чу',\n        10: '-чу',\n        20: '-чы',\n        30: '-чу',\n        40: '-чы',\n        50: '-чү',\n        60: '-чы',\n        70: '-чи',\n        80: '-чи',\n        90: '-чу',\n        100: '-чү',\n    };\n\n    hooks.defineLocale('ky', {\n        months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n            '_'\n        ),\n        weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n            '_'\n        ),\n        weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n        weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бүгүн саат] LT',\n            nextDay: '[Эртең саат] LT',\n            nextWeek: 'dddd [саат] LT',\n            lastDay: '[Кечээ саат] LT',\n            lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ичинде',\n            past: '%s мурун',\n            s: 'бирнече секунд',\n            ss: '%d секунд',\n            m: 'бир мүнөт',\n            mm: '%d мүнөт',\n            h: 'бир саат',\n            hh: '%d саат',\n            d: 'бир күн',\n            dd: '%d күн',\n            M: 'бир ай',\n            MM: '%d ай',\n            y: 'бир жыл',\n            yy: '%d жыл',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes$2[number] || suffixes$2[a] || suffixes$2[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function processRelativeTime$8(number, withoutSuffix, key, isFuture) {\n        var format = {\n            m: ['eng Minutt', 'enger Minutt'],\n            h: ['eng Stonn', 'enger Stonn'],\n            d: ['een Dag', 'engem Dag'],\n            M: ['ee Mount', 'engem Mount'],\n            y: ['ee Joer', 'engem Joer'],\n        };\n        return withoutSuffix ? format[key][0] : format[key][1];\n    }\n    function processFutureTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'a ' + string;\n        }\n        return 'an ' + string;\n    }\n    function processPastTime(string) {\n        var number = string.substr(0, string.indexOf(' '));\n        if (eifelerRegelAppliesToNumber(number)) {\n            return 'viru ' + string;\n        }\n        return 'virun ' + string;\n    }\n    /**\n     * Returns true if the word before the given number loses the '-n' ending.\n     * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n     *\n     * @param number {integer}\n     * @returns {boolean}\n     */\n    function eifelerRegelAppliesToNumber(number) {\n        number = parseInt(number, 10);\n        if (isNaN(number)) {\n            return false;\n        }\n        if (number < 0) {\n            // Negative Number --> always true\n            return true;\n        } else if (number < 10) {\n            // Only 1 digit\n            if (4 <= number && number <= 7) {\n                return true;\n            }\n            return false;\n        } else if (number < 100) {\n            // 2 digits\n            var lastDigit = number % 10,\n                firstDigit = number / 10;\n            if (lastDigit === 0) {\n                return eifelerRegelAppliesToNumber(firstDigit);\n            }\n            return eifelerRegelAppliesToNumber(lastDigit);\n        } else if (number < 10000) {\n            // 3 or 4 digits --> recursively check first digit\n            while (number >= 10) {\n                number = number / 10;\n            }\n            return eifelerRegelAppliesToNumber(number);\n        } else {\n            // Anything larger than 4 digits: recursively check first n-3 digits\n            number = number / 1000;\n            return eifelerRegelAppliesToNumber(number);\n        }\n    }\n\n    hooks.defineLocale('lb', {\n        months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n            '_'\n        ),\n        monthsShort:\n            'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n                '_'\n            ),\n        weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n        weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm [Auer]',\n            LTS: 'H:mm:ss [Auer]',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm [Auer]',\n            LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n        },\n        calendar: {\n            sameDay: '[Haut um] LT',\n            sameElse: 'L',\n            nextDay: '[Muer um] LT',\n            nextWeek: 'dddd [um] LT',\n            lastDay: '[Gëschter um] LT',\n            lastWeek: function () {\n                // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n                switch (this.day()) {\n                    case 2:\n                    case 4:\n                        return '[Leschten] dddd [um] LT';\n                    default:\n                        return '[Leschte] dddd [um] LT';\n                }\n            },\n        },\n        relativeTime: {\n            future: processFutureTime,\n            past: processPastTime,\n            s: 'e puer Sekonnen',\n            ss: '%d Sekonnen',\n            m: processRelativeTime$8,\n            mm: '%d Minutten',\n            h: processRelativeTime$8,\n            hh: '%d Stonnen',\n            d: processRelativeTime$8,\n            dd: '%d Deeg',\n            M: processRelativeTime$8,\n            MM: '%d Méint',\n            y: processRelativeTime$8,\n            yy: '%d Joer',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('lo', {\n        months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n                '_'\n            ),\n        weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n        weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n        isPM: function (input) {\n            return input === 'ຕອນແລງ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ຕອນເຊົ້າ';\n            } else {\n                return 'ຕອນແລງ';\n            }\n        },\n        calendar: {\n            sameDay: '[ມື້ນີ້ເວລາ] LT',\n            nextDay: '[ມື້ອື່ນເວລາ] LT',\n            nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n            lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n            lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ອີກ %s',\n            past: '%sຜ່ານມາ',\n            s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n            ss: '%d ວິນາທີ',\n            m: '1 ນາທີ',\n            mm: '%d ນາທີ',\n            h: '1 ຊົ່ວໂມງ',\n            hh: '%d ຊົ່ວໂມງ',\n            d: '1 ມື້',\n            dd: '%d ມື້',\n            M: '1 ເດືອນ',\n            MM: '%d ເດືອນ',\n            y: '1 ປີ',\n            yy: '%d ປີ',\n        },\n        dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n        ordinal: function (number) {\n            return 'ທີ່' + number;\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var units = {\n        ss: 'sekundė_sekundžių_sekundes',\n        m: 'minutė_minutės_minutę',\n        mm: 'minutės_minučių_minutes',\n        h: 'valanda_valandos_valandą',\n        hh: 'valandos_valandų_valandas',\n        d: 'diena_dienos_dieną',\n        dd: 'dienos_dienų_dienas',\n        M: 'mėnuo_mėnesio_mėnesį',\n        MM: 'mėnesiai_mėnesių_mėnesius',\n        y: 'metai_metų_metus',\n        yy: 'metai_metų_metus',\n    };\n    function translateSeconds(number, withoutSuffix, key, isFuture) {\n        if (withoutSuffix) {\n            return 'kelios sekundės';\n        } else {\n            return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n        }\n    }\n    function translateSingular(number, withoutSuffix, key, isFuture) {\n        return withoutSuffix\n            ? forms(key)[0]\n            : isFuture\n              ? forms(key)[1]\n              : forms(key)[2];\n    }\n    function special(number) {\n        return number % 10 === 0 || (number > 10 && number < 20);\n    }\n    function forms(key) {\n        return units[key].split('_');\n    }\n    function translate$6(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        if (number === 1) {\n            return (\n                result + translateSingular(number, withoutSuffix, key[0], isFuture)\n            );\n        } else if (withoutSuffix) {\n            return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n        } else {\n            if (isFuture) {\n                return result + forms(key)[1];\n            } else {\n                return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n            }\n        }\n    }\n    hooks.defineLocale('lt', {\n        months: {\n            format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n                '_'\n            ),\n            standalone:\n                'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n                    '_'\n                ),\n            isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n        },\n        monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n        weekdays: {\n            format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n                '_'\n            ),\n            standalone:\n                'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n                    '_'\n                ),\n            isFormat: /dddd HH:mm/,\n        },\n        weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n        weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY [m.] MMMM D [d.]',\n            LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n            l: 'YYYY-MM-DD',\n            ll: 'YYYY [m.] MMMM D [d.]',\n            lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n            llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n        },\n        calendar: {\n            sameDay: '[Šiandien] LT',\n            nextDay: '[Rytoj] LT',\n            nextWeek: 'dddd LT',\n            lastDay: '[Vakar] LT',\n            lastWeek: '[Praėjusį] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'po %s',\n            past: 'prieš %s',\n            s: translateSeconds,\n            ss: translate$6,\n            m: translateSingular,\n            mm: translate$6,\n            h: translateSingular,\n            hh: translate$6,\n            d: translateSingular,\n            dd: translate$6,\n            M: translateSingular,\n            MM: translate$6,\n            y: translateSingular,\n            yy: translate$6,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n        ordinal: function (number) {\n            return number + '-oji';\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var units$1 = {\n        ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n        m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n        h: 'stundas_stundām_stunda_stundas'.split('_'),\n        hh: 'stundas_stundām_stunda_stundas'.split('_'),\n        d: 'dienas_dienām_diena_dienas'.split('_'),\n        dd: 'dienas_dienām_diena_dienas'.split('_'),\n        M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n        y: 'gada_gadiem_gads_gadi'.split('_'),\n        yy: 'gada_gadiem_gads_gadi'.split('_'),\n    };\n    /**\n     * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n     */\n    function format$1(forms, number, withoutSuffix) {\n        if (withoutSuffix) {\n            // E.g. \"21 minūte\", \"3 minūtes\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n        } else {\n            // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n            // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n            return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n        }\n    }\n    function relativeTimeWithPlural$1(number, withoutSuffix, key) {\n        return number + ' ' + format$1(units$1[key], number, withoutSuffix);\n    }\n    function relativeTimeWithSingular(number, withoutSuffix, key) {\n        return format$1(units$1[key], number, withoutSuffix);\n    }\n    function relativeSeconds(number, withoutSuffix) {\n        return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n    }\n\n    hooks.defineLocale('lv', {\n        months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n        weekdays:\n            'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n                '_'\n            ),\n        weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY.',\n            LL: 'YYYY. [gada] D. MMMM',\n            LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n            LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n        },\n        calendar: {\n            sameDay: '[Šodien pulksten] LT',\n            nextDay: '[Rīt pulksten] LT',\n            nextWeek: 'dddd [pulksten] LT',\n            lastDay: '[Vakar pulksten] LT',\n            lastWeek: '[Pagājušā] dddd [pulksten] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'pēc %s',\n            past: 'pirms %s',\n            s: relativeSeconds,\n            ss: relativeTimeWithPlural$1,\n            m: relativeTimeWithSingular,\n            mm: relativeTimeWithPlural$1,\n            h: relativeTimeWithSingular,\n            hh: relativeTimeWithPlural$1,\n            d: relativeTimeWithSingular,\n            dd: relativeTimeWithPlural$1,\n            M: relativeTimeWithSingular,\n            MM: relativeTimeWithPlural$1,\n            y: relativeTimeWithSingular,\n            yy: relativeTimeWithPlural$1,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var translator = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekund', 'sekunda', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            dd: ['dan', 'dana', 'dana'],\n            MM: ['mjesec', 'mjeseca', 'mjeseci'],\n            yy: ['godina', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            return number === 1\n                ? wordKey[0]\n                : number >= 2 && number <= 4\n                  ? wordKey[1]\n                  : wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key) {\n            var wordKey = translator.words[key];\n            if (key.length === 1) {\n                return withoutSuffix ? wordKey[0] : wordKey[1];\n            } else {\n                return (\n                    number +\n                    ' ' +\n                    translator.correctGrammaticalCase(number, wordKey)\n                );\n            }\n        },\n    };\n\n    hooks.defineLocale('me', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sjutra u] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedjelju] [u] LT';\n                    case 3:\n                        return '[u] [srijedu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedjelje] [u] LT',\n                    '[prošlog] [ponedjeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srijede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'prije %s',\n            s: 'nekoliko sekundi',\n            ss: translator.translate,\n            m: translator.translate,\n            mm: translator.translate,\n            h: translator.translate,\n            hh: translator.translate,\n            d: 'dan',\n            dd: translator.translate,\n            M: 'mjesec',\n            MM: translator.translate,\n            y: 'godinu',\n            yy: translator.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('mi', {\n        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(\n            '_'\n        ),\n        monthsShort:\n            'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n                '_'\n            ),\n        monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n        monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n        weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n        weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [i] HH:mm',\n            LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i teie mahana, i] LT',\n            nextDay: '[apopo i] LT',\n            nextWeek: 'dddd [i] LT',\n            lastDay: '[inanahi i] LT',\n            lastWeek: 'dddd [whakamutunga i] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'i roto i %s',\n            past: '%s i mua',\n            s: 'te hēkona ruarua',\n            ss: '%d hēkona',\n            m: 'he meneti',\n            mm: '%d meneti',\n            h: 'te haora',\n            hh: '%d haora',\n            d: 'he ra',\n            dd: '%d ra',\n            M: 'he marama',\n            MM: '%d marama',\n            y: 'he tau',\n            yy: '%d tau',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('mk', {\n        months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n            '_'\n        ),\n        monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n        weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n            '_'\n        ),\n        weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n        weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[Денес во] LT',\n            nextDay: '[Утре во] LT',\n            nextWeek: '[Во] dddd [во] LT',\n            lastDay: '[Вчера во] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 6:\n                        return '[Изминатата] dddd [во] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[Изминатиот] dddd [во] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пред %s',\n            s: 'неколку секунди',\n            ss: '%d секунди',\n            m: 'една минута',\n            mm: '%d минути',\n            h: 'еден час',\n            hh: '%d часа',\n            d: 'еден ден',\n            dd: '%d дена',\n            M: 'еден месец',\n            MM: '%d месеци',\n            y: 'една година',\n            yy: '%d години',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n        ordinal: function (number) {\n            var lastDigit = number % 10,\n                last2Digits = number % 100;\n            if (number === 0) {\n                return number + '-ев';\n            } else if (last2Digits === 0) {\n                return number + '-ен';\n            } else if (last2Digits > 10 && last2Digits < 20) {\n                return number + '-ти';\n            } else if (lastDigit === 1) {\n                return number + '-ви';\n            } else if (lastDigit === 2) {\n                return number + '-ри';\n            } else if (lastDigit === 7 || lastDigit === 8) {\n                return number + '-ми';\n            } else {\n                return number + '-ти';\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('ml', {\n        months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n                '_'\n            ),\n        weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n        weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm -നു',\n            LTS: 'A h:mm:ss -നു',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm -നു',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n        },\n        calendar: {\n            sameDay: '[ഇന്ന്] LT',\n            nextDay: '[നാളെ] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[ഇന്നലെ] LT',\n            lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s കഴിഞ്ഞ്',\n            past: '%s മുൻപ്',\n            s: 'അൽപ നിമിഷങ്ങൾ',\n            ss: '%d സെക്കൻഡ്',\n            m: 'ഒരു മിനിറ്റ്',\n            mm: '%d മിനിറ്റ്',\n            h: 'ഒരു മണിക്കൂർ',\n            hh: '%d മണിക്കൂർ',\n            d: 'ഒരു ദിവസം',\n            dd: '%d ദിവസം',\n            M: 'ഒരു മാസം',\n            MM: '%d മാസം',\n            y: 'ഒരു വർഷം',\n            yy: '%d വർഷം',\n        },\n        meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                (meridiem === 'രാത്രി' && hour >= 4) ||\n                meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n                meridiem === 'വൈകുന്നേരം'\n            ) {\n                return hour + 12;\n            } else {\n                return hour;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'രാത്രി';\n            } else if (hour < 12) {\n                return 'രാവിലെ';\n            } else if (hour < 17) {\n                return 'ഉച്ച കഴിഞ്ഞ്';\n            } else if (hour < 20) {\n                return 'വൈകുന്നേരം';\n            } else {\n                return 'രാത്രി';\n            }\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function translate$7(number, withoutSuffix, key, isFuture) {\n        switch (key) {\n            case 's':\n                return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n            case 'ss':\n                return number + (withoutSuffix ? ' секунд' : ' секундын');\n            case 'm':\n            case 'mm':\n                return number + (withoutSuffix ? ' минут' : ' минутын');\n            case 'h':\n            case 'hh':\n                return number + (withoutSuffix ? ' цаг' : ' цагийн');\n            case 'd':\n            case 'dd':\n                return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n            case 'M':\n            case 'MM':\n                return number + (withoutSuffix ? ' сар' : ' сарын');\n            case 'y':\n            case 'yy':\n                return number + (withoutSuffix ? ' жил' : ' жилийн');\n            default:\n                return number;\n        }\n    }\n\n    hooks.defineLocale('mn', {\n        months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n            '_'\n        ),\n        monthsShort:\n            '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n        weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n        weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY оны MMMMын D',\n            LLL: 'YYYY оны MMMMын D HH:mm',\n            LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n        },\n        meridiemParse: /ҮӨ|ҮХ/i,\n        isPM: function (input) {\n            return input === 'ҮХ';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ҮӨ';\n            } else {\n                return 'ҮХ';\n            }\n        },\n        calendar: {\n            sameDay: '[Өнөөдөр] LT',\n            nextDay: '[Маргааш] LT',\n            nextWeek: '[Ирэх] dddd LT',\n            lastDay: '[Өчигдөр] LT',\n            lastWeek: '[Өнгөрсөн] dddd LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s дараа',\n            past: '%s өмнө',\n            s: translate$7,\n            ss: translate$7,\n            m: translate$7,\n            mm: translate$7,\n            h: translate$7,\n            hh: translate$7,\n            d: translate$7,\n            dd: translate$7,\n            M: translate$7,\n            MM: translate$7,\n            y: translate$7,\n            yy: translate$7,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + ' өдөр';\n                default:\n                    return number;\n            }\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$d = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap$c = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n        var output = '';\n        if (withoutSuffix) {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंद';\n                    break;\n                case 'ss':\n                    output = '%d सेकंद';\n                    break;\n                case 'm':\n                    output = 'एक मिनिट';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटे';\n                    break;\n                case 'h':\n                    output = 'एक तास';\n                    break;\n                case 'hh':\n                    output = '%d तास';\n                    break;\n                case 'd':\n                    output = 'एक दिवस';\n                    break;\n                case 'dd':\n                    output = '%d दिवस';\n                    break;\n                case 'M':\n                    output = 'एक महिना';\n                    break;\n                case 'MM':\n                    output = '%d महिने';\n                    break;\n                case 'y':\n                    output = 'एक वर्ष';\n                    break;\n                case 'yy':\n                    output = '%d वर्षे';\n                    break;\n            }\n        } else {\n            switch (string) {\n                case 's':\n                    output = 'काही सेकंदां';\n                    break;\n                case 'ss':\n                    output = '%d सेकंदां';\n                    break;\n                case 'm':\n                    output = 'एका मिनिटा';\n                    break;\n                case 'mm':\n                    output = '%d मिनिटां';\n                    break;\n                case 'h':\n                    output = 'एका तासा';\n                    break;\n                case 'hh':\n                    output = '%d तासां';\n                    break;\n                case 'd':\n                    output = 'एका दिवसा';\n                    break;\n                case 'dd':\n                    output = '%d दिवसां';\n                    break;\n                case 'M':\n                    output = 'एका महिन्या';\n                    break;\n                case 'MM':\n                    output = '%d महिन्यां';\n                    break;\n                case 'y':\n                    output = 'एका वर्षा';\n                    break;\n                case 'yy':\n                    output = '%d वर्षां';\n                    break;\n            }\n        }\n        return output.replace(/%d/i, number);\n    }\n\n    hooks.defineLocale('mr', {\n        months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n            '_'\n        ),\n        monthsShort:\n            'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n        weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n        weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm वाजता',\n            LTS: 'A h:mm:ss वाजता',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm वाजता',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[उद्या] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[काल] LT',\n            lastWeek: '[मागील] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमध्ये',\n            past: '%sपूर्वी',\n            s: relativeTimeMr,\n            ss: relativeTimeMr,\n            m: relativeTimeMr,\n            mm: relativeTimeMr,\n            h: relativeTimeMr,\n            hh: relativeTimeMr,\n            d: relativeTimeMr,\n            dd: relativeTimeMr,\n            M: relativeTimeMr,\n            MM: relativeTimeMr,\n            y: relativeTimeMr,\n            yy: relativeTimeMr,\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap$c[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap$d[match];\n            });\n        },\n        meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n                return hour;\n            } else if (\n                meridiem === 'दुपारी' ||\n                meridiem === 'सायंकाळी' ||\n                meridiem === 'रात्री'\n            ) {\n                return hour >= 12 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour >= 0 && hour < 6) {\n                return 'पहाटे';\n            } else if (hour < 12) {\n                return 'सकाळी';\n            } else if (hour < 17) {\n                return 'दुपारी';\n            } else if (hour < 20) {\n                return 'सायंकाळी';\n            } else {\n                return 'रात्री';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('ms-my', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('ms', {\n        months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n        weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n        weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n        weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [pukul] HH.mm',\n            LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n        },\n        meridiemParse: /pagi|tengahari|petang|malam/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'pagi') {\n                return hour;\n            } else if (meridiem === 'tengahari') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'petang' || meridiem === 'malam') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'pagi';\n            } else if (hours < 15) {\n                return 'tengahari';\n            } else if (hours < 19) {\n                return 'petang';\n            } else {\n                return 'malam';\n            }\n        },\n        calendar: {\n            sameDay: '[Hari ini pukul] LT',\n            nextDay: '[Esok pukul] LT',\n            nextWeek: 'dddd [pukul] LT',\n            lastDay: '[Kelmarin pukul] LT',\n            lastWeek: 'dddd [lepas pukul] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dalam %s',\n            past: '%s yang lepas',\n            s: 'beberapa saat',\n            ss: '%d saat',\n            m: 'seminit',\n            mm: '%d minit',\n            h: 'sejam',\n            hh: '%d jam',\n            d: 'sehari',\n            dd: '%d hari',\n            M: 'sebulan',\n            MM: '%d bulan',\n            y: 'setahun',\n            yy: '%d tahun',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('mt', {\n        months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n        weekdays:\n            'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n                '_'\n            ),\n        weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n        weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Illum fil-]LT',\n            nextDay: '[Għada fil-]LT',\n            nextWeek: 'dddd [fil-]LT',\n            lastDay: '[Il-bieraħ fil-]LT',\n            lastWeek: 'dddd [li għadda] [fil-]LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'f’ %s',\n            past: '%s ilu',\n            s: 'ftit sekondi',\n            ss: '%d sekondi',\n            m: 'minuta',\n            mm: '%d minuti',\n            h: 'siegħa',\n            hh: '%d siegħat',\n            d: 'ġurnata',\n            dd: '%d ġranet',\n            M: 'xahar',\n            MM: '%d xhur',\n            y: 'sena',\n            yy: '%d sni',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$e = {\n            1: '၁',\n            2: '၂',\n            3: '၃',\n            4: '၄',\n            5: '၅',\n            6: '၆',\n            7: '၇',\n            8: '၈',\n            9: '၉',\n            0: '၀',\n        },\n        numberMap$d = {\n            '၁': '1',\n            '၂': '2',\n            '၃': '3',\n            '၄': '4',\n            '၅': '5',\n            '၆': '6',\n            '၇': '7',\n            '၈': '8',\n            '၉': '9',\n            '၀': '0',\n        };\n\n    hooks.defineLocale('my', {\n        months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n            '_'\n        ),\n        monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n        weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n            '_'\n        ),\n        weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n        weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ယနေ.] LT [မှာ]',\n            nextDay: '[မနက်ဖြန်] LT [မှာ]',\n            nextWeek: 'dddd LT [မှာ]',\n            lastDay: '[မနေ.က] LT [မှာ]',\n            lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'လာမည့် %s မှာ',\n            past: 'လွန်ခဲ့သော %s က',\n            s: 'စက္ကန်.အနည်းငယ်',\n            ss: '%d စက္ကန့်',\n            m: 'တစ်မိနစ်',\n            mm: '%d မိနစ်',\n            h: 'တစ်နာရီ',\n            hh: '%d နာရီ',\n            d: 'တစ်ရက်',\n            dd: '%d ရက်',\n            M: 'တစ်လ',\n            MM: '%d လ',\n            y: 'တစ်နှစ်',\n            yy: '%d နှစ်',\n        },\n        preparse: function (string) {\n            return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n                return numberMap$d[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap$e[match];\n            });\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('nb', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n        weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n        weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[i dag kl.] LT',\n            nextDay: '[i morgen kl.] LT',\n            nextWeek: 'dddd [kl.] LT',\n            lastDay: '[i går kl.] LT',\n            lastWeek: '[forrige] dddd [kl.] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s siden',\n            s: 'noen sekunder',\n            ss: '%d sekunder',\n            m: 'ett minutt',\n            mm: '%d minutter',\n            h: 'én time',\n            hh: '%d timer',\n            d: 'én dag',\n            dd: '%d dager',\n            w: 'én uke',\n            ww: '%d uker',\n            M: 'én måned',\n            MM: '%d måneder',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$f = {\n            1: '१',\n            2: '२',\n            3: '३',\n            4: '४',\n            5: '५',\n            6: '६',\n            7: '७',\n            8: '८',\n            9: '९',\n            0: '०',\n        },\n        numberMap$e = {\n            '१': '1',\n            '२': '2',\n            '३': '3',\n            '४': '4',\n            '५': '5',\n            '६': '6',\n            '७': '7',\n            '८': '8',\n            '९': '9',\n            '०': '0',\n        };\n\n    hooks.defineLocale('ne', {\n        months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n            '_'\n        ),\n        monthsShort:\n            'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n            '_'\n        ),\n        weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n        weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'Aको h:mm बजे',\n            LTS: 'Aको h:mm:ss बजे',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, Aको h:mm बजे',\n            LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n        },\n        preparse: function (string) {\n            return string.replace(/[१२३४५६७८९०]/g, function (match) {\n                return numberMap$e[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap$f[match];\n            });\n        },\n        meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'राति') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'बिहान') {\n                return hour;\n            } else if (meridiem === 'दिउँसो') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'साँझ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 3) {\n                return 'राति';\n            } else if (hour < 12) {\n                return 'बिहान';\n            } else if (hour < 16) {\n                return 'दिउँसो';\n            } else if (hour < 20) {\n                return 'साँझ';\n            } else {\n                return 'राति';\n            }\n        },\n        calendar: {\n            sameDay: '[आज] LT',\n            nextDay: '[भोलि] LT',\n            nextWeek: '[आउँदो] dddd[,] LT',\n            lastDay: '[हिजो] LT',\n            lastWeek: '[गएको] dddd[,] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sमा',\n            past: '%s अगाडि',\n            s: 'केही क्षण',\n            ss: '%d सेकेण्ड',\n            m: 'एक मिनेट',\n            mm: '%d मिनेट',\n            h: 'एक घण्टा',\n            hh: '%d घण्टा',\n            d: 'एक दिन',\n            dd: '%d दिन',\n            M: 'एक महिना',\n            MM: '%d महिना',\n            y: 'एक बर्ष',\n            yy: '%d बर्ष',\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots$1 =\n            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots$1 =\n            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        monthsParse$8 = [\n            /^jan/i,\n            /^feb/i,\n            /^(maart|mrt\\.?)$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex$8 =\n            /^(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;\n\n    hooks.defineLocale('nl-be', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots$1;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots$1[m.month()];\n            } else {\n                return monthsShortWithDots$1[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex$8,\n        monthsShortRegex: monthsRegex$8,\n        monthsStrictRegex:\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex:\n            /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse$8,\n        longMonthsParse: monthsParse$8,\n        shortMonthsParse: monthsParse$8,\n\n        weekdays:\n            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var monthsShortWithDots$2 =\n            'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n        monthsShortWithoutDots$2 =\n            'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        monthsParse$9 = [\n            /^jan/i,\n            /^feb/i,\n            /^(maart|mrt\\.?)$/i,\n            /^apr/i,\n            /^mei$/i,\n            /^jun[i.]?$/i,\n            /^jul[i.]?$/i,\n            /^aug/i,\n            /^sep/i,\n            /^okt/i,\n            /^nov/i,\n            /^dec/i,\n        ],\n        monthsRegex$9 =\n            /^(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;\n\n    hooks.defineLocale('nl', {\n        months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: function (m, format) {\n            if (!m) {\n                return monthsShortWithDots$2;\n            } else if (/-MMM-/.test(format)) {\n                return monthsShortWithoutDots$2[m.month()];\n            } else {\n                return monthsShortWithDots$2[m.month()];\n            }\n        },\n\n        monthsRegex: monthsRegex$9,\n        monthsShortRegex: monthsRegex$9,\n        monthsStrictRegex:\n            /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n        monthsShortStrictRegex:\n            /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n        monthsParse: monthsParse$9,\n        longMonthsParse: monthsParse$9,\n        shortMonthsParse: monthsParse$9,\n\n        weekdays:\n            'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n        weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n        weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD-MM-YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[vandaag om] LT',\n            nextDay: '[morgen om] LT',\n            nextWeek: 'dddd [om] LT',\n            lastDay: '[gisteren om] LT',\n            lastWeek: '[afgelopen] dddd [om] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'over %s',\n            past: '%s geleden',\n            s: 'een paar seconden',\n            ss: '%d seconden',\n            m: 'één minuut',\n            mm: '%d minuten',\n            h: 'één uur',\n            hh: '%d uur',\n            d: 'één dag',\n            dd: '%d dagen',\n            w: 'één week',\n            ww: '%d weken',\n            M: 'één maand',\n            MM: '%d maanden',\n            y: 'één jaar',\n            yy: '%d jaar',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n        ordinal: function (number) {\n            return (\n                number +\n                (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n            );\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('nn', {\n        months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n        weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n        weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY [kl.] H:mm',\n            LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[I dag klokka] LT',\n            nextDay: '[I morgon klokka] LT',\n            nextWeek: 'dddd [klokka] LT',\n            lastDay: '[I går klokka] LT',\n            lastWeek: '[Føregåande] dddd [klokka] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: '%s sidan',\n            s: 'nokre sekund',\n            ss: '%d sekund',\n            m: 'eit minutt',\n            mm: '%d minutt',\n            h: 'ein time',\n            hh: '%d timar',\n            d: 'ein dag',\n            dd: '%d dagar',\n            w: 'ei veke',\n            ww: '%d veker',\n            M: 'ein månad',\n            MM: '%d månader',\n            y: 'eit år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('oc-lnc', {\n        months: {\n            standalone:\n                'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n                    '_'\n                ),\n            format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n                '_'\n            ),\n            isFormat: /D[oD]?(\\s)+MMMM/,\n        },\n        monthsShort:\n            'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n            '_'\n        ),\n        weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n        weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [de] YYYY',\n            ll: 'D MMM YYYY',\n            LLL: 'D MMMM [de] YYYY [a] H:mm',\n            lll: 'D MMM YYYY, H:mm',\n            LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n            llll: 'ddd D MMM YYYY, H:mm',\n        },\n        calendar: {\n            sameDay: '[uèi a] LT',\n            nextDay: '[deman a] LT',\n            nextWeek: 'dddd [a] LT',\n            lastDay: '[ièr a] LT',\n            lastWeek: 'dddd [passat a] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: \"d'aquí %s\",\n            past: 'fa %s',\n            s: 'unas segondas',\n            ss: '%d segondas',\n            m: 'una minuta',\n            mm: '%d minutas',\n            h: 'una ora',\n            hh: '%d oras',\n            d: 'un jorn',\n            dd: '%d jorns',\n            M: 'un mes',\n            MM: '%d meses',\n            y: 'un an',\n            yy: '%d ans',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n        ordinal: function (number, period) {\n            var output =\n                number === 1\n                    ? 'r'\n                    : number === 2\n                      ? 'n'\n                      : number === 3\n                        ? 'r'\n                        : number === 4\n                          ? 't'\n                          : 'è';\n            if (period === 'w' || period === 'W') {\n                output = 'a';\n            }\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4,\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$g = {\n            1: '੧',\n            2: '੨',\n            3: '੩',\n            4: '੪',\n            5: '੫',\n            6: '੬',\n            7: '੭',\n            8: '੮',\n            9: '੯',\n            0: '੦',\n        },\n        numberMap$f = {\n            '੧': '1',\n            '੨': '2',\n            '੩': '3',\n            '੪': '4',\n            '੫': '5',\n            '੬': '6',\n            '੭': '7',\n            '੮': '8',\n            '੯': '9',\n            '੦': '0',\n        };\n\n    hooks.defineLocale('pa-in', {\n        // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n        months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n                '_'\n            ),\n        weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n            '_'\n        ),\n        weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm ਵਜੇ',\n            LTS: 'A h:mm:ss ਵਜੇ',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n        },\n        calendar: {\n            sameDay: '[ਅਜ] LT',\n            nextDay: '[ਕਲ] LT',\n            nextWeek: '[ਅਗਲਾ] dddd, LT',\n            lastDay: '[ਕਲ] LT',\n            lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s ਵਿੱਚ',\n            past: '%s ਪਿਛਲੇ',\n            s: 'ਕੁਝ ਸਕਿੰਟ',\n            ss: '%d ਸਕਿੰਟ',\n            m: 'ਇਕ ਮਿੰਟ',\n            mm: '%d ਮਿੰਟ',\n            h: 'ਇੱਕ ਘੰਟਾ',\n            hh: '%d ਘੰਟੇ',\n            d: 'ਇੱਕ ਦਿਨ',\n            dd: '%d ਦਿਨ',\n            M: 'ਇੱਕ ਮਹੀਨਾ',\n            MM: '%d ਮਹੀਨੇ',\n            y: 'ਇੱਕ ਸਾਲ',\n            yy: '%d ਸਾਲ',\n        },\n        preparse: function (string) {\n            return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n                return numberMap$f[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap$g[match];\n            });\n        },\n        // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n        // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n        meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ਰਾਤ') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ਸਵੇਰ') {\n                return hour;\n            } else if (meridiem === 'ਦੁਪਹਿਰ') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'ਸ਼ਾਮ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ਰਾਤ';\n            } else if (hour < 10) {\n                return 'ਸਵੇਰ';\n            } else if (hour < 17) {\n                return 'ਦੁਪਹਿਰ';\n            } else if (hour < 20) {\n                return 'ਸ਼ਾਮ';\n            } else {\n                return 'ਰਾਤ';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var monthsNominative =\n            'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n                '_'\n            ),\n        monthsSubjective =\n            'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n                '_'\n            ),\n        monthsParse$a = [\n            /^sty/i,\n            /^lut/i,\n            /^mar/i,\n            /^kwi/i,\n            /^maj/i,\n            /^cze/i,\n            /^lip/i,\n            /^sie/i,\n            /^wrz/i,\n            /^paź/i,\n            /^lis/i,\n            /^gru/i,\n        ];\n    function plural$3(n) {\n        return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n    }\n    function translate$8(number, withoutSuffix, key) {\n        var result = number + ' ';\n        switch (key) {\n            case 'ss':\n                return result + (plural$3(number) ? 'sekundy' : 'sekund');\n            case 'm':\n                return withoutSuffix ? 'minuta' : 'minutę';\n            case 'mm':\n                return result + (plural$3(number) ? 'minuty' : 'minut');\n            case 'h':\n                return withoutSuffix ? 'godzina' : 'godzinę';\n            case 'hh':\n                return result + (plural$3(number) ? 'godziny' : 'godzin');\n            case 'ww':\n                return result + (plural$3(number) ? 'tygodnie' : 'tygodni');\n            case 'MM':\n                return result + (plural$3(number) ? 'miesiące' : 'miesięcy');\n            case 'yy':\n                return result + (plural$3(number) ? 'lata' : 'lat');\n        }\n    }\n\n    hooks.defineLocale('pl', {\n        months: function (momentToFormat, format) {\n            if (!momentToFormat) {\n                return monthsNominative;\n            } else if (/D MMMM/.test(format)) {\n                return monthsSubjective[momentToFormat.month()];\n            } else {\n                return monthsNominative[momentToFormat.month()];\n            }\n        },\n        monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n        monthsParse: monthsParse$a,\n        longMonthsParse: monthsParse$a,\n        shortMonthsParse: monthsParse$a,\n        weekdays:\n            'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n        weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n        weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Dziś o] LT',\n            nextDay: '[Jutro o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W niedzielę o] LT';\n\n                    case 2:\n                        return '[We wtorek o] LT';\n\n                    case 3:\n                        return '[W środę o] LT';\n\n                    case 6:\n                        return '[W sobotę o] LT';\n\n                    default:\n                        return '[W] dddd [o] LT';\n                }\n            },\n            lastDay: '[Wczoraj o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[W zeszłą niedzielę o] LT';\n                    case 3:\n                        return '[W zeszłą środę o] LT';\n                    case 6:\n                        return '[W zeszłą sobotę o] LT';\n                    default:\n                        return '[W zeszły] dddd [o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: '%s temu',\n            s: 'kilka sekund',\n            ss: translate$8,\n            m: translate$8,\n            mm: translate$8,\n            h: translate$8,\n            hh: translate$8,\n            d: '1 dzień',\n            dd: '%d dni',\n            w: 'tydzień',\n            ww: translate$8,\n            M: 'miesiąc',\n            MM: translate$8,\n            y: 'rok',\n            yy: translate$8,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('pt-br', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays:\n            'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n                '_'\n            ),\n        weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n        weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'poucos segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        invalidDate: 'Data inválida',\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('pt', {\n        months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n            '_'\n        ),\n        monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n        weekdays:\n            'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n                '_'\n            ),\n        weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n        weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D [de] MMMM [de] YYYY',\n            LLL: 'D [de] MMMM [de] YYYY HH:mm',\n            LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hoje às] LT',\n            nextDay: '[Amanhã às] LT',\n            nextWeek: 'dddd [às] LT',\n            lastDay: '[Ontem às] LT',\n            lastWeek: function () {\n                return this.day() === 0 || this.day() === 6\n                    ? '[Último] dddd [às] LT' // Saturday + Sunday\n                    : '[Última] dddd [às] LT'; // Monday - Friday\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'em %s',\n            past: 'há %s',\n            s: 'segundos',\n            ss: '%d segundos',\n            m: 'um minuto',\n            mm: '%d minutos',\n            h: 'uma hora',\n            hh: '%d horas',\n            d: 'um dia',\n            dd: '%d dias',\n            w: 'uma semana',\n            ww: '%d semanas',\n            M: 'um mês',\n            MM: '%d meses',\n            y: 'um ano',\n            yy: '%d anos',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}º/,\n        ordinal: '%dº',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function relativeTimeWithPlural$2(number, withoutSuffix, key) {\n        var format = {\n                ss: 'secunde',\n                mm: 'minute',\n                hh: 'ore',\n                dd: 'zile',\n                ww: 'săptămâni',\n                MM: 'luni',\n                yy: 'ani',\n            },\n            separator = ' ';\n        if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n            separator = ' de ';\n        }\n        return number + separator + format[key];\n    }\n\n    hooks.defineLocale('ro', {\n        months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n            '_'\n        ),\n        monthsShort:\n            'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n        weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n        weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY H:mm',\n            LLLL: 'dddd, D MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[azi la] LT',\n            nextDay: '[mâine la] LT',\n            nextWeek: 'dddd [la] LT',\n            lastDay: '[ieri la] LT',\n            lastWeek: '[fosta] dddd [la] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'peste %s',\n            past: '%s în urmă',\n            s: 'câteva secunde',\n            ss: relativeTimeWithPlural$2,\n            m: 'un minut',\n            mm: relativeTimeWithPlural$2,\n            h: 'o oră',\n            hh: relativeTimeWithPlural$2,\n            d: 'o zi',\n            dd: relativeTimeWithPlural$2,\n            w: 'o săptămână',\n            ww: relativeTimeWithPlural$2,\n            M: 'o lună',\n            MM: relativeTimeWithPlural$2,\n            y: 'un an',\n            yy: relativeTimeWithPlural$2,\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function plural$4(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n              ? forms[1]\n              : forms[2];\n    }\n    function relativeTimeWithPlural$3(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n            mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n            hh: 'час_часа_часов',\n            dd: 'день_дня_дней',\n            ww: 'неделя_недели_недель',\n            MM: 'месяц_месяца_месяцев',\n            yy: 'год_года_лет',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'минута' : 'минуту';\n        } else {\n            return number + ' ' + plural$4(format[key], +number);\n        }\n    }\n    var monthsParse$b = [\n        /^янв/i,\n        /^фев/i,\n        /^мар/i,\n        /^апр/i,\n        /^ма[йя]/i,\n        /^июн/i,\n        /^июл/i,\n        /^авг/i,\n        /^сен/i,\n        /^окт/i,\n        /^ноя/i,\n        /^дек/i,\n    ];\n\n    // http://new.gramota.ru/spravka/rules/139-prop : § 103\n    // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n    // CLDR data:          http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n    hooks.defineLocale('ru', {\n        months: {\n            format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n                '_'\n            ),\n            standalone:\n                'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n                    '_'\n                ),\n        },\n        monthsShort: {\n            // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n            format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n                '_'\n            ),\n            standalone:\n                'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n                    '_'\n                ),\n        },\n        weekdays: {\n            standalone:\n                'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n                    '_'\n                ),\n            format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n                '_'\n            ),\n            isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n        },\n        weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n        monthsParse: monthsParse$b,\n        longMonthsParse: monthsParse$b,\n        shortMonthsParse: monthsParse$b,\n\n        // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n        monthsRegex:\n            /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // копия предыдущего\n        monthsShortRegex:\n            /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n        // полные названия с падежами\n        monthsStrictRegex:\n            /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n        // Выражение, которое соответствует только сокращённым формам\n        monthsShortStrictRegex:\n            /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY г.',\n            LLL: 'D MMMM YYYY г., H:mm',\n            LLLL: 'dddd, D MMMM YYYY г., H:mm',\n        },\n        calendar: {\n            sameDay: '[Сегодня, в] LT',\n            nextDay: '[Завтра, в] LT',\n            lastDay: '[Вчера, в] LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В следующее] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В следующий] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В следующую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            lastWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    switch (this.day()) {\n                        case 0:\n                            return '[В прошлое] dddd, [в] LT';\n                        case 1:\n                        case 2:\n                        case 4:\n                            return '[В прошлый] dddd, [в] LT';\n                        case 3:\n                        case 5:\n                        case 6:\n                            return '[В прошлую] dddd, [в] LT';\n                    }\n                } else {\n                    if (this.day() === 2) {\n                        return '[Во] dddd, [в] LT';\n                    } else {\n                        return '[В] dddd, [в] LT';\n                    }\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'через %s',\n            past: '%s назад',\n            s: 'несколько секунд',\n            ss: relativeTimeWithPlural$3,\n            m: relativeTimeWithPlural$3,\n            mm: relativeTimeWithPlural$3,\n            h: 'час',\n            hh: relativeTimeWithPlural$3,\n            d: 'день',\n            dd: relativeTimeWithPlural$3,\n            w: 'неделя',\n            ww: relativeTimeWithPlural$3,\n            M: 'месяц',\n            MM: relativeTimeWithPlural$3,\n            y: 'год',\n            yy: relativeTimeWithPlural$3,\n        },\n        meridiemParse: /ночи|утра|дня|вечера/i,\n        isPM: function (input) {\n            return /^(дня|вечера)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночи';\n            } else if (hour < 12) {\n                return 'утра';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечера';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                case 'w':\n                case 'W':\n                    return number + '-я';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var months$9 = [\n            'جنوري',\n            'فيبروري',\n            'مارچ',\n            'اپريل',\n            'مئي',\n            'جون',\n            'جولاءِ',\n            'آگسٽ',\n            'سيپٽمبر',\n            'آڪٽوبر',\n            'نومبر',\n            'ڊسمبر',\n        ],\n        days$1 = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n    hooks.defineLocale('sd', {\n        months: months$9,\n        monthsShort: months$9,\n        weekdays: days$1,\n        weekdaysShort: days$1,\n        weekdaysMin: days$1,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[اڄ] LT',\n            nextDay: '[سڀاڻي] LT',\n            nextWeek: 'dddd [اڳين هفتي تي] LT',\n            lastDay: '[ڪالهه] LT',\n            lastWeek: '[گزريل هفتي] dddd [تي] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s پوء',\n            past: '%s اڳ',\n            s: 'چند سيڪنڊ',\n            ss: '%d سيڪنڊ',\n            m: 'هڪ منٽ',\n            mm: '%d منٽ',\n            h: 'هڪ ڪلاڪ',\n            hh: '%d ڪلاڪ',\n            d: 'هڪ ڏينهن',\n            dd: '%d ڏينهن',\n            M: 'هڪ مهينو',\n            MM: '%d مهينا',\n            y: 'هڪ سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('se', {\n        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(\n            '_'\n        ),\n        monthsShort:\n            'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n        weekdays:\n            'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n                '_'\n            ),\n        weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n        weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'MMMM D. [b.] YYYY',\n            LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n            LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n        },\n        calendar: {\n            sameDay: '[otne ti] LT',\n            nextDay: '[ihttin ti] LT',\n            nextWeek: 'dddd [ti] LT',\n            lastDay: '[ikte ti] LT',\n            lastWeek: '[ovddit] dddd [ti] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s geažes',\n            past: 'maŋit %s',\n            s: 'moadde sekunddat',\n            ss: '%d sekunddat',\n            m: 'okta minuhta',\n            mm: '%d minuhtat',\n            h: 'okta diimmu',\n            hh: '%d diimmut',\n            d: 'okta beaivi',\n            dd: '%d beaivvit',\n            M: 'okta mánnu',\n            MM: '%d mánut',\n            y: 'okta jahki',\n            yy: '%d jagit',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    /*jshint -W100*/\n    hooks.defineLocale('si', {\n        months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n            '_'\n        ),\n        monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n            '_'\n        ),\n        weekdays:\n            'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n                '_'\n            ),\n        weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n        weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'a h:mm',\n            LTS: 'a h:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY MMMM D',\n            LLL: 'YYYY MMMM D, a h:mm',\n            LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n        },\n        calendar: {\n            sameDay: '[අද] LT[ට]',\n            nextDay: '[හෙට] LT[ට]',\n            nextWeek: 'dddd LT[ට]',\n            lastDay: '[ඊයේ] LT[ට]',\n            lastWeek: '[පසුගිය] dddd LT[ට]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%sකින්',\n            past: '%sකට පෙර',\n            s: 'තත්පර කිහිපය',\n            ss: 'තත්පර %d',\n            m: 'මිනිත්තුව',\n            mm: 'මිනිත්තු %d',\n            h: 'පැය',\n            hh: 'පැය %d',\n            d: 'දිනය',\n            dd: 'දින %d',\n            M: 'මාසය',\n            MM: 'මාස %d',\n            y: 'වසර',\n            yy: 'වසර %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n        ordinal: function (number) {\n            return number + ' වැනි';\n        },\n        meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n        isPM: function (input) {\n            return input === 'ප.ව.' || input === 'පස් වරු';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? 'ප.ව.' : 'පස් වරු';\n            } else {\n                return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n            }\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var months$a =\n            'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n                '_'\n            ),\n        monthsShort$7 = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n    function plural$5(n) {\n        return n > 1 && n < 5;\n    }\n    function translate$9(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's': // a few seconds / in a few seconds / a few seconds ago\n                return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n            case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural$5(number) ? 'sekundy' : 'sekúnd');\n                } else {\n                    return result + 'sekundami';\n                }\n            case 'm': // a minute / in a minute / a minute ago\n                return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n            case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural$5(number) ? 'minúty' : 'minút');\n                } else {\n                    return result + 'minútami';\n                }\n            case 'h': // an hour / in an hour / an hour ago\n                return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n            case 'hh': // 9 hours / in 9 hours / 9 hours ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural$5(number) ? 'hodiny' : 'hodín');\n                } else {\n                    return result + 'hodinami';\n                }\n            case 'd': // a day / in a day / a day ago\n                return withoutSuffix || isFuture ? 'deň' : 'dňom';\n            case 'dd': // 9 days / in 9 days / 9 days ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural$5(number) ? 'dni' : 'dní');\n                } else {\n                    return result + 'dňami';\n                }\n            case 'M': // a month / in a month / a month ago\n                return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n            case 'MM': // 9 months / in 9 months / 9 months ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural$5(number) ? 'mesiace' : 'mesiacov');\n                } else {\n                    return result + 'mesiacmi';\n                }\n            case 'y': // a year / in a year / a year ago\n                return withoutSuffix || isFuture ? 'rok' : 'rokom';\n            case 'yy': // 9 years / in 9 years / 9 years ago\n                if (withoutSuffix || isFuture) {\n                    return result + (plural$5(number) ? 'roky' : 'rokov');\n                } else {\n                    return result + 'rokmi';\n                }\n        }\n    }\n\n    hooks.defineLocale('sk', {\n        months: months$a,\n        monthsShort: monthsShort$7,\n        weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n        weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n        weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[dnes o] LT',\n            nextDay: '[zajtra o] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[v] dddd [o] LT';\n                    case 3:\n                        return '[v stredu o] LT';\n                    case 4:\n                        return '[vo štvrtok o] LT';\n                    case 5:\n                        return '[v piatok o] LT';\n                    case 6:\n                        return '[v sobotu o] LT';\n                }\n            },\n            lastDay: '[včera o] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[minulú nedeľu o] LT';\n                    case 1:\n                    case 2:\n                        return '[minulý] dddd [o] LT';\n                    case 3:\n                        return '[minulú stredu o] LT';\n                    case 4:\n                    case 5:\n                        return '[minulý] dddd [o] LT';\n                    case 6:\n                        return '[minulú sobotu o] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pred %s',\n            s: translate$9,\n            ss: translate$9,\n            m: translate$9,\n            mm: translate$9,\n            h: translate$9,\n            hh: translate$9,\n            d: translate$9,\n            dd: translate$9,\n            M: translate$9,\n            MM: translate$9,\n            y: translate$9,\n            yy: translate$9,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function processRelativeTime$9(number, withoutSuffix, key, isFuture) {\n        var result = number + ' ';\n        switch (key) {\n            case 's':\n                return withoutSuffix || isFuture\n                    ? 'nekaj sekund'\n                    : 'nekaj sekundami';\n            case 'ss':\n                if (number === 1) {\n                    result += withoutSuffix ? 'sekundo' : 'sekundi';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n                } else {\n                    result += 'sekund';\n                }\n                return result;\n            case 'm':\n                return withoutSuffix ? 'ena minuta' : 'eno minuto';\n            case 'mm':\n                if (number === 1) {\n                    result += withoutSuffix ? 'minuta' : 'minuto';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n                }\n                return result;\n            case 'h':\n                return withoutSuffix ? 'ena ura' : 'eno uro';\n            case 'hh':\n                if (number === 1) {\n                    result += withoutSuffix ? 'ura' : 'uro';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'uri' : 'urama';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'ure' : 'urami';\n                } else {\n                    result += withoutSuffix || isFuture ? 'ur' : 'urami';\n                }\n                return result;\n            case 'd':\n                return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n            case 'dd':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n                } else {\n                    result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n                }\n                return result;\n            case 'M':\n                return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n            case 'MM':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n                } else {\n                    result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n                }\n                return result;\n            case 'y':\n                return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n            case 'yy':\n                if (number === 1) {\n                    result += withoutSuffix || isFuture ? 'leto' : 'letom';\n                } else if (number === 2) {\n                    result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n                } else if (number < 5) {\n                    result += withoutSuffix || isFuture ? 'leta' : 'leti';\n                } else {\n                    result += withoutSuffix || isFuture ? 'let' : 'leti';\n                }\n                return result;\n        }\n    }\n\n    hooks.defineLocale('sl', {\n        months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n        weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n        weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD. MM. YYYY',\n            LL: 'D. MMMM YYYY',\n            LLL: 'D. MMMM YYYY H:mm',\n            LLLL: 'dddd, D. MMMM YYYY H:mm',\n        },\n        calendar: {\n            sameDay: '[danes ob] LT',\n            nextDay: '[jutri ob] LT',\n\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[v] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[v] [sredo] [ob] LT';\n                    case 6:\n                        return '[v] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[v] dddd [ob] LT';\n                }\n            },\n            lastDay: '[včeraj ob] LT',\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[prejšnjo] [nedeljo] [ob] LT';\n                    case 3:\n                        return '[prejšnjo] [sredo] [ob] LT';\n                    case 6:\n                        return '[prejšnjo] [soboto] [ob] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[prejšnji] dddd [ob] LT';\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'čez %s',\n            past: 'pred %s',\n            s: processRelativeTime$9,\n            ss: processRelativeTime$9,\n            m: processRelativeTime$9,\n            mm: processRelativeTime$9,\n            h: processRelativeTime$9,\n            hh: processRelativeTime$9,\n            d: processRelativeTime$9,\n            dd: processRelativeTime$9,\n            M: processRelativeTime$9,\n            MM: processRelativeTime$9,\n            y: processRelativeTime$9,\n            yy: processRelativeTime$9,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('sq', {\n        months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n        weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n            '_'\n        ),\n        weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n        weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /PD|MD/,\n        isPM: function (input) {\n            return input.charAt(0) === 'M';\n        },\n        meridiem: function (hours, minutes, isLower) {\n            return hours < 12 ? 'PD' : 'MD';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Sot në] LT',\n            nextDay: '[Nesër në] LT',\n            nextWeek: 'dddd [në] LT',\n            lastDay: '[Dje në] LT',\n            lastWeek: 'dddd [e kaluar në] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'në %s',\n            past: '%s më parë',\n            s: 'disa sekonda',\n            ss: '%d sekonda',\n            m: 'një minutë',\n            mm: '%d minuta',\n            h: 'një orë',\n            hh: '%d orë',\n            d: 'një ditë',\n            dd: '%d ditë',\n            M: 'një muaj',\n            MM: '%d muaj',\n            y: 'një vit',\n            yy: '%d vite',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var translator$1 = {\n        words: {\n            //Different grammatical cases\n            ss: ['секунда', 'секунде', 'секунди'],\n            m: ['један минут', 'једног минута'],\n            mm: ['минут', 'минута', 'минута'],\n            h: ['један сат', 'једног сата'],\n            hh: ['сат', 'сата', 'сати'],\n            d: ['један дан', 'једног дана'],\n            dd: ['дан', 'дана', 'дана'],\n            M: ['један месец', 'једног месеца'],\n            MM: ['месец', 'месеца', 'месеци'],\n            y: ['једну годину', 'једне године'],\n            yy: ['годину', 'године', 'година'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            if (\n                number % 10 >= 1 &&\n                number % 10 <= 4 &&\n                (number % 100 < 10 || number % 100 >= 20)\n            ) {\n                return number % 10 === 1 ? wordKey[0] : wordKey[1];\n            }\n            return wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key, isFuture) {\n            var wordKey = translator$1.words[key],\n                word;\n\n            if (key.length === 1) {\n                // Nominativ\n                if (key === 'y' && withoutSuffix) return 'једна година';\n                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n            }\n\n            word = translator$1.correctGrammaticalCase(number, wordKey);\n            // Nominativ\n            if (key === 'yy' && withoutSuffix && word === 'годину') {\n                return number + ' година';\n            }\n\n            return number + ' ' + word;\n        },\n    };\n\n    hooks.defineLocale('sr-cyrl', {\n        months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n            '_'\n        ),\n        monthsShort:\n            'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n        weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n        weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[данас у] LT',\n            nextDay: '[сутра у] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[у] [недељу] [у] LT';\n                    case 3:\n                        return '[у] [среду] [у] LT';\n                    case 6:\n                        return '[у] [суботу] [у] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[у] dddd [у] LT';\n                }\n            },\n            lastDay: '[јуче у] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[прошле] [недеље] [у] LT',\n                    '[прошлог] [понедељка] [у] LT',\n                    '[прошлог] [уторка] [у] LT',\n                    '[прошле] [среде] [у] LT',\n                    '[прошлог] [четвртка] [у] LT',\n                    '[прошлог] [петка] [у] LT',\n                    '[прошле] [суботе] [у] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: 'пре %s',\n            s: 'неколико секунди',\n            ss: translator$1.translate,\n            m: translator$1.translate,\n            mm: translator$1.translate,\n            h: translator$1.translate,\n            hh: translator$1.translate,\n            d: translator$1.translate,\n            dd: translator$1.translate,\n            M: translator$1.translate,\n            MM: translator$1.translate,\n            y: translator$1.translate,\n            yy: translator$1.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var translator$2 = {\n        words: {\n            //Different grammatical cases\n            ss: ['sekunda', 'sekunde', 'sekundi'],\n            m: ['jedan minut', 'jednog minuta'],\n            mm: ['minut', 'minuta', 'minuta'],\n            h: ['jedan sat', 'jednog sata'],\n            hh: ['sat', 'sata', 'sati'],\n            d: ['jedan dan', 'jednog dana'],\n            dd: ['dan', 'dana', 'dana'],\n            M: ['jedan mesec', 'jednog meseca'],\n            MM: ['mesec', 'meseca', 'meseci'],\n            y: ['jednu godinu', 'jedne godine'],\n            yy: ['godinu', 'godine', 'godina'],\n        },\n        correctGrammaticalCase: function (number, wordKey) {\n            if (\n                number % 10 >= 1 &&\n                number % 10 <= 4 &&\n                (number % 100 < 10 || number % 100 >= 20)\n            ) {\n                return number % 10 === 1 ? wordKey[0] : wordKey[1];\n            }\n            return wordKey[2];\n        },\n        translate: function (number, withoutSuffix, key, isFuture) {\n            var wordKey = translator$2.words[key],\n                word;\n\n            if (key.length === 1) {\n                // Nominativ\n                if (key === 'y' && withoutSuffix) return 'jedna godina';\n                return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n            }\n\n            word = translator$2.correctGrammaticalCase(number, wordKey);\n            // Nominativ\n            if (key === 'yy' && withoutSuffix && word === 'godinu') {\n                return number + ' godina';\n            }\n\n            return number + ' ' + word;\n        },\n    };\n\n    hooks.defineLocale('sr', {\n        months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n            '_'\n        ),\n        monthsShort:\n            'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n        monthsParseExact: true,\n        weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n            '_'\n        ),\n        weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n        weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'D. M. YYYY.',\n            LL: 'D. MMMM YYYY.',\n            LLL: 'D. MMMM YYYY. H:mm',\n            LLLL: 'dddd, D. MMMM YYYY. H:mm',\n        },\n        calendar: {\n            sameDay: '[danas u] LT',\n            nextDay: '[sutra u] LT',\n            nextWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                        return '[u] [nedelju] [u] LT';\n                    case 3:\n                        return '[u] [sredu] [u] LT';\n                    case 6:\n                        return '[u] [subotu] [u] LT';\n                    case 1:\n                    case 2:\n                    case 4:\n                    case 5:\n                        return '[u] dddd [u] LT';\n                }\n            },\n            lastDay: '[juče u] LT',\n            lastWeek: function () {\n                var lastWeekDays = [\n                    '[prošle] [nedelje] [u] LT',\n                    '[prošlog] [ponedeljka] [u] LT',\n                    '[prošlog] [utorka] [u] LT',\n                    '[prošle] [srede] [u] LT',\n                    '[prošlog] [četvrtka] [u] LT',\n                    '[prošlog] [petka] [u] LT',\n                    '[prošle] [subote] [u] LT',\n                ];\n                return lastWeekDays[this.day()];\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'za %s',\n            past: 'pre %s',\n            s: 'nekoliko sekundi',\n            ss: translator$2.translate,\n            m: translator$2.translate,\n            mm: translator$2.translate,\n            h: translator$2.translate,\n            hh: translator$2.translate,\n            d: translator$2.translate,\n            dd: translator$2.translate,\n            M: translator$2.translate,\n            MM: translator$2.translate,\n            y: translator$2.translate,\n            yy: translator$2.translate,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('ss', {\n        months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n            '_'\n        ),\n        monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n        weekdays:\n            'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n                '_'\n            ),\n        weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n        weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Namuhla nga] LT',\n            nextDay: '[Kusasa nga] LT',\n            nextWeek: 'dddd [nga] LT',\n            lastDay: '[Itolo nga] LT',\n            lastWeek: 'dddd [leliphelile] [nga] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'nga %s',\n            past: 'wenteka nga %s',\n            s: 'emizuzwana lomcane',\n            ss: '%d mzuzwana',\n            m: 'umzuzu',\n            mm: '%d emizuzu',\n            h: 'lihora',\n            hh: '%d emahora',\n            d: 'lilanga',\n            dd: '%d emalanga',\n            M: 'inyanga',\n            MM: '%d tinyanga',\n            y: 'umnyaka',\n            yy: '%d iminyaka',\n        },\n        meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 11) {\n                return 'ekuseni';\n            } else if (hours < 15) {\n                return 'emini';\n            } else if (hours < 19) {\n                return 'entsambama';\n            } else {\n                return 'ebusuku';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'ekuseni') {\n                return hour;\n            } else if (meridiem === 'emini') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n                if (hour === 0) {\n                    return 0;\n                }\n                return hour + 12;\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: '%d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('sv', {\n        months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n            '_'\n        ),\n        monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n        weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n        weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n        weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY [kl.] HH:mm',\n            LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Idag] LT',\n            nextDay: '[Imorgon] LT',\n            lastDay: '[Igår] LT',\n            nextWeek: '[På] dddd LT',\n            lastWeek: '[I] dddd[s] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'om %s',\n            past: 'för %s sedan',\n            s: 'några sekunder',\n            ss: '%d sekunder',\n            m: 'en minut',\n            mm: '%d minuter',\n            h: 'en timme',\n            hh: '%d timmar',\n            d: 'en dag',\n            dd: '%d dagar',\n            M: 'en månad',\n            MM: '%d månader',\n            y: 'ett år',\n            yy: '%d år',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? ':e'\n                        : b === 1\n                          ? ':a'\n                          : b === 2\n                            ? ':a'\n                            : b === 3\n                              ? ':e'\n                              : ':e';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('sw', {\n        months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n        weekdays:\n            'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n                '_'\n            ),\n        weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n        weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'hh:mm A',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[leo saa] LT',\n            nextDay: '[kesho saa] LT',\n            nextWeek: '[wiki ijayo] dddd [saat] LT',\n            lastDay: '[jana] LT',\n            lastWeek: '[wiki iliyopita] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s baadaye',\n            past: 'tokea %s',\n            s: 'hivi punde',\n            ss: 'sekunde %d',\n            m: 'dakika moja',\n            mm: 'dakika %d',\n            h: 'saa limoja',\n            hh: 'masaa %d',\n            d: 'siku moja',\n            dd: 'siku %d',\n            M: 'mwezi mmoja',\n            MM: 'miezi %d',\n            y: 'mwaka mmoja',\n            yy: 'miaka %d',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var symbolMap$h = {\n            1: '௧',\n            2: '௨',\n            3: '௩',\n            4: '௪',\n            5: '௫',\n            6: '௬',\n            7: '௭',\n            8: '௮',\n            9: '௯',\n            0: '௦',\n        },\n        numberMap$g = {\n            '௧': '1',\n            '௨': '2',\n            '௩': '3',\n            '௪': '4',\n            '௫': '5',\n            '௬': '6',\n            '௭': '7',\n            '௮': '8',\n            '௯': '9',\n            '௦': '0',\n        };\n\n    hooks.defineLocale('ta', {\n        months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n            '_'\n        ),\n        monthsShort:\n            'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n                '_'\n            ),\n        weekdays:\n            'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n                '_'\n            ),\n        weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n            '_'\n        ),\n        weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, HH:mm',\n            LLLL: 'dddd, D MMMM YYYY, HH:mm',\n        },\n        calendar: {\n            sameDay: '[இன்று] LT',\n            nextDay: '[நாளை] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[நேற்று] LT',\n            lastWeek: '[கடந்த வாரம்] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s இல்',\n            past: '%s முன்',\n            s: 'ஒரு சில விநாடிகள்',\n            ss: '%d விநாடிகள்',\n            m: 'ஒரு நிமிடம்',\n            mm: '%d நிமிடங்கள்',\n            h: 'ஒரு மணி நேரம்',\n            hh: '%d மணி நேரம்',\n            d: 'ஒரு நாள்',\n            dd: '%d நாட்கள்',\n            M: 'ஒரு மாதம்',\n            MM: '%d மாதங்கள்',\n            y: 'ஒரு வருடம்',\n            yy: '%d ஆண்டுகள்',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n        ordinal: function (number) {\n            return number + 'வது';\n        },\n        preparse: function (string) {\n            return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n                return numberMap$g[match];\n            });\n        },\n        postformat: function (string) {\n            return string.replace(/\\d/g, function (match) {\n                return symbolMap$h[match];\n            });\n        },\n        // refer http://ta.wikipedia.org/s/1er1\n        meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 2) {\n                return ' யாமம்';\n            } else if (hour < 6) {\n                return ' வைகறை'; // வைகறை\n            } else if (hour < 10) {\n                return ' காலை'; // காலை\n            } else if (hour < 14) {\n                return ' நண்பகல்'; // நண்பகல்\n            } else if (hour < 18) {\n                return ' எற்பாடு'; // எற்பாடு\n            } else if (hour < 22) {\n                return ' மாலை'; // மாலை\n            } else {\n                return ' யாமம்';\n            }\n        },\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'யாமம்') {\n                return hour < 2 ? hour : hour + 12;\n            } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n                return hour;\n            } else if (meridiem === 'நண்பகல்') {\n                return hour >= 10 ? hour : hour + 12;\n            } else {\n                return hour + 12;\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('te', {\n        months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n            '_'\n        ),\n        monthsShort:\n            'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n                '_'\n            ),\n        weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n        weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n        longDateFormat: {\n            LT: 'A h:mm',\n            LTS: 'A h:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY, A h:mm',\n            LLLL: 'dddd, D MMMM YYYY, A h:mm',\n        },\n        calendar: {\n            sameDay: '[నేడు] LT',\n            nextDay: '[రేపు] LT',\n            nextWeek: 'dddd, LT',\n            lastDay: '[నిన్న] LT',\n            lastWeek: '[గత] dddd, LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s లో',\n            past: '%s క్రితం',\n            s: 'కొన్ని క్షణాలు',\n            ss: '%d సెకన్లు',\n            m: 'ఒక నిమిషం',\n            mm: '%d నిమిషాలు',\n            h: 'ఒక గంట',\n            hh: '%d గంటలు',\n            d: 'ఒక రోజు',\n            dd: '%d రోజులు',\n            M: 'ఒక నెల',\n            MM: '%d నెలలు',\n            y: 'ఒక సంవత్సరం',\n            yy: '%d సంవత్సరాలు',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n        ordinal: '%dవ',\n        meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'రాత్రి') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'ఉదయం') {\n                return hour;\n            } else if (meridiem === 'మధ్యాహ్నం') {\n                return hour >= 10 ? hour : hour + 12;\n            } else if (meridiem === 'సాయంత్రం') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'రాత్రి';\n            } else if (hour < 10) {\n                return 'ఉదయం';\n            } else if (hour < 17) {\n                return 'మధ్యాహ్నం';\n            } else if (hour < 20) {\n                return 'సాయంత్రం';\n            } else {\n                return 'రాత్రి';\n            }\n        },\n        week: {\n            dow: 0, // Sunday is the first day of the week.\n            doy: 6, // The week that contains Jan 6th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('tet', {\n        months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n        weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n        weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n        weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Ohin iha] LT',\n            nextDay: '[Aban iha] LT',\n            nextWeek: 'dddd [iha] LT',\n            lastDay: '[Horiseik iha] LT',\n            lastWeek: 'dddd [semana kotuk] [iha] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'iha %s',\n            past: '%s liuba',\n            s: 'segundu balun',\n            ss: 'segundu %d',\n            m: 'minutu ida',\n            mm: 'minutu %d',\n            h: 'oras ida',\n            hh: 'oras %d',\n            d: 'loron ida',\n            dd: 'loron %d',\n            M: 'fulan ida',\n            MM: 'fulan %d',\n            y: 'tinan ida',\n            yy: 'tinan %d',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var suffixes$3 = {\n        0: '-ум',\n        1: '-ум',\n        2: '-юм',\n        3: '-юм',\n        4: '-ум',\n        5: '-ум',\n        6: '-ум',\n        7: '-ум',\n        8: '-ум',\n        9: '-ум',\n        10: '-ум',\n        12: '-ум',\n        13: '-ум',\n        20: '-ум',\n        30: '-юм',\n        40: '-ум',\n        50: '-ум',\n        60: '-ум',\n        70: '-ум',\n        80: '-ум',\n        90: '-ум',\n        100: '-ум',\n    };\n\n    hooks.defineLocale('tg', {\n        months: {\n            format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n                '_'\n            ),\n            standalone:\n                'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n                    '_'\n                ),\n        },\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n            '_'\n        ),\n        weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n        weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Имрӯз соати] LT',\n            nextDay: '[Фардо соати] LT',\n            lastDay: '[Дирӯз соати] LT',\n            nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n            lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'баъди %s',\n            past: '%s пеш',\n            s: 'якчанд сония',\n            m: 'як дақиқа',\n            mm: '%d дақиқа',\n            h: 'як соат',\n            hh: '%d соат',\n            d: 'як рӯз',\n            dd: '%d рӯз',\n            M: 'як моҳ',\n            MM: '%d моҳ',\n            y: 'як сол',\n            yy: '%d сол',\n        },\n        meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === 'шаб') {\n                return hour < 4 ? hour : hour + 12;\n            } else if (meridiem === 'субҳ') {\n                return hour;\n            } else if (meridiem === 'рӯз') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === 'бегоҳ') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'шаб';\n            } else if (hour < 11) {\n                return 'субҳ';\n            } else if (hour < 16) {\n                return 'рӯз';\n            } else if (hour < 19) {\n                return 'бегоҳ';\n            } else {\n                return 'шаб';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n        ordinal: function (number) {\n            var a = number % 10,\n                b = number >= 100 ? 100 : null;\n            return number + (suffixes$3[number] || suffixes$3[a] || suffixes$3[b]);\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('th', {\n        months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n            '_'\n        ),\n        monthsShort:\n            'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n        weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n        weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'H:mm',\n            LTS: 'H:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY เวลา H:mm',\n            LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n        },\n        meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n        isPM: function (input) {\n            return input === 'หลังเที่ยง';\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'ก่อนเที่ยง';\n            } else {\n                return 'หลังเที่ยง';\n            }\n        },\n        calendar: {\n            sameDay: '[วันนี้ เวลา] LT',\n            nextDay: '[พรุ่งนี้ เวลา] LT',\n            nextWeek: 'dddd[หน้า เวลา] LT',\n            lastDay: '[เมื่อวานนี้ เวลา] LT',\n            lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'อีก %s',\n            past: '%sที่แล้ว',\n            s: 'ไม่กี่วินาที',\n            ss: '%d วินาที',\n            m: '1 นาที',\n            mm: '%d นาที',\n            h: '1 ชั่วโมง',\n            hh: '%d ชั่วโมง',\n            d: '1 วัน',\n            dd: '%d วัน',\n            w: '1 สัปดาห์',\n            ww: '%d สัปดาห์',\n            M: '1 เดือน',\n            MM: '%d เดือน',\n            y: '1 ปี',\n            yy: '%d ปี',\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var suffixes$4 = {\n        1: \"'inji\",\n        5: \"'inji\",\n        8: \"'inji\",\n        70: \"'inji\",\n        80: \"'inji\",\n        2: \"'nji\",\n        7: \"'nji\",\n        20: \"'nji\",\n        50: \"'nji\",\n        3: \"'ünji\",\n        4: \"'ünji\",\n        100: \"'ünji\",\n        6: \"'njy\",\n        9: \"'unjy\",\n        10: \"'unjy\",\n        30: \"'unjy\",\n        60: \"'ynjy\",\n        90: \"'ynjy\",\n    };\n\n    hooks.defineLocale('tk', {\n        months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n        weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n            '_'\n        ),\n        weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n        weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün sagat] LT',\n            nextDay: '[ertir sagat] LT',\n            nextWeek: '[indiki] dddd [sagat] LT',\n            lastDay: '[düýn] LT',\n            lastWeek: '[geçen] dddd [sagat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s soň',\n            past: '%s öň',\n            s: 'birnäçe sekunt',\n            m: 'bir minut',\n            mm: '%d minut',\n            h: 'bir sagat',\n            hh: '%d sagat',\n            d: 'bir gün',\n            dd: '%d gün',\n            M: 'bir aý',\n            MM: '%d aý',\n            y: 'bir ýyl',\n            yy: '%d ýyl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'unjy\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes$4[a] || suffixes$4[b] || suffixes$4[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('tl-ph', {\n        months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n            '_'\n        ),\n        monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n        weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n            '_'\n        ),\n        weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n        weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'MM/D/YYYY',\n            LL: 'MMMM D, YYYY',\n            LLL: 'MMMM D, YYYY HH:mm',\n            LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: 'LT [ngayong araw]',\n            nextDay: '[Bukas ng] LT',\n            nextWeek: 'LT [sa susunod na] dddd',\n            lastDay: 'LT [kahapon]',\n            lastWeek: 'LT [noong nakaraang] dddd',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'sa loob ng %s',\n            past: '%s ang nakalipas',\n            s: 'ilang segundo',\n            ss: '%d segundo',\n            m: 'isang minuto',\n            mm: '%d minuto',\n            h: 'isang oras',\n            hh: '%d oras',\n            d: 'isang araw',\n            dd: '%d araw',\n            M: 'isang buwan',\n            MM: '%d buwan',\n            y: 'isang taon',\n            yy: '%d taon',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n    function translateFuture(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'leS'\n                : output.indexOf('jar') !== -1\n                  ? time.slice(0, -3) + 'waQ'\n                  : output.indexOf('DIS') !== -1\n                    ? time.slice(0, -3) + 'nem'\n                    : time + ' pIq';\n        return time;\n    }\n\n    function translatePast(output) {\n        var time = output;\n        time =\n            output.indexOf('jaj') !== -1\n                ? time.slice(0, -3) + 'Hu’'\n                : output.indexOf('jar') !== -1\n                  ? time.slice(0, -3) + 'wen'\n                  : output.indexOf('DIS') !== -1\n                    ? time.slice(0, -3) + 'ben'\n                    : time + ' ret';\n        return time;\n    }\n\n    function translate$a(number, withoutSuffix, string, isFuture) {\n        var numberNoun = numberAsNoun(number);\n        switch (string) {\n            case 'ss':\n                return numberNoun + ' lup';\n            case 'mm':\n                return numberNoun + ' tup';\n            case 'hh':\n                return numberNoun + ' rep';\n            case 'dd':\n                return numberNoun + ' jaj';\n            case 'MM':\n                return numberNoun + ' jar';\n            case 'yy':\n                return numberNoun + ' DIS';\n        }\n    }\n\n    function numberAsNoun(number) {\n        var hundred = Math.floor((number % 1000) / 100),\n            ten = Math.floor((number % 100) / 10),\n            one = number % 10,\n            word = '';\n        if (hundred > 0) {\n            word += numbersNouns[hundred] + 'vatlh';\n        }\n        if (ten > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n        }\n        if (one > 0) {\n            word += (word !== '' ? ' ' : '') + numbersNouns[one];\n        }\n        return word === '' ? 'pagh' : word;\n    }\n\n    hooks.defineLocale('tlh', {\n        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(\n            '_'\n        ),\n        monthsShort:\n            '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(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n            '_'\n        ),\n        weekdaysShort:\n            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        weekdaysMin:\n            'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[DaHjaj] LT',\n            nextDay: '[wa’leS] LT',\n            nextWeek: 'LLL',\n            lastDay: '[wa’Hu’] LT',\n            lastWeek: 'LLL',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: translateFuture,\n            past: translatePast,\n            s: 'puS lup',\n            ss: translate$a,\n            m: 'wa’ tup',\n            mm: translate$a,\n            h: 'wa’ rep',\n            hh: translate$a,\n            d: 'wa’ jaj',\n            dd: translate$a,\n            M: 'wa’ jar',\n            MM: translate$a,\n            y: 'wa’ DIS',\n            yy: translate$a,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var suffixes$5 = {\n        1: \"'inci\",\n        5: \"'inci\",\n        8: \"'inci\",\n        70: \"'inci\",\n        80: \"'inci\",\n        2: \"'nci\",\n        7: \"'nci\",\n        20: \"'nci\",\n        50: \"'nci\",\n        3: \"'üncü\",\n        4: \"'üncü\",\n        100: \"'üncü\",\n        6: \"'ncı\",\n        9: \"'uncu\",\n        10: \"'uncu\",\n        30: \"'uncu\",\n        60: \"'ıncı\",\n        90: \"'ıncı\",\n    };\n\n    hooks.defineLocale('tr', {\n        months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n            '_'\n        ),\n        monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n        weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n            '_'\n        ),\n        weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n        weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'öö' : 'ÖÖ';\n            } else {\n                return isLower ? 'ös' : 'ÖS';\n            }\n        },\n        meridiemParse: /öö|ÖÖ|ös|ÖS/,\n        isPM: function (input) {\n            return input === 'ös' || input === 'ÖS';\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[bugün saat] LT',\n            nextDay: '[yarın saat] LT',\n            nextWeek: '[gelecek] dddd [saat] LT',\n            lastDay: '[dün] LT',\n            lastWeek: '[geçen] dddd [saat] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s sonra',\n            past: '%s önce',\n            s: 'birkaç saniye',\n            ss: '%d saniye',\n            m: 'bir dakika',\n            mm: '%d dakika',\n            h: 'bir saat',\n            hh: '%d saat',\n            d: 'bir gün',\n            dd: '%d gün',\n            w: 'bir hafta',\n            ww: '%d hafta',\n            M: 'bir ay',\n            MM: '%d ay',\n            y: 'bir yıl',\n            yy: '%d yıl',\n        },\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'Do':\n                case 'DD':\n                    return number;\n                default:\n                    if (number === 0) {\n                        // special case for zero\n                        return number + \"'ıncı\";\n                    }\n                    var a = number % 10,\n                        b = (number % 100) - a,\n                        c = number >= 100 ? 100 : null;\n                    return number + (suffixes$5[a] || suffixes$5[b] || suffixes$5[c]);\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n    // This is currently too difficult (maybe even impossible) to add.\n    hooks.defineLocale('tzl', {\n        months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n            '_'\n        ),\n        monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n        weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n        weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n        weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n        longDateFormat: {\n            LT: 'HH.mm',\n            LTS: 'HH.mm.ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D. MMMM [dallas] YYYY',\n            LLL: 'D. MMMM [dallas] YYYY HH.mm',\n            LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n        },\n        meridiemParse: /d\\'o|d\\'a/i,\n        isPM: function (input) {\n            return \"d'o\" === input.toLowerCase();\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours > 11) {\n                return isLower ? \"d'o\" : \"D'O\";\n            } else {\n                return isLower ? \"d'a\" : \"D'A\";\n            }\n        },\n        calendar: {\n            sameDay: '[oxhi à] LT',\n            nextDay: '[demà à] LT',\n            nextWeek: 'dddd [à] LT',\n            lastDay: '[ieiri à] LT',\n            lastWeek: '[sür el] dddd [lasteu à] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'osprei %s',\n            past: 'ja%s',\n            s: processRelativeTime$a,\n            ss: processRelativeTime$a,\n            m: processRelativeTime$a,\n            mm: processRelativeTime$a,\n            h: processRelativeTime$a,\n            hh: processRelativeTime$a,\n            d: processRelativeTime$a,\n            dd: processRelativeTime$a,\n            M: processRelativeTime$a,\n            MM: processRelativeTime$a,\n            y: processRelativeTime$a,\n            yy: processRelativeTime$a,\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n        ordinal: '%d.',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    function processRelativeTime$a(number, withoutSuffix, key, isFuture) {\n        var format = {\n            s: ['viensas secunds', \"'iensas secunds\"],\n            ss: [number + ' secunds', '' + number + ' secunds'],\n            m: [\"'n míut\", \"'iens míut\"],\n            mm: [number + ' míuts', '' + number + ' míuts'],\n            h: [\"'n þora\", \"'iensa þora\"],\n            hh: [number + ' þoras', '' + number + ' þoras'],\n            d: [\"'n ziua\", \"'iensa ziua\"],\n            dd: [number + ' ziuas', '' + number + ' ziuas'],\n            M: [\"'n mes\", \"'iens mes\"],\n            MM: [number + ' mesen', '' + number + ' mesen'],\n            y: [\"'n ar\", \"'iens ar\"],\n            yy: [number + ' ars', '' + number + ' ars'],\n        };\n        return isFuture\n            ? format[key][0]\n            : withoutSuffix\n              ? format[key][0]\n              : format[key][1];\n    }\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('tzm-latn', {\n        months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n            '_'\n        ),\n        monthsShort:\n            'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n                '_'\n            ),\n        weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[asdkh g] LT',\n            nextDay: '[aska g] LT',\n            nextWeek: 'dddd [g] LT',\n            lastDay: '[assant g] LT',\n            lastWeek: 'dddd [g] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'dadkh s yan %s',\n            past: 'yan %s',\n            s: 'imik',\n            ss: '%d imik',\n            m: 'minuḍ',\n            mm: '%d minuḍ',\n            h: 'saɛa',\n            hh: '%d tassaɛin',\n            d: 'ass',\n            dd: '%d ossan',\n            M: 'ayowr',\n            MM: '%d iyyirn',\n            y: 'asgas',\n            yy: '%d isgasn',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('tzm', {\n        months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n            '_'\n        ),\n        monthsShort:\n            'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n                '_'\n            ),\n        weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n            nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n            nextWeek: 'dddd [ⴴ] LT',\n            lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n            lastWeek: 'dddd [ⴴ] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n            past: 'ⵢⴰⵏ %s',\n            s: 'ⵉⵎⵉⴽ',\n            ss: '%d ⵉⵎⵉⴽ',\n            m: 'ⵎⵉⵏⵓⴺ',\n            mm: '%d ⵎⵉⵏⵓⴺ',\n            h: 'ⵙⴰⵄⴰ',\n            hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n            d: 'ⴰⵙⵙ',\n            dd: '%d oⵙⵙⴰⵏ',\n            M: 'ⴰⵢoⵓⵔ',\n            MM: '%d ⵉⵢⵢⵉⵔⵏ',\n            y: 'ⴰⵙⴳⴰⵙ',\n            yy: '%d ⵉⵙⴳⴰⵙⵏ',\n        },\n        week: {\n            dow: 6, // Saturday is the first day of the week.\n            doy: 12, // The week that contains Jan 12th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('ug-cn', {\n        months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n            '_'\n        ),\n        monthsShort:\n            'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n                '_'\n            ),\n        weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n            '_'\n        ),\n        weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY-MM-DD',\n            LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n            LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n            LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n        },\n        meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (\n                meridiem === 'يېرىم كېچە' ||\n                meridiem === 'سەھەر' ||\n                meridiem === 'چۈشتىن بۇرۇن'\n            ) {\n                return hour;\n            } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n                return hour + 12;\n            } else {\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return 'يېرىم كېچە';\n            } else if (hm < 900) {\n                return 'سەھەر';\n            } else if (hm < 1130) {\n                return 'چۈشتىن بۇرۇن';\n            } else if (hm < 1230) {\n                return 'چۈش';\n            } else if (hm < 1800) {\n                return 'چۈشتىن كېيىن';\n            } else {\n                return 'كەچ';\n            }\n        },\n        calendar: {\n            sameDay: '[بۈگۈن سائەت] LT',\n            nextDay: '[ئەتە سائەت] LT',\n            nextWeek: '[كېلەركى] dddd [سائەت] LT',\n            lastDay: '[تۆنۈگۈن] LT',\n            lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s كېيىن',\n            past: '%s بۇرۇن',\n            s: 'نەچچە سېكونت',\n            ss: '%d سېكونت',\n            m: 'بىر مىنۇت',\n            mm: '%d مىنۇت',\n            h: 'بىر سائەت',\n            hh: '%d سائەت',\n            d: 'بىر كۈن',\n            dd: '%d كۈن',\n            M: 'بىر ئاي',\n            MM: '%d ئاي',\n            y: 'بىر يىل',\n            yy: '%d يىل',\n        },\n\n        dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '-كۈنى';\n                case 'w':\n                case 'W':\n                    return number + '-ھەپتە';\n                default:\n                    return number;\n            }\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 1st is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    function plural$6(word, num) {\n        var forms = word.split('_');\n        return num % 10 === 1 && num % 100 !== 11\n            ? forms[0]\n            : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n              ? forms[1]\n              : forms[2];\n    }\n    function relativeTimeWithPlural$4(number, withoutSuffix, key) {\n        var format = {\n            ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n            mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n            hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n            dd: 'день_дні_днів',\n            MM: 'місяць_місяці_місяців',\n            yy: 'рік_роки_років',\n        };\n        if (key === 'm') {\n            return withoutSuffix ? 'хвилина' : 'хвилину';\n        } else if (key === 'h') {\n            return withoutSuffix ? 'година' : 'годину';\n        } else {\n            return number + ' ' + plural$6(format[key], +number);\n        }\n    }\n    function weekdaysCaseReplace(m, format) {\n        var weekdays = {\n                nominative:\n                    'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n                        '_'\n                    ),\n                accusative:\n                    'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n                        '_'\n                    ),\n                genitive:\n                    'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n                        '_'\n                    ),\n            },\n            nounCase;\n\n        if (m === true) {\n            return weekdays['nominative']\n                .slice(1, 7)\n                .concat(weekdays['nominative'].slice(0, 1));\n        }\n        if (!m) {\n            return weekdays['nominative'];\n        }\n\n        nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n            ? 'accusative'\n            : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n              ? 'genitive'\n              : 'nominative';\n        return weekdays[nounCase][m.day()];\n    }\n    function processHoursFunction(str) {\n        return function () {\n            return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n        };\n    }\n\n    hooks.defineLocale('uk', {\n        months: {\n            format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n                '_'\n            ),\n            standalone:\n                'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n                    '_'\n                ),\n        },\n        monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n            '_'\n        ),\n        weekdays: weekdaysCaseReplace,\n        weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD.MM.YYYY',\n            LL: 'D MMMM YYYY р.',\n            LLL: 'D MMMM YYYY р., HH:mm',\n            LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n        },\n        calendar: {\n            sameDay: processHoursFunction('[Сьогодні '),\n            nextDay: processHoursFunction('[Завтра '),\n            lastDay: processHoursFunction('[Вчора '),\n            nextWeek: processHoursFunction('[У] dddd ['),\n            lastWeek: function () {\n                switch (this.day()) {\n                    case 0:\n                    case 3:\n                    case 5:\n                    case 6:\n                        return processHoursFunction('[Минулої] dddd [').call(this);\n                    case 1:\n                    case 2:\n                    case 4:\n                        return processHoursFunction('[Минулого] dddd [').call(this);\n                }\n            },\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'за %s',\n            past: '%s тому',\n            s: 'декілька секунд',\n            ss: relativeTimeWithPlural$4,\n            m: relativeTimeWithPlural$4,\n            mm: relativeTimeWithPlural$4,\n            h: 'годину',\n            hh: relativeTimeWithPlural$4,\n            d: 'день',\n            dd: relativeTimeWithPlural$4,\n            M: 'місяць',\n            MM: relativeTimeWithPlural$4,\n            y: 'рік',\n            yy: relativeTimeWithPlural$4,\n        },\n        // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n        meridiemParse: /ночі|ранку|дня|вечора/,\n        isPM: function (input) {\n            return /^(дня|вечора)$/.test(input);\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 4) {\n                return 'ночі';\n            } else if (hour < 12) {\n                return 'ранку';\n            } else if (hour < 17) {\n                return 'дня';\n            } else {\n                return 'вечора';\n            }\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'M':\n                case 'd':\n                case 'DDD':\n                case 'w':\n                case 'W':\n                    return number + '-й';\n                case 'D':\n                    return number + '-го';\n                default:\n                    return number;\n            }\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    var months$b = [\n            'جنوری',\n            'فروری',\n            'مارچ',\n            'اپریل',\n            'مئی',\n            'جون',\n            'جولائی',\n            'اگست',\n            'ستمبر',\n            'اکتوبر',\n            'نومبر',\n            'دسمبر',\n        ],\n        days$2 = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n    hooks.defineLocale('ur', {\n        months: months$b,\n        monthsShort: months$b,\n        weekdays: days$2,\n        weekdaysShort: days$2,\n        weekdaysMin: days$2,\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd، D MMMM YYYY HH:mm',\n        },\n        meridiemParse: /صبح|شام/,\n        isPM: function (input) {\n            return 'شام' === input;\n        },\n        meridiem: function (hour, minute, isLower) {\n            if (hour < 12) {\n                return 'صبح';\n            }\n            return 'شام';\n        },\n        calendar: {\n            sameDay: '[آج بوقت] LT',\n            nextDay: '[کل بوقت] LT',\n            nextWeek: 'dddd [بوقت] LT',\n            lastDay: '[گذشتہ روز بوقت] LT',\n            lastWeek: '[گذشتہ] dddd [بوقت] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s بعد',\n            past: '%s قبل',\n            s: 'چند سیکنڈ',\n            ss: '%d سیکنڈ',\n            m: 'ایک منٹ',\n            mm: '%d منٹ',\n            h: 'ایک گھنٹہ',\n            hh: '%d گھنٹے',\n            d: 'ایک دن',\n            dd: '%d دن',\n            M: 'ایک ماہ',\n            MM: '%d ماہ',\n            y: 'ایک سال',\n            yy: '%d سال',\n        },\n        preparse: function (string) {\n            return string.replace(/،/g, ',');\n        },\n        postformat: function (string) {\n            return string.replace(/,/g, '،');\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('uz-latn', {\n        months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n            '_'\n        ),\n        monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n        weekdays:\n            'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n                '_'\n            ),\n        weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n        weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Bugun soat] LT [da]',\n            nextDay: '[Ertaga] LT [da]',\n            nextWeek: 'dddd [kuni soat] LT [da]',\n            lastDay: '[Kecha soat] LT [da]',\n            lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Yaqin %s ichida',\n            past: 'Bir necha %s oldin',\n            s: 'soniya',\n            ss: '%d soniya',\n            m: 'bir daqiqa',\n            mm: '%d daqiqa',\n            h: 'bir soat',\n            hh: '%d soat',\n            d: 'bir kun',\n            dd: '%d kun',\n            M: 'bir oy',\n            MM: '%d oy',\n            y: 'bir yil',\n            yy: '%d yil',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 7th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('uz', {\n        months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n            '_'\n        ),\n        monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n        weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n        weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n        weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'D MMMM YYYY, dddd HH:mm',\n        },\n        calendar: {\n            sameDay: '[Бугун соат] LT [да]',\n            nextDay: '[Эртага] LT [да]',\n            nextWeek: 'dddd [куни соат] LT [да]',\n            lastDay: '[Кеча соат] LT [да]',\n            lastWeek: '[Утган] dddd [куни соат] LT [да]',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'Якин %s ичида',\n            past: 'Бир неча %s олдин',\n            s: 'фурсат',\n            ss: '%d фурсат',\n            m: 'бир дакика',\n            mm: '%d дакика',\n            h: 'бир соат',\n            hh: '%d соат',\n            d: 'бир кун',\n            dd: '%d кун',\n            M: 'бир ой',\n            MM: '%d ой',\n            y: 'бир йил',\n            yy: '%d йил',\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 7, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('vi', {\n        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(\n            '_'\n        ),\n        monthsShort:\n            'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n            '_'\n        ),\n        weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n        weekdaysParseExact: true,\n        meridiemParse: /sa|ch/i,\n        isPM: function (input) {\n            return /^ch$/i.test(input);\n        },\n        meridiem: function (hours, minutes, isLower) {\n            if (hours < 12) {\n                return isLower ? 'sa' : 'SA';\n            } else {\n                return isLower ? 'ch' : 'CH';\n            }\n        },\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM [năm] YYYY',\n            LLL: 'D MMMM [năm] YYYY HH:mm',\n            LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n            l: 'DD/M/YYYY',\n            ll: 'D MMM YYYY',\n            lll: 'D MMM YYYY HH:mm',\n            llll: 'ddd, D MMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[Hôm nay lúc] LT',\n            nextDay: '[Ngày mai lúc] LT',\n            nextWeek: 'dddd [tuần tới lúc] LT',\n            lastDay: '[Hôm qua lúc] LT',\n            lastWeek: 'dddd [tuần trước lúc] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: '%s tới',\n            past: '%s trước',\n            s: 'vài giây',\n            ss: '%d giây',\n            m: 'một phút',\n            mm: '%d phút',\n            h: 'một giờ',\n            hh: '%d giờ',\n            d: 'một ngày',\n            dd: '%d ngày',\n            w: 'một tuần',\n            ww: '%d tuần',\n            M: 'một tháng',\n            MM: '%d tháng',\n            y: 'một năm',\n            yy: '%d năm',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}/,\n        ordinal: function (number) {\n            return number;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('x-pseudo', {\n        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(\n            '_'\n        ),\n        monthsShort:\n            'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n                '_'\n            ),\n        monthsParseExact: true,\n        weekdays:\n            'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n                '_'\n            ),\n        weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n        weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n        weekdaysParseExact: true,\n        longDateFormat: {\n            LT: 'HH:mm',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY HH:mm',\n            LLLL: 'dddd, D MMMM YYYY HH:mm',\n        },\n        calendar: {\n            sameDay: '[T~ódá~ý át] LT',\n            nextDay: '[T~ómó~rró~w át] LT',\n            nextWeek: 'dddd [át] LT',\n            lastDay: '[Ý~ést~érdá~ý át] LT',\n            lastWeek: '[L~ást] dddd [át] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'í~ñ %s',\n            past: '%s á~gó',\n            s: 'á ~féw ~sécó~ñds',\n            ss: '%d s~écóñ~ds',\n            m: 'á ~míñ~úté',\n            mm: '%d m~íñú~tés',\n            h: 'á~ñ hó~úr',\n            hh: '%d h~óúrs',\n            d: 'á ~dáý',\n            dd: '%d d~áýs',\n            M: 'á ~móñ~th',\n            MM: '%d m~óñt~hs',\n            y: 'á ~ýéár',\n            yy: '%d ý~éárs',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    ~~((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                          ? 'st'\n                          : b === 2\n                            ? 'nd'\n                            : b === 3\n                              ? 'rd'\n                              : 'th';\n            return number + output;\n        },\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('yo', {\n        months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n            '_'\n        ),\n        monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n        weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n        weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n        weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n        longDateFormat: {\n            LT: 'h:mm A',\n            LTS: 'h:mm:ss A',\n            L: 'DD/MM/YYYY',\n            LL: 'D MMMM YYYY',\n            LLL: 'D MMMM YYYY h:mm A',\n            LLLL: 'dddd, D MMMM YYYY h:mm A',\n        },\n        calendar: {\n            sameDay: '[Ònì ni] LT',\n            nextDay: '[Ọ̀la ni] LT',\n            nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n            lastDay: '[Àna ni] LT',\n            lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n            sameElse: 'L',\n        },\n        relativeTime: {\n            future: 'ní %s',\n            past: '%s kọjá',\n            s: 'ìsẹjú aayá die',\n            ss: 'aayá %d',\n            m: 'ìsẹjú kan',\n            mm: 'ìsẹjú %d',\n            h: 'wákati kan',\n            hh: 'wákati %d',\n            d: 'ọjọ́ kan',\n            dd: 'ọjọ́ %d',\n            M: 'osù kan',\n            MM: 'osù %d',\n            y: 'ọdún kan',\n            yy: 'ọdún %d',\n        },\n        dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n        ordinal: 'ọjọ́ %d',\n        week: {\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('zh-cn', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日Ah点mm分',\n            LLLL: 'YYYY年M月D日ddddAh点mm分',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            } else {\n                // '中午'\n                return hour >= 11 ? hour : hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: function (now) {\n                if (now.week() !== this.week()) {\n                    return '[下]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            lastDay: '[昨天]LT',\n            lastWeek: function (now) {\n                if (this.week() !== now.week()) {\n                    return '[上]dddLT';\n                } else {\n                    return '[本]dddLT';\n                }\n            },\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '周';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s后',\n            past: '%s前',\n            s: '几秒',\n            ss: '%d 秒',\n            m: '1 分钟',\n            mm: '%d 分钟',\n            h: '1 小时',\n            hh: '%d 小时',\n            d: '1 天',\n            dd: '%d 天',\n            w: '1 周',\n            ww: '%d 周',\n            M: '1 个月',\n            MM: '%d 个月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n        week: {\n            // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n            dow: 1, // Monday is the first day of the week.\n            doy: 4, // The week that contains Jan 4th is the first week of the year.\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('zh-hk', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1200) {\n                return '上午';\n            } else if (hm === 1200) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天]LT',\n            nextDay: '[明天]LT',\n            nextWeek: '[下]ddddLT',\n            lastDay: '[昨天]LT',\n            lastWeek: '[上]ddddLT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('zh-mo', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'DD/MM/YYYY',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'D/M/YYYY',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s內',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    //! moment.js locale configuration\n\n    hooks.defineLocale('zh-tw', {\n        months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n            '_'\n        ),\n        monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n            '_'\n        ),\n        weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n        weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n        weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n        longDateFormat: {\n            LT: 'HH:mm',\n            LTS: 'HH:mm:ss',\n            L: 'YYYY/MM/DD',\n            LL: 'YYYY年M月D日',\n            LLL: 'YYYY年M月D日 HH:mm',\n            LLLL: 'YYYY年M月D日dddd HH:mm',\n            l: 'YYYY/M/D',\n            ll: 'YYYY年M月D日',\n            lll: 'YYYY年M月D日 HH:mm',\n            llll: 'YYYY年M月D日dddd HH:mm',\n        },\n        meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n        meridiemHour: function (hour, meridiem) {\n            if (hour === 12) {\n                hour = 0;\n            }\n            if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n                return hour;\n            } else if (meridiem === '中午') {\n                return hour >= 11 ? hour : hour + 12;\n            } else if (meridiem === '下午' || meridiem === '晚上') {\n                return hour + 12;\n            }\n        },\n        meridiem: function (hour, minute, isLower) {\n            var hm = hour * 100 + minute;\n            if (hm < 600) {\n                return '凌晨';\n            } else if (hm < 900) {\n                return '早上';\n            } else if (hm < 1130) {\n                return '上午';\n            } else if (hm < 1230) {\n                return '中午';\n            } else if (hm < 1800) {\n                return '下午';\n            } else {\n                return '晚上';\n            }\n        },\n        calendar: {\n            sameDay: '[今天] LT',\n            nextDay: '[明天] LT',\n            nextWeek: '[下]dddd LT',\n            lastDay: '[昨天] LT',\n            lastWeek: '[上]dddd LT',\n            sameElse: 'L',\n        },\n        dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n        ordinal: function (number, period) {\n            switch (period) {\n                case 'd':\n                case 'D':\n                case 'DDD':\n                    return number + '日';\n                case 'M':\n                    return number + '月';\n                case 'w':\n                case 'W':\n                    return number + '週';\n                default:\n                    return number;\n            }\n        },\n        relativeTime: {\n            future: '%s後',\n            past: '%s前',\n            s: '幾秒',\n            ss: '%d 秒',\n            m: '1 分鐘',\n            mm: '%d 分鐘',\n            h: '1 小時',\n            hh: '%d 小時',\n            d: '1 天',\n            dd: '%d 天',\n            M: '1 個月',\n            MM: '%d 個月',\n            y: '1 年',\n            yy: '%d 年',\n        },\n    });\n\n    hooks.locale('en');\n\n    return hooks;\n\n})));\n","import moment from \"moment/min/moment-with-locales.js\";\nimport { default as default2 } from \"moment/min/moment-with-locales.js\";\nimport { getLocale } from \"@nextcloud/l10n\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nconst locale = getLocale();\nconst translations = { \"ar\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"ثوانٍ\"] } } } }, \"ast\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"az\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"saniyə\"] } } } }, \"be\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"секунды\"] } } } }, \"br\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"eilennoù\"] } } } }, \"ca\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segons\"] } } } }, \"cs\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekund(y)\"] } } } }, \"cs_CZ\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekund(y)\"] } } } }, \"da\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekunder\"] } } } }, \"de\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"Sekunden\"] } } } }, \"de_DE\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"Sekunden\"] } } } }, \"el\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"δευτερόλεπτα\"] } } } }, \"en_GB\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"seconds\"] } } } }, \"eo\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekundoj\"] } } } }, \"es\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"es_AR\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"es_CL\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"es_MX\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"et_EE\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekundid\"] } } } }, \"eu\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundo\"] } } } }, \"fa\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"ثانیه\"] } } } }, \"fi\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekuntia\"] } } } }, \"fi_FI\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekuntia\"] } } } }, \"fr\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"secondes\"] } } } }, \"ga\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"soicindí\"] } } } }, \"gl\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"he\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"שניות\"] } } } }, \"hr\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekunde\"] } } } }, \"hu\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"másodperc\"] } } } }, \"hu_HU\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"másodperc\"] } } } }, \"id\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"detik\"] } } } }, \"is\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekúndur\"] } } } }, \"it\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"secondi\"] } } } }, \"ja\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"秒後\"] } } } }, \"ja_JP\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"秒\"] } } } }, \"kab\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"tasinin\"] } } } }, \"ko\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"초\"] } } } }, \"lo\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"ວິນາທີ\"] } } } }, \"lt_LT\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sek.\"] } } } }, \"lv\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekundes\"] } } } }, \"mk\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"секунди\"] } } } }, \"mn\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"секунд\"] } } } }, \"ms_MY\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"saat\"] } } } }, \"my\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"စက္ကန့်\"] } } } }, \"nb\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekunder\"] } } } }, \"nb_NO\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekunder\"] } } } }, \"nl\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"seconden\"] } } } }, \"oc\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segondas\"] } } } }, \"pl\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekundy\"] } } } }, \"pt_BR\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"pt_PT\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"segundos\"] } } } }, \"ro\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"secunde\"] } } } }, \"ru\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"секунды\"] } } } }, \"si\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"තත්පර\"] } } } }, \"sk\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekúnd\"] } } } }, \"sk_SK\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekundy\"] } } } }, \"sl\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekunde\"] } } } }, \"sq\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekonda\"] } } } }, \"sr\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"секунде\"] } } } }, \"sv\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"sekunder\"] } } } }, \"th_TH\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"วินาที\"] } } } }, \"tr\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"saniye\"] } } } }, \"uk\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"секунд\"] } } } }, \"uz\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"ikkinchi\"] } } } }, \"vi\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"giây\"] } } } }, \"zh_CN\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"秒\"] } } } }, \"zh_HK\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"秒\"] } } } }, \"zh_TW\": { \"charset\": \"utf-8\", \"translations\": { \"\": { \"seconds\": { \"msgid\": \"seconds\", \"msgstr\": [\"秒\"] } } } } };\nmoment.locale(locale);\nif (locale === \"en\") {\n  moment.updateLocale(moment.locale(), {\n    relativeTime: { s: \"seconds\" }\n  });\n}\nif (locale in translations) {\n  const gt = getGettextBuilder().setLanguage(locale).addTranslation(locale, translations[locale]).build();\n  moment.updateLocale(moment.locale(), {\n    relativeTime: {\n      s: gt.gettext(\"seconds\")\n    }\n  });\n}\nexport {\n  default2 as default\n};\n//# sourceMappingURL=index.mjs.map\n","var buffer = {};\n\nvar base64Js = {};\n\nbase64Js.byteLength = byteLength;\nbase64Js.toByteArray = toByteArray;\nbase64Js.fromByteArray = fromByteArray;\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i];\n  revLookup[code.charCodeAt(i)] = i;\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens (b64) {\n  var len = b64.length;\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=');\n  if (validLen === -1) validLen = len;\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4);\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64);\n  var validLen = lens[0];\n  var placeHoldersLen = lens[1];\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp;\n  var lens = getLens(b64);\n  var validLen = lens[0];\n  var placeHoldersLen = lens[1];\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n\n  var curByte = 0;\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen;\n\n  var i;\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)];\n    arr[curByte++] = (tmp >> 16) & 0xFF;\n    arr[curByte++] = (tmp >> 8) & 0xFF;\n    arr[curByte++] = tmp & 0xFF;\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4);\n    arr[curByte++] = tmp & 0xFF;\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2);\n    arr[curByte++] = (tmp >> 8) & 0xFF;\n    arr[curByte++] = tmp & 0xFF;\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp;\n  var output = [];\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF);\n    output.push(tripletToBase64(tmp));\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp;\n  var len = uint8.length;\n  var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n  var parts = [];\n  var maxChunkLength = 16383; // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1];\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    );\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    );\n  }\n\n  return parts.join('')\n}\n\nvar ieee754 = {};\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n\nieee754.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m;\n  var eLen = (nBytes * 8) - mLen - 1;\n  var eMax = (1 << eLen) - 1;\n  var eBias = eMax >> 1;\n  var nBits = -7;\n  var i = isLE ? (nBytes - 1) : 0;\n  var d = isLE ? -1 : 1;\n  var s = buffer[offset + i];\n\n  i += d;\n\n  e = s & ((1 << (-nBits)) - 1);\n  s >>= (-nBits);\n  nBits += eLen;\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1);\n  e >>= (-nBits);\n  nBits += mLen;\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias;\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen);\n    e = e - eBias;\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n};\n\nieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c;\n  var eLen = (nBytes * 8) - mLen - 1;\n  var eMax = (1 << eLen) - 1;\n  var eBias = eMax >> 1;\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n  var i = isLE ? 0 : (nBytes - 1);\n  var d = isLE ? 1 : -1;\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n  value = Math.abs(value);\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0;\n    e = eMax;\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2);\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--;\n      c *= 2;\n    }\n    if (e + eBias >= 1) {\n      value += rt / c;\n    } else {\n      value += rt * Math.pow(2, 1 - eBias);\n    }\n    if (value * c >= 2) {\n      e++;\n      c /= 2;\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0;\n      e = eMax;\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen);\n      e = e + eBias;\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n      e = 0;\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m;\n  eLen += mLen;\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128;\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\n(function (exports) {\n\n\tconst base64 = base64Js;\n\tconst ieee754$1 = ieee754;\n\tconst customInspectSymbol =\n\t  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n\t    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n\t    : null;\n\n\texports.Buffer = Buffer;\n\texports.SlowBuffer = SlowBuffer;\n\texports.INSPECT_MAX_BYTES = 50;\n\n\tconst K_MAX_LENGTH = 0x7fffffff;\n\texports.kMaxLength = K_MAX_LENGTH;\n\tconst { Uint8Array: GlobalUint8Array, ArrayBuffer: GlobalArrayBuffer, SharedArrayBuffer: GlobalSharedArrayBuffer } = globalThis;\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t *   === true    Use Uint8Array implementation (fastest)\n\t *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n\t *               implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * We report that the browser does not support typed arrays if the are not subclassable\n\t * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n\t * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n\t * for __proto__ and has a buggy typed array implementation.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\tif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n\t    typeof console.error === 'function') {\n\t  console.error(\n\t    'This browser lacks typed array (Uint8Array) support which is required by ' +\n\t    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n\t  );\n\t}\n\n\tfunction typedArraySupport () {\n\t  // Can typed array instances can be augmented?\n\t  try {\n\t    const arr = new GlobalUint8Array(1);\n\t    const proto = { foo: function () { return 42 } };\n\t    Object.setPrototypeOf(proto, GlobalUint8Array.prototype);\n\t    Object.setPrototypeOf(arr, proto);\n\t    return arr.foo() === 42\n\t  } catch (e) {\n\t    return false\n\t  }\n\t}\n\n\tObject.defineProperty(Buffer.prototype, 'parent', {\n\t  enumerable: true,\n\t  get: function () {\n\t    if (!Buffer.isBuffer(this)) return undefined\n\t    return this.buffer\n\t  }\n\t});\n\n\tObject.defineProperty(Buffer.prototype, 'offset', {\n\t  enumerable: true,\n\t  get: function () {\n\t    if (!Buffer.isBuffer(this)) return undefined\n\t    return this.byteOffset\n\t  }\n\t});\n\n\tfunction createBuffer (length) {\n\t  if (length > K_MAX_LENGTH) {\n\t    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n\t  }\n\t  // Return an augmented `Uint8Array` instance\n\t  const buf = new GlobalUint8Array(length);\n\t  Object.setPrototypeOf(buf, Buffer.prototype);\n\t  return buf\n\t}\n\n\t/**\n\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t * returns a single octet.\n\t *\n\t * The `Uint8Array` prototype remains unmodified.\n\t */\n\n\tfunction Buffer (arg, encodingOrOffset, length) {\n\t  // Common case.\n\t  if (typeof arg === 'number') {\n\t    if (typeof encodingOrOffset === 'string') {\n\t      throw new TypeError(\n\t        'The \"string\" argument must be of type string. Received type number'\n\t      )\n\t    }\n\t    return allocUnsafe(arg)\n\t  }\n\t  return from(arg, encodingOrOffset, length)\n\t}\n\n\tBuffer.poolSize = 8192; // not used by this implementation\n\n\tfunction from (value, encodingOrOffset, length) {\n\t  if (typeof value === 'string') {\n\t    return fromString(value, encodingOrOffset)\n\t  }\n\n\t  if (GlobalArrayBuffer.isView(value)) {\n\t    return fromArrayView(value)\n\t  }\n\n\t  if (value == null) {\n\t    throw new TypeError(\n\t      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t      'or Array-like Object. Received type ' + (typeof value)\n\t    )\n\t  }\n\n\t  if (isInstance(value, GlobalArrayBuffer) ||\n\t      (value && isInstance(value.buffer, GlobalArrayBuffer))) {\n\t    return fromArrayBuffer(value, encodingOrOffset, length)\n\t  }\n\n\t  if (typeof GlobalSharedArrayBuffer !== 'undefined' &&\n\t      (isInstance(value, GlobalSharedArrayBuffer) ||\n\t      (value && isInstance(value.buffer, GlobalSharedArrayBuffer)))) {\n\t    return fromArrayBuffer(value, encodingOrOffset, length)\n\t  }\n\n\t  if (typeof value === 'number') {\n\t    throw new TypeError(\n\t      'The \"value\" argument must not be of type number. Received type number'\n\t    )\n\t  }\n\n\t  const valueOf = value.valueOf && value.valueOf();\n\t  if (valueOf != null && valueOf !== value) {\n\t    return Buffer.from(valueOf, encodingOrOffset, length)\n\t  }\n\n\t  const b = fromObject(value);\n\t  if (b) return b\n\n\t  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n\t      typeof value[Symbol.toPrimitive] === 'function') {\n\t    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n\t  }\n\n\t  throw new TypeError(\n\t    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t    'or Array-like Object. Received type ' + (typeof value)\n\t  )\n\t}\n\n\t/**\n\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t * if value is a number.\n\t * Buffer.from(str[, encoding])\n\t * Buffer.from(array)\n\t * Buffer.from(buffer)\n\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t **/\n\tBuffer.from = function (value, encodingOrOffset, length) {\n\t  return from(value, encodingOrOffset, length)\n\t};\n\n\t// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n\t// https://github.com/feross/buffer/pull/148\n\tObject.setPrototypeOf(Buffer.prototype, GlobalUint8Array.prototype);\n\tObject.setPrototypeOf(Buffer, GlobalUint8Array);\n\n\tfunction assertSize (size) {\n\t  if (typeof size !== 'number') {\n\t    throw new TypeError('\"size\" argument must be of type number')\n\t  } else if (size < 0) {\n\t    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n\t  }\n\t}\n\n\tfunction alloc (size, fill, encoding) {\n\t  assertSize(size);\n\t  if (size <= 0) {\n\t    return createBuffer(size)\n\t  }\n\t  if (fill !== undefined) {\n\t    // Only pay attention to encoding if it's a string. This\n\t    // prevents accidentally sending in a number that would\n\t    // be interpreted as a start offset.\n\t    return typeof encoding === 'string'\n\t      ? createBuffer(size).fill(fill, encoding)\n\t      : createBuffer(size).fill(fill)\n\t  }\n\t  return createBuffer(size)\n\t}\n\n\t/**\n\t * Creates a new filled Buffer instance.\n\t * alloc(size[, fill[, encoding]])\n\t **/\n\tBuffer.alloc = function (size, fill, encoding) {\n\t  return alloc(size, fill, encoding)\n\t};\n\n\tfunction allocUnsafe (size) {\n\t  assertSize(size);\n\t  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n\t}\n\n\t/**\n\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t * */\n\tBuffer.allocUnsafe = function (size) {\n\t  return allocUnsafe(size)\n\t};\n\t/**\n\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t */\n\tBuffer.allocUnsafeSlow = function (size) {\n\t  return allocUnsafe(size)\n\t};\n\n\tfunction fromString (string, encoding) {\n\t  if (typeof encoding !== 'string' || encoding === '') {\n\t    encoding = 'utf8';\n\t  }\n\n\t  if (!Buffer.isEncoding(encoding)) {\n\t    throw new TypeError('Unknown encoding: ' + encoding)\n\t  }\n\n\t  const length = byteLength(string, encoding) | 0;\n\t  let buf = createBuffer(length);\n\n\t  const actual = buf.write(string, encoding);\n\n\t  if (actual !== length) {\n\t    // Writing a hex string, for example, that contains invalid characters will\n\t    // cause everything after the first invalid character to be ignored. (e.g.\n\t    // 'abxxcd' will be treated as 'ab')\n\t    buf = buf.slice(0, actual);\n\t  }\n\n\t  return buf\n\t}\n\n\tfunction fromArrayLike (array) {\n\t  const length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t  const buf = createBuffer(length);\n\t  for (let i = 0; i < length; i += 1) {\n\t    buf[i] = array[i] & 255;\n\t  }\n\t  return buf\n\t}\n\n\tfunction fromArrayView (arrayView) {\n\t  if (isInstance(arrayView, GlobalUint8Array)) {\n\t    const copy = new GlobalUint8Array(arrayView);\n\t    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n\t  }\n\t  return fromArrayLike(arrayView)\n\t}\n\n\tfunction fromArrayBuffer (array, byteOffset, length) {\n\t  if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t    throw new RangeError('\"offset\" is outside of buffer bounds')\n\t  }\n\n\t  if (array.byteLength < byteOffset + (length || 0)) {\n\t    throw new RangeError('\"length\" is outside of buffer bounds')\n\t  }\n\n\t  let buf;\n\t  if (byteOffset === undefined && length === undefined) {\n\t    buf = new GlobalUint8Array(array);\n\t  } else if (length === undefined) {\n\t    buf = new GlobalUint8Array(array, byteOffset);\n\t  } else {\n\t    buf = new GlobalUint8Array(array, byteOffset, length);\n\t  }\n\n\t  // Return an augmented `Uint8Array` instance\n\t  Object.setPrototypeOf(buf, Buffer.prototype);\n\n\t  return buf\n\t}\n\n\tfunction fromObject (obj) {\n\t  if (Buffer.isBuffer(obj)) {\n\t    const len = checked(obj.length) | 0;\n\t    const buf = createBuffer(len);\n\n\t    if (buf.length === 0) {\n\t      return buf\n\t    }\n\n\t    obj.copy(buf, 0, 0, len);\n\t    return buf\n\t  }\n\n\t  if (obj.length !== undefined) {\n\t    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n\t      return createBuffer(0)\n\t    }\n\t    return fromArrayLike(obj)\n\t  }\n\n\t  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t    return fromArrayLike(obj.data)\n\t  }\n\t}\n\n\tfunction checked (length) {\n\t  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t  // length is NaN (which is otherwise coerced to zero.)\n\t  if (length >= K_MAX_LENGTH) {\n\t    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t  }\n\t  return length | 0\n\t}\n\n\tfunction SlowBuffer (length) {\n\t  if (+length != length) { // eslint-disable-line eqeqeq\n\t    length = 0;\n\t  }\n\t  return Buffer.alloc(+length)\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t  return b != null && b._isBuffer === true &&\n\t    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n\t};\n\n\tBuffer.compare = function compare (a, b) {\n\t  if (isInstance(a, GlobalUint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n\t  if (isInstance(b, GlobalUint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\t  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t    throw new TypeError(\n\t      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n\t    )\n\t  }\n\n\t  if (a === b) return 0\n\n\t  let x = a.length;\n\t  let y = b.length;\n\n\t  for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n\t    if (a[i] !== b[i]) {\n\t      x = a[i];\n\t      y = b[i];\n\t      break\n\t    }\n\t  }\n\n\t  if (x < y) return -1\n\t  if (y < x) return 1\n\t  return 0\n\t};\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t  switch (String(encoding).toLowerCase()) {\n\t    case 'hex':\n\t    case 'utf8':\n\t    case 'utf-8':\n\t    case 'ascii':\n\t    case 'latin1':\n\t    case 'binary':\n\t    case 'base64':\n\t    case 'ucs2':\n\t    case 'ucs-2':\n\t    case 'utf16le':\n\t    case 'utf-16le':\n\t      return true\n\t    default:\n\t      return false\n\t  }\n\t};\n\n\tBuffer.concat = function concat (list, length) {\n\t  if (!Array.isArray(list)) {\n\t    throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t  }\n\n\t  if (list.length === 0) {\n\t    return Buffer.alloc(0)\n\t  }\n\n\t  let i;\n\t  if (length === undefined) {\n\t    length = 0;\n\t    for (i = 0; i < list.length; ++i) {\n\t      length += list[i].length;\n\t    }\n\t  }\n\n\t  const buffer = Buffer.allocUnsafe(length);\n\t  let pos = 0;\n\t  for (i = 0; i < list.length; ++i) {\n\t    let buf = list[i];\n\t    if (isInstance(buf, GlobalUint8Array)) {\n\t      if (pos + buf.length > buffer.length) {\n\t        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n\t        buf.copy(buffer, pos);\n\t      } else {\n\t        GlobalUint8Array.prototype.set.call(\n\t          buffer,\n\t          buf,\n\t          pos\n\t        );\n\t      }\n\t    } else if (!Buffer.isBuffer(buf)) {\n\t      throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t    } else {\n\t      buf.copy(buffer, pos);\n\t    }\n\t    pos += buf.length;\n\t  }\n\t  return buffer\n\t};\n\n\tfunction byteLength (string, encoding) {\n\t  if (Buffer.isBuffer(string)) {\n\t    return string.length\n\t  }\n\t  if (GlobalArrayBuffer.isView(string) || isInstance(string, GlobalArrayBuffer)) {\n\t    return string.byteLength\n\t  }\n\t  if (typeof string !== 'string') {\n\t    throw new TypeError(\n\t      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n\t      'Received type ' + typeof string\n\t    )\n\t  }\n\n\t  const len = string.length;\n\t  const mustMatch = (arguments.length > 2 && arguments[2] === true);\n\t  if (!mustMatch && len === 0) return 0\n\n\t  // Use a for loop to avoid recursion\n\t  let loweredCase = false;\n\t  for (;;) {\n\t    switch (encoding) {\n\t      case 'ascii':\n\t      case 'latin1':\n\t      case 'binary':\n\t        return len\n\t      case 'utf8':\n\t      case 'utf-8':\n\t        return utf8ToBytes(string).length\n\t      case 'ucs2':\n\t      case 'ucs-2':\n\t      case 'utf16le':\n\t      case 'utf-16le':\n\t        return len * 2\n\t      case 'hex':\n\t        return len >>> 1\n\t      case 'base64':\n\t        return base64ToBytes(string).length\n\t      default:\n\t        if (loweredCase) {\n\t          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n\t        }\n\t        encoding = ('' + encoding).toLowerCase();\n\t        loweredCase = true;\n\t    }\n\t  }\n\t}\n\tBuffer.byteLength = byteLength;\n\n\tfunction slowToString (encoding, start, end) {\n\t  let loweredCase = false;\n\n\t  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t  // property of a typed array.\n\n\t  // This behaves neither like String nor Uint8Array in that we set start/end\n\t  // to their upper/lower bounds if the value passed is out of range.\n\t  // undefined is handled specially as per ECMA-262 6th Edition,\n\t  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t  if (start === undefined || start < 0) {\n\t    start = 0;\n\t  }\n\t  // Return early if start > this.length. Done here to prevent potential uint32\n\t  // coercion fail below.\n\t  if (start > this.length) {\n\t    return ''\n\t  }\n\n\t  if (end === undefined || end > this.length) {\n\t    end = this.length;\n\t  }\n\n\t  if (end <= 0) {\n\t    return ''\n\t  }\n\n\t  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n\t  end >>>= 0;\n\t  start >>>= 0;\n\n\t  if (end <= start) {\n\t    return ''\n\t  }\n\n\t  if (!encoding) encoding = 'utf8';\n\n\t  while (true) {\n\t    switch (encoding) {\n\t      case 'hex':\n\t        return hexSlice(this, start, end)\n\n\t      case 'utf8':\n\t      case 'utf-8':\n\t        return utf8Slice(this, start, end)\n\n\t      case 'ascii':\n\t        return asciiSlice(this, start, end)\n\n\t      case 'latin1':\n\t      case 'binary':\n\t        return latin1Slice(this, start, end)\n\n\t      case 'base64':\n\t        return base64Slice(this, start, end)\n\n\t      case 'ucs2':\n\t      case 'ucs-2':\n\t      case 'utf16le':\n\t      case 'utf-16le':\n\t        return utf16leSlice(this, start, end)\n\n\t      default:\n\t        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t        encoding = (encoding + '').toLowerCase();\n\t        loweredCase = true;\n\t    }\n\t  }\n\t}\n\n\t// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n\t// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n\t// reliably in a browserify context because there could be multiple different\n\t// copies of the 'buffer' package in use. This method works even for Buffer\n\t// instances that were created from another copy of the `buffer` package.\n\t// See: https://github.com/feross/buffer/issues/154\n\tBuffer.prototype._isBuffer = true;\n\n\tfunction swap (b, n, m) {\n\t  const i = b[n];\n\t  b[n] = b[m];\n\t  b[m] = i;\n\t}\n\n\tBuffer.prototype.swap16 = function swap16 () {\n\t  const len = this.length;\n\t  if (len % 2 !== 0) {\n\t    throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t  }\n\t  for (let i = 0; i < len; i += 2) {\n\t    swap(this, i, i + 1);\n\t  }\n\t  return this\n\t};\n\n\tBuffer.prototype.swap32 = function swap32 () {\n\t  const len = this.length;\n\t  if (len % 4 !== 0) {\n\t    throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t  }\n\t  for (let i = 0; i < len; i += 4) {\n\t    swap(this, i, i + 3);\n\t    swap(this, i + 1, i + 2);\n\t  }\n\t  return this\n\t};\n\n\tBuffer.prototype.swap64 = function swap64 () {\n\t  const len = this.length;\n\t  if (len % 8 !== 0) {\n\t    throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t  }\n\t  for (let i = 0; i < len; i += 8) {\n\t    swap(this, i, i + 7);\n\t    swap(this, i + 1, i + 6);\n\t    swap(this, i + 2, i + 5);\n\t    swap(this, i + 3, i + 4);\n\t  }\n\t  return this\n\t};\n\n\tBuffer.prototype.toString = function toString () {\n\t  const length = this.length;\n\t  if (length === 0) return ''\n\t  if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t  return slowToString.apply(this, arguments)\n\t};\n\n\tBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n\tBuffer.prototype.equals = function equals (b) {\n\t  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t  if (this === b) return true\n\t  return Buffer.compare(this, b) === 0\n\t};\n\n\tBuffer.prototype.inspect = function inspect () {\n\t  let str = '';\n\t  const max = exports.INSPECT_MAX_BYTES;\n\t  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n\t  if (this.length > max) str += ' ... ';\n\t  return '<Buffer ' + str + '>'\n\t};\n\tif (customInspectSymbol) {\n\t  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n\t}\n\n\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t  if (isInstance(target, GlobalUint8Array)) {\n\t    target = Buffer.from(target, target.offset, target.byteLength);\n\t  }\n\t  if (!Buffer.isBuffer(target)) {\n\t    throw new TypeError(\n\t      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n\t      'Received type ' + (typeof target)\n\t    )\n\t  }\n\n\t  if (start === undefined) {\n\t    start = 0;\n\t  }\n\t  if (end === undefined) {\n\t    end = target ? target.length : 0;\n\t  }\n\t  if (thisStart === undefined) {\n\t    thisStart = 0;\n\t  }\n\t  if (thisEnd === undefined) {\n\t    thisEnd = this.length;\n\t  }\n\n\t  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t    throw new RangeError('out of range index')\n\t  }\n\n\t  if (thisStart >= thisEnd && start >= end) {\n\t    return 0\n\t  }\n\t  if (thisStart >= thisEnd) {\n\t    return -1\n\t  }\n\t  if (start >= end) {\n\t    return 1\n\t  }\n\n\t  start >>>= 0;\n\t  end >>>= 0;\n\t  thisStart >>>= 0;\n\t  thisEnd >>>= 0;\n\n\t  if (this === target) return 0\n\n\t  let x = thisEnd - thisStart;\n\t  let y = end - start;\n\t  const len = Math.min(x, y);\n\n\t  const thisCopy = this.slice(thisStart, thisEnd);\n\t  const targetCopy = target.slice(start, end);\n\n\t  for (let i = 0; i < len; ++i) {\n\t    if (thisCopy[i] !== targetCopy[i]) {\n\t      x = thisCopy[i];\n\t      y = targetCopy[i];\n\t      break\n\t    }\n\t  }\n\n\t  if (x < y) return -1\n\t  if (y < x) return 1\n\t  return 0\n\t};\n\n\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t//\n\t// Arguments:\n\t// - buffer - a Buffer to search\n\t// - val - a string, Buffer, or number\n\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t// - encoding - an optional encoding, relevant is val is a string\n\t// - dir - true for indexOf, false for lastIndexOf\n\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t  // Empty buffer means no match\n\t  if (buffer.length === 0) return -1\n\n\t  // Normalize byteOffset\n\t  if (typeof byteOffset === 'string') {\n\t    encoding = byteOffset;\n\t    byteOffset = 0;\n\t  } else if (byteOffset > 0x7fffffff) {\n\t    byteOffset = 0x7fffffff;\n\t  } else if (byteOffset < -0x80000000) {\n\t    byteOffset = -0x80000000;\n\t  }\n\t  byteOffset = +byteOffset; // Coerce to Number.\n\t  if (numberIsNaN(byteOffset)) {\n\t    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t    byteOffset = dir ? 0 : (buffer.length - 1);\n\t  }\n\n\t  // Normalize byteOffset: negative offsets start from the end of the buffer\n\t  if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\t  if (byteOffset >= buffer.length) {\n\t    if (dir) return -1\n\t    else byteOffset = buffer.length - 1;\n\t  } else if (byteOffset < 0) {\n\t    if (dir) byteOffset = 0;\n\t    else return -1\n\t  }\n\n\t  // Normalize val\n\t  if (typeof val === 'string') {\n\t    val = Buffer.from(val, encoding);\n\t  }\n\n\t  // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t  if (Buffer.isBuffer(val)) {\n\t    // Special case: looking for empty string/buffer always fails\n\t    if (val.length === 0) {\n\t      return -1\n\t    }\n\t    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t  } else if (typeof val === 'number') {\n\t    val = val & 0xFF; // Search for a byte value [0-255]\n\t    if (typeof GlobalUint8Array.prototype.indexOf === 'function') {\n\t      if (dir) {\n\t        return GlobalUint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t      } else {\n\t        return GlobalUint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t      }\n\t    }\n\t    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n\t  }\n\n\t  throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t  let indexSize = 1;\n\t  let arrLength = arr.length;\n\t  let valLength = val.length;\n\n\t  if (encoding !== undefined) {\n\t    encoding = String(encoding).toLowerCase();\n\t    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t        encoding === 'utf16le' || encoding === 'utf-16le') {\n\t      if (arr.length < 2 || val.length < 2) {\n\t        return -1\n\t      }\n\t      indexSize = 2;\n\t      arrLength /= 2;\n\t      valLength /= 2;\n\t      byteOffset /= 2;\n\t    }\n\t  }\n\n\t  function read (buf, i) {\n\t    if (indexSize === 1) {\n\t      return buf[i]\n\t    } else {\n\t      return buf.readUInt16BE(i * indexSize)\n\t    }\n\t  }\n\n\t  let i;\n\t  if (dir) {\n\t    let foundIndex = -1;\n\t    for (i = byteOffset; i < arrLength; i++) {\n\t      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t        if (foundIndex === -1) foundIndex = i;\n\t        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t      } else {\n\t        if (foundIndex !== -1) i -= i - foundIndex;\n\t        foundIndex = -1;\n\t      }\n\t    }\n\t  } else {\n\t    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t    for (i = byteOffset; i >= 0; i--) {\n\t      let found = true;\n\t      for (let j = 0; j < valLength; j++) {\n\t        if (read(arr, i + j) !== read(val, j)) {\n\t          found = false;\n\t          break\n\t        }\n\t      }\n\t      if (found) return i\n\t    }\n\t  }\n\n\t  return -1\n\t}\n\n\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t  return this.indexOf(val, byteOffset, encoding) !== -1\n\t};\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t};\n\n\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t};\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t  offset = Number(offset) || 0;\n\t  const remaining = buf.length - offset;\n\t  if (!length) {\n\t    length = remaining;\n\t  } else {\n\t    length = Number(length);\n\t    if (length > remaining) {\n\t      length = remaining;\n\t    }\n\t  }\n\n\t  const strLen = string.length;\n\n\t  if (length > strLen / 2) {\n\t    length = strLen / 2;\n\t  }\n\t  let i;\n\t  for (i = 0; i < length; ++i) {\n\t    const parsed = parseInt(string.substr(i * 2, 2), 16);\n\t    if (numberIsNaN(parsed)) return i\n\t    buf[offset + i] = parsed;\n\t  }\n\t  return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t  return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t  return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t  // Buffer#write(string)\n\t  if (offset === undefined) {\n\t    encoding = 'utf8';\n\t    length = this.length;\n\t    offset = 0;\n\t  // Buffer#write(string, encoding)\n\t  } else if (length === undefined && typeof offset === 'string') {\n\t    encoding = offset;\n\t    length = this.length;\n\t    offset = 0;\n\t  // Buffer#write(string, offset[, length][, encoding])\n\t  } else if (isFinite(offset)) {\n\t    offset = offset >>> 0;\n\t    if (isFinite(length)) {\n\t      length = length >>> 0;\n\t      if (encoding === undefined) encoding = 'utf8';\n\t    } else {\n\t      encoding = length;\n\t      length = undefined;\n\t    }\n\t  } else {\n\t    throw new Error(\n\t      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t    )\n\t  }\n\n\t  const remaining = this.length - offset;\n\t  if (length === undefined || length > remaining) length = remaining;\n\n\t  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t    throw new RangeError('Attempt to write outside buffer bounds')\n\t  }\n\n\t  if (!encoding) encoding = 'utf8';\n\n\t  let loweredCase = false;\n\t  for (;;) {\n\t    switch (encoding) {\n\t      case 'hex':\n\t        return hexWrite(this, string, offset, length)\n\n\t      case 'utf8':\n\t      case 'utf-8':\n\t        return utf8Write(this, string, offset, length)\n\n\t      case 'ascii':\n\t      case 'latin1':\n\t      case 'binary':\n\t        return asciiWrite(this, string, offset, length)\n\n\t      case 'base64':\n\t        // Warning: maxLength not taken into account in base64Write\n\t        return base64Write(this, string, offset, length)\n\n\t      case 'ucs2':\n\t      case 'ucs-2':\n\t      case 'utf16le':\n\t      case 'utf-16le':\n\t        return ucs2Write(this, string, offset, length)\n\n\t      default:\n\t        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t        encoding = ('' + encoding).toLowerCase();\n\t        loweredCase = true;\n\t    }\n\t  }\n\t};\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t  return {\n\t    type: 'Buffer',\n\t    data: Array.prototype.slice.call(this._arr || this, 0)\n\t  }\n\t};\n\n\tfunction base64Slice (buf, start, end) {\n\t  if (start === 0 && end === buf.length) {\n\t    return base64.fromByteArray(buf)\n\t  } else {\n\t    return base64.fromByteArray(buf.slice(start, end))\n\t  }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t  end = Math.min(buf.length, end);\n\t  const res = [];\n\n\t  let i = start;\n\t  while (i < end) {\n\t    const firstByte = buf[i];\n\t    let codePoint = null;\n\t    let bytesPerSequence = (firstByte > 0xEF)\n\t      ? 4\n\t      : (firstByte > 0xDF)\n\t          ? 3\n\t          : (firstByte > 0xBF)\n\t              ? 2\n\t              : 1;\n\n\t    if (i + bytesPerSequence <= end) {\n\t      let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t      switch (bytesPerSequence) {\n\t        case 1:\n\t          if (firstByte < 0x80) {\n\t            codePoint = firstByte;\n\t          }\n\t          break\n\t        case 2:\n\t          secondByte = buf[i + 1];\n\t          if ((secondByte & 0xC0) === 0x80) {\n\t            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t            if (tempCodePoint > 0x7F) {\n\t              codePoint = tempCodePoint;\n\t            }\n\t          }\n\t          break\n\t        case 3:\n\t          secondByte = buf[i + 1];\n\t          thirdByte = buf[i + 2];\n\t          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t              codePoint = tempCodePoint;\n\t            }\n\t          }\n\t          break\n\t        case 4:\n\t          secondByte = buf[i + 1];\n\t          thirdByte = buf[i + 2];\n\t          fourthByte = buf[i + 3];\n\t          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t              codePoint = tempCodePoint;\n\t            }\n\t          }\n\t      }\n\t    }\n\n\t    if (codePoint === null) {\n\t      // we did not generate a valid codePoint so insert a\n\t      // replacement char (U+FFFD) and advance only 1 byte\n\t      codePoint = 0xFFFD;\n\t      bytesPerSequence = 1;\n\t    } else if (codePoint > 0xFFFF) {\n\t      // encode to utf16 (surrogate pair dance)\n\t      codePoint -= 0x10000;\n\t      res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t      codePoint = 0xDC00 | codePoint & 0x3FF;\n\t    }\n\n\t    res.push(codePoint);\n\t    i += bytesPerSequence;\n\t  }\n\n\t  return decodeCodePointsArray(res)\n\t}\n\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tconst MAX_ARGUMENTS_LENGTH = 0x1000;\n\n\tfunction decodeCodePointsArray (codePoints) {\n\t  const len = codePoints.length;\n\t  if (len <= MAX_ARGUMENTS_LENGTH) {\n\t    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t  }\n\n\t  // Decode in chunks to avoid \"call stack size exceeded\".\n\t  let res = '';\n\t  let i = 0;\n\t  while (i < len) {\n\t    res += String.fromCharCode.apply(\n\t      String,\n\t      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t    );\n\t  }\n\t  return res\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t  let ret = '';\n\t  end = Math.min(buf.length, end);\n\n\t  for (let i = start; i < end; ++i) {\n\t    ret += String.fromCharCode(buf[i] & 0x7F);\n\t  }\n\t  return ret\n\t}\n\n\tfunction latin1Slice (buf, start, end) {\n\t  let ret = '';\n\t  end = Math.min(buf.length, end);\n\n\t  for (let i = start; i < end; ++i) {\n\t    ret += String.fromCharCode(buf[i]);\n\t  }\n\t  return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t  const len = buf.length;\n\n\t  if (!start || start < 0) start = 0;\n\t  if (!end || end < 0 || end > len) end = len;\n\n\t  let out = '';\n\t  for (let i = start; i < end; ++i) {\n\t    out += hexSliceLookupTable[buf[i]];\n\t  }\n\t  return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t  const bytes = buf.slice(start, end);\n\t  let res = '';\n\t  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n\t  for (let i = 0; i < bytes.length - 1; i += 2) {\n\t    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n\t  }\n\t  return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t  const len = this.length;\n\t  start = ~~start;\n\t  end = end === undefined ? len : ~~end;\n\n\t  if (start < 0) {\n\t    start += len;\n\t    if (start < 0) start = 0;\n\t  } else if (start > len) {\n\t    start = len;\n\t  }\n\n\t  if (end < 0) {\n\t    end += len;\n\t    if (end < 0) end = 0;\n\t  } else if (end > len) {\n\t    end = len;\n\t  }\n\n\t  if (end < start) end = start;\n\n\t  const newBuf = this.subarray(start, end);\n\t  // Return an augmented `Uint8Array` instance\n\t  Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n\t  return newBuf\n\t};\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUintLE =\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t  let val = this[offset];\n\t  let mul = 1;\n\t  let i = 0;\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    val += this[offset + i] * mul;\n\t  }\n\n\t  return val\n\t};\n\n\tBuffer.prototype.readUintBE =\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) {\n\t    checkOffset(offset, byteLength, this.length);\n\t  }\n\n\t  let val = this[offset + --byteLength];\n\t  let mul = 1;\n\t  while (byteLength > 0 && (mul *= 0x100)) {\n\t    val += this[offset + --byteLength] * mul;\n\t  }\n\n\t  return val\n\t};\n\n\tBuffer.prototype.readUint8 =\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 1, this.length);\n\t  return this[offset]\n\t};\n\n\tBuffer.prototype.readUint16LE =\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 2, this.length);\n\t  return this[offset] | (this[offset + 1] << 8)\n\t};\n\n\tBuffer.prototype.readUint16BE =\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 2, this.length);\n\t  return (this[offset] << 8) | this[offset + 1]\n\t};\n\n\tBuffer.prototype.readUint32LE =\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t  return ((this[offset]) |\n\t      (this[offset + 1] << 8) |\n\t      (this[offset + 2] << 16)) +\n\t      (this[offset + 3] * 0x1000000)\n\t};\n\n\tBuffer.prototype.readUint32BE =\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t  return (this[offset] * 0x1000000) +\n\t    ((this[offset + 1] << 16) |\n\t    (this[offset + 2] << 8) |\n\t    this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n\t  offset = offset >>> 0;\n\t  validateNumber(offset, 'offset');\n\t  const first = this[offset];\n\t  const last = this[offset + 7];\n\t  if (first === undefined || last === undefined) {\n\t    boundsError(offset, this.length - 8);\n\t  }\n\n\t  const lo = first +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 24;\n\n\t  const hi = this[++offset] +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset] * 2 ** 16 +\n\t    last * 2 ** 24;\n\n\t  return BigInt(lo) + (BigInt(hi) << BigInt(32))\n\t});\n\n\tBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n\t  offset = offset >>> 0;\n\t  validateNumber(offset, 'offset');\n\t  const first = this[offset];\n\t  const last = this[offset + 7];\n\t  if (first === undefined || last === undefined) {\n\t    boundsError(offset, this.length - 8);\n\t  }\n\n\t  const hi = first * 2 ** 24 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset];\n\n\t  const lo = this[++offset] * 2 ** 24 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 8 +\n\t    last;\n\n\t  return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n\t});\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t  let val = this[offset];\n\t  let mul = 1;\n\t  let i = 0;\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    val += this[offset + i] * mul;\n\t  }\n\t  mul *= 0x80;\n\n\t  if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t  return val\n\t};\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t  let i = byteLength;\n\t  let mul = 1;\n\t  let val = this[offset + --i];\n\t  while (i > 0 && (mul *= 0x100)) {\n\t    val += this[offset + --i] * mul;\n\t  }\n\t  mul *= 0x80;\n\n\t  if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t  return val\n\t};\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 1, this.length);\n\t  if (!(this[offset] & 0x80)) return (this[offset])\n\t  return ((0xff - this[offset] + 1) * -1)\n\t};\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 2, this.length);\n\t  const val = this[offset] | (this[offset + 1] << 8);\n\t  return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 2, this.length);\n\t  const val = this[offset + 1] | (this[offset] << 8);\n\t  return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t  return (this[offset]) |\n\t    (this[offset + 1] << 8) |\n\t    (this[offset + 2] << 16) |\n\t    (this[offset + 3] << 24)\n\t};\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t  return (this[offset] << 24) |\n\t    (this[offset + 1] << 16) |\n\t    (this[offset + 2] << 8) |\n\t    (this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n\t  offset = offset >>> 0;\n\t  validateNumber(offset, 'offset');\n\t  const first = this[offset];\n\t  const last = this[offset + 7];\n\t  if (first === undefined || last === undefined) {\n\t    boundsError(offset, this.length - 8);\n\t  }\n\n\t  const val = this[offset + 4] +\n\t    this[offset + 5] * 2 ** 8 +\n\t    this[offset + 6] * 2 ** 16 +\n\t    (last << 24); // Overflow\n\n\t  return (BigInt(val) << BigInt(32)) +\n\t    BigInt(first +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 24)\n\t});\n\n\tBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n\t  offset = offset >>> 0;\n\t  validateNumber(offset, 'offset');\n\t  const first = this[offset];\n\t  const last = this[offset + 7];\n\t  if (first === undefined || last === undefined) {\n\t    boundsError(offset, this.length - 8);\n\t  }\n\n\t  const val = (first << 24) + // Overflow\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset];\n\n\t  return (BigInt(val) << BigInt(32)) +\n\t    BigInt(this[++offset] * 2 ** 24 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 8 +\n\t    last)\n\t});\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\t  return ieee754$1.read(this, offset, true, 23, 4)\n\t};\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\t  return ieee754$1.read(this, offset, false, 23, 4)\n\t};\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 8, this.length);\n\t  return ieee754$1.read(this, offset, true, 52, 8)\n\t};\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 8, this.length);\n\t  return ieee754$1.read(this, offset, false, 52, 8)\n\t};\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t}\n\n\tBuffer.prototype.writeUintLE =\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) {\n\t    const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t    checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t  }\n\n\t  let mul = 1;\n\t  let i = 0;\n\t  this[offset] = value & 0xFF;\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    this[offset + i] = (value / mul) & 0xFF;\n\t  }\n\n\t  return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUintBE =\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) {\n\t    const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t    checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t  }\n\n\t  let i = byteLength - 1;\n\t  let mul = 1;\n\t  this[offset + i] = value & 0xFF;\n\t  while (--i >= 0 && (mul *= 0x100)) {\n\t    this[offset + i] = (value / mul) & 0xFF;\n\t  }\n\n\t  return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUint8 =\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n\t  this[offset] = (value & 0xff);\n\t  return offset + 1\n\t};\n\n\tBuffer.prototype.writeUint16LE =\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t  this[offset] = (value & 0xff);\n\t  this[offset + 1] = (value >>> 8);\n\t  return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint16BE =\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t  this[offset] = (value >>> 8);\n\t  this[offset + 1] = (value & 0xff);\n\t  return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint32LE =\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t  this[offset + 3] = (value >>> 24);\n\t  this[offset + 2] = (value >>> 16);\n\t  this[offset + 1] = (value >>> 8);\n\t  this[offset] = (value & 0xff);\n\t  return offset + 4\n\t};\n\n\tBuffer.prototype.writeUint32BE =\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t  this[offset] = (value >>> 24);\n\t  this[offset + 1] = (value >>> 16);\n\t  this[offset + 2] = (value >>> 8);\n\t  this[offset + 3] = (value & 0xff);\n\t  return offset + 4\n\t};\n\n\tfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n\t  checkIntBI(value, min, max, buf, offset, 7);\n\n\t  let lo = Number(value & BigInt(0xffffffff));\n\t  buf[offset++] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset++] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset++] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset++] = lo;\n\t  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t  buf[offset++] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset++] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset++] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset++] = hi;\n\t  return offset\n\t}\n\n\tfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n\t  checkIntBI(value, min, max, buf, offset, 7);\n\n\t  let lo = Number(value & BigInt(0xffffffff));\n\t  buf[offset + 7] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset + 6] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset + 5] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset + 4] = lo;\n\t  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t  buf[offset + 3] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset + 2] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset + 1] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset] = hi;\n\t  return offset + 8\n\t}\n\n\tBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n\t  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n\t  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) {\n\t    const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t    checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t  }\n\n\t  let i = 0;\n\t  let mul = 1;\n\t  let sub = 0;\n\t  this[offset] = value & 0xFF;\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t      sub = 1;\n\t    }\n\t    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t  }\n\n\t  return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) {\n\t    const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t    checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t  }\n\n\t  let i = byteLength - 1;\n\t  let mul = 1;\n\t  let sub = 0;\n\t  this[offset + i] = value & 0xFF;\n\t  while (--i >= 0 && (mul *= 0x100)) {\n\t    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t      sub = 1;\n\t    }\n\t    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t  }\n\n\t  return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n\t  if (value < 0) value = 0xff + value + 1;\n\t  this[offset] = (value & 0xff);\n\t  return offset + 1\n\t};\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t  this[offset] = (value & 0xff);\n\t  this[offset + 1] = (value >>> 8);\n\t  return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t  this[offset] = (value >>> 8);\n\t  this[offset + 1] = (value & 0xff);\n\t  return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t  this[offset] = (value & 0xff);\n\t  this[offset + 1] = (value >>> 8);\n\t  this[offset + 2] = (value >>> 16);\n\t  this[offset + 3] = (value >>> 24);\n\t  return offset + 4\n\t};\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t  if (value < 0) value = 0xffffffff + value + 1;\n\t  this[offset] = (value >>> 24);\n\t  this[offset + 1] = (value >>> 16);\n\t  this[offset + 2] = (value >>> 8);\n\t  this[offset + 3] = (value & 0xff);\n\t  return offset + 4\n\t};\n\n\tBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n\t  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n\t  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t  if (offset < 0) throw new RangeError('Index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) {\n\t    checkIEEE754(buf, value, offset, 4);\n\t  }\n\t  ieee754$1.write(buf, value, offset, littleEndian, 23, 4);\n\t  return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t  return writeFloat(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t  return writeFloat(this, value, offset, false, noAssert)\n\t};\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) {\n\t    checkIEEE754(buf, value, offset, 8);\n\t  }\n\t  ieee754$1.write(buf, value, offset, littleEndian, 52, 8);\n\t  return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t  return writeDouble(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t  return writeDouble(this, value, offset, false, noAssert)\n\t};\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n\t  if (!start) start = 0;\n\t  if (!end && end !== 0) end = this.length;\n\t  if (targetStart >= target.length) targetStart = target.length;\n\t  if (!targetStart) targetStart = 0;\n\t  if (end > 0 && end < start) end = start;\n\n\t  // Copy 0 bytes; we're done\n\t  if (end === start) return 0\n\t  if (target.length === 0 || this.length === 0) return 0\n\n\t  // Fatal error conditions\n\t  if (targetStart < 0) {\n\t    throw new RangeError('targetStart out of bounds')\n\t  }\n\t  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n\t  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t  // Are we oob?\n\t  if (end > this.length) end = this.length;\n\t  if (target.length - targetStart < end - start) {\n\t    end = target.length - targetStart + start;\n\t  }\n\n\t  const len = end - start;\n\n\t  if (this === target && typeof GlobalUint8Array.prototype.copyWithin === 'function') {\n\t    // Use built-in when available, missing from IE11\n\t    this.copyWithin(targetStart, start, end);\n\t  } else {\n\t    GlobalUint8Array.prototype.set.call(\n\t      target,\n\t      this.subarray(start, end),\n\t      targetStart\n\t    );\n\t  }\n\n\t  return len\n\t};\n\n\t// Usage:\n\t//    buffer.fill(number[, offset[, end]])\n\t//    buffer.fill(buffer[, offset[, end]])\n\t//    buffer.fill(string[, offset[, end]][, encoding])\n\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t  // Handle string cases:\n\t  if (typeof val === 'string') {\n\t    if (typeof start === 'string') {\n\t      encoding = start;\n\t      start = 0;\n\t      end = this.length;\n\t    } else if (typeof end === 'string') {\n\t      encoding = end;\n\t      end = this.length;\n\t    }\n\t    if (encoding !== undefined && typeof encoding !== 'string') {\n\t      throw new TypeError('encoding must be a string')\n\t    }\n\t    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t      throw new TypeError('Unknown encoding: ' + encoding)\n\t    }\n\t    if (val.length === 1) {\n\t      const code = val.charCodeAt(0);\n\t      if ((encoding === 'utf8' && code < 128) ||\n\t          encoding === 'latin1') {\n\t        // Fast path: If `val` fits into a single byte, use that numeric value.\n\t        val = code;\n\t      }\n\t    }\n\t  } else if (typeof val === 'number') {\n\t    val = val & 255;\n\t  } else if (typeof val === 'boolean') {\n\t    val = Number(val);\n\t  }\n\n\t  // Invalid ranges are not set to a default, so can range check early.\n\t  if (start < 0 || this.length < start || this.length < end) {\n\t    throw new RangeError('Out of range index')\n\t  }\n\n\t  if (end <= start) {\n\t    return this\n\t  }\n\n\t  start = start >>> 0;\n\t  end = end === undefined ? this.length : end >>> 0;\n\n\t  if (!val) val = 0;\n\n\t  let i;\n\t  if (typeof val === 'number') {\n\t    for (i = start; i < end; ++i) {\n\t      this[i] = val;\n\t    }\n\t  } else {\n\t    const bytes = Buffer.isBuffer(val)\n\t      ? val\n\t      : Buffer.from(val, encoding);\n\t    const len = bytes.length;\n\t    if (len === 0) {\n\t      throw new TypeError('The value \"' + val +\n\t        '\" is invalid for argument \"value\"')\n\t    }\n\t    for (i = 0; i < end - start; ++i) {\n\t      this[i + start] = bytes[i % len];\n\t    }\n\t  }\n\n\t  return this\n\t};\n\n\t// CUSTOM ERRORS\n\t// =============\n\n\t// Simplified versions from Node, changed for Buffer-only usage\n\tconst errors = {};\n\tfunction E (sym, getMessage, Base) {\n\t  errors[sym] = class NodeError extends Base {\n\t    constructor () {\n\t      super();\n\n\t      Object.defineProperty(this, 'message', {\n\t        value: getMessage.apply(this, arguments),\n\t        writable: true,\n\t        configurable: true\n\t      });\n\n\t      // Add the error code to the name to include it in the stack trace.\n\t      this.name = `${this.name} [${sym}]`;\n\t      // Access the stack to generate the error message including the error code\n\t      // from the name.\n\t      this.stack; // eslint-disable-line no-unused-expressions\n\t      // Reset the name to the actual name.\n\t      delete this.name;\n\t    }\n\n\t    get code () {\n\t      return sym\n\t    }\n\n\t    set code (value) {\n\t      Object.defineProperty(this, 'code', {\n\t        configurable: true,\n\t        enumerable: true,\n\t        value,\n\t        writable: true\n\t      });\n\t    }\n\n\t    toString () {\n\t      return `${this.name} [${sym}]: ${this.message}`\n\t    }\n\t  };\n\t}\n\n\tE('ERR_BUFFER_OUT_OF_BOUNDS',\n\t  function (name) {\n\t    if (name) {\n\t      return `${name} is outside of buffer bounds`\n\t    }\n\n\t    return 'Attempt to access memory outside buffer bounds'\n\t  }, RangeError);\n\tE('ERR_INVALID_ARG_TYPE',\n\t  function (name, actual) {\n\t    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n\t  }, TypeError);\n\tE('ERR_OUT_OF_RANGE',\n\t  function (str, range, input) {\n\t    let msg = `The value of \"${str}\" is out of range.`;\n\t    let received = input;\n\t    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n\t      received = addNumericalSeparator(String(input));\n\t    } else if (typeof input === 'bigint') {\n\t      received = String(input);\n\t      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n\t        received = addNumericalSeparator(received);\n\t      }\n\t      received += 'n';\n\t    }\n\t    msg += ` It must be ${range}. Received ${received}`;\n\t    return msg\n\t  }, RangeError);\n\n\tfunction addNumericalSeparator (val) {\n\t  let res = '';\n\t  let i = val.length;\n\t  const start = val[0] === '-' ? 1 : 0;\n\t  for (; i >= start + 4; i -= 3) {\n\t    res = `_${val.slice(i - 3, i)}${res}`;\n\t  }\n\t  return `${val.slice(0, i)}${res}`\n\t}\n\n\t// CHECK FUNCTIONS\n\t// ===============\n\n\tfunction checkBounds (buf, offset, byteLength) {\n\t  validateNumber(offset, 'offset');\n\t  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n\t    boundsError(offset, buf.length - (byteLength + 1));\n\t  }\n\t}\n\n\tfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n\t  if (value > max || value < min) {\n\t    const n = typeof min === 'bigint' ? 'n' : '';\n\t    let range;\n\t    if (byteLength > 3) {\n\t      if (min === 0 || min === BigInt(0)) {\n\t        range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n\t      } else {\n\t        range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n\t                `${(byteLength + 1) * 8 - 1}${n}`;\n\t      }\n\t    } else {\n\t      range = `>= ${min}${n} and <= ${max}${n}`;\n\t    }\n\t    throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n\t  }\n\t  checkBounds(buf, offset, byteLength);\n\t}\n\n\tfunction validateNumber (value, name) {\n\t  if (typeof value !== 'number') {\n\t    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n\t  }\n\t}\n\n\tfunction boundsError (value, length, type) {\n\t  if (Math.floor(value) !== value) {\n\t    validateNumber(value, type);\n\t    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n\t  }\n\n\t  if (length < 0) {\n\t    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n\t  }\n\n\t  throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n\t                                    `>= ${type ? 1 : 0} and <= ${length}`,\n\t                                    value)\n\t}\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n\tfunction base64clean (str) {\n\t  // Node takes equal signs as end of the Base64 encoding\n\t  str = str.split('=')[0];\n\t  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t  str = str.trim().replace(INVALID_BASE64_RE, '');\n\t  // Node converts strings with length < 2 to ''\n\t  if (str.length < 2) return ''\n\t  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t  while (str.length % 4 !== 0) {\n\t    str = str + '=';\n\t  }\n\t  return str\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t  units = units || Infinity;\n\t  let codePoint;\n\t  const length = string.length;\n\t  let leadSurrogate = null;\n\t  const bytes = [];\n\n\t  for (let i = 0; i < length; ++i) {\n\t    codePoint = string.charCodeAt(i);\n\n\t    // is surrogate component\n\t    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t      // last char was a lead\n\t      if (!leadSurrogate) {\n\t        // no lead yet\n\t        if (codePoint > 0xDBFF) {\n\t          // unexpected trail\n\t          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t          continue\n\t        } else if (i + 1 === length) {\n\t          // unpaired lead\n\t          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t          continue\n\t        }\n\n\t        // valid lead\n\t        leadSurrogate = codePoint;\n\n\t        continue\n\t      }\n\n\t      // 2 leads in a row\n\t      if (codePoint < 0xDC00) {\n\t        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t        leadSurrogate = codePoint;\n\t        continue\n\t      }\n\n\t      // valid surrogate pair\n\t      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t    } else if (leadSurrogate) {\n\t      // valid bmp char, but last char was a lead\n\t      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t    }\n\n\t    leadSurrogate = null;\n\n\t    // encode utf8\n\t    if (codePoint < 0x80) {\n\t      if ((units -= 1) < 0) break\n\t      bytes.push(codePoint);\n\t    } else if (codePoint < 0x800) {\n\t      if ((units -= 2) < 0) break\n\t      bytes.push(\n\t        codePoint >> 0x6 | 0xC0,\n\t        codePoint & 0x3F | 0x80\n\t      );\n\t    } else if (codePoint < 0x10000) {\n\t      if ((units -= 3) < 0) break\n\t      bytes.push(\n\t        codePoint >> 0xC | 0xE0,\n\t        codePoint >> 0x6 & 0x3F | 0x80,\n\t        codePoint & 0x3F | 0x80\n\t      );\n\t    } else if (codePoint < 0x110000) {\n\t      if ((units -= 4) < 0) break\n\t      bytes.push(\n\t        codePoint >> 0x12 | 0xF0,\n\t        codePoint >> 0xC & 0x3F | 0x80,\n\t        codePoint >> 0x6 & 0x3F | 0x80,\n\t        codePoint & 0x3F | 0x80\n\t      );\n\t    } else {\n\t      throw new Error('Invalid code point')\n\t    }\n\t  }\n\n\t  return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t  const byteArray = [];\n\t  for (let i = 0; i < str.length; ++i) {\n\t    // Node's code seems to be doing this and not & 0x7F..\n\t    byteArray.push(str.charCodeAt(i) & 0xFF);\n\t  }\n\t  return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t  let c, hi, lo;\n\t  const byteArray = [];\n\t  for (let i = 0; i < str.length; ++i) {\n\t    if ((units -= 2) < 0) break\n\n\t    c = str.charCodeAt(i);\n\t    hi = c >> 8;\n\t    lo = c % 256;\n\t    byteArray.push(lo);\n\t    byteArray.push(hi);\n\t  }\n\n\t  return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t  return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t  let i;\n\t  for (i = 0; i < length; ++i) {\n\t    if ((i + offset >= dst.length) || (i >= src.length)) break\n\t    dst[i + offset] = src[i];\n\t  }\n\t  return i\n\t}\n\n\t// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n\t// the `instanceof` check but they should be treated as of that type.\n\t// See: https://github.com/feross/buffer/issues/166\n\tfunction isInstance (obj, type) {\n\t  return obj instanceof type ||\n\t    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n\t      obj.constructor.name === type.name)\n\t}\n\tfunction numberIsNaN (obj) {\n\t  // For IE11 support\n\t  return obj !== obj // eslint-disable-line no-self-compare\n\t}\n\n\t// Create lookup table for `toString('hex')`\n\t// See: https://github.com/feross/buffer/issues/219\n\tconst hexSliceLookupTable = (function () {\n\t  const alphabet = '0123456789abcdef';\n\t  const table = new Array(256);\n\t  for (let i = 0; i < 16; ++i) {\n\t    const i16 = i * 16;\n\t    for (let j = 0; j < 16; ++j) {\n\t      table[i16 + j] = alphabet[i] + alphabet[j];\n\t    }\n\t  }\n\t  return table\n\t})();\n\n\t// Return not function with Error if BigInt not supported\n\tfunction defineBigIntMethod (fn) {\n\t  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n\t}\n\n\tfunction BufferBigIntNotDefined () {\n\t  throw new Error('BigInt not supported')\n\t} \n} (buffer));\n\nconst Buffer = buffer.Buffer;\n\nconst Blob = buffer.Blob;\nconst BlobOptions = buffer.BlobOptions;\nconst Buffer$1 = buffer.Buffer;\nconst File = buffer.File;\nconst FileOptions = buffer.FileOptions;\nconst INSPECT_MAX_BYTES = buffer.INSPECT_MAX_BYTES;\nconst SlowBuffer = buffer.SlowBuffer;\nconst TranscodeEncoding = buffer.TranscodeEncoding;\nconst atob = buffer.atob;\nconst btoa = buffer.btoa;\nconst constants = buffer.constants;\nconst isAscii = buffer.isAscii;\nconst isUtf8 = buffer.isUtf8;\nconst kMaxLength = buffer.kMaxLength;\nconst kStringMaxLength = buffer.kStringMaxLength;\nconst resolveObjectURL = buffer.resolveObjectURL;\nconst transcode = buffer.transcode;\nexport { Blob, BlobOptions, Buffer$1 as Buffer, File, FileOptions, INSPECT_MAX_BYTES, SlowBuffer, TranscodeEncoding, atob, btoa, constants, Buffer as default, isAscii, isUtf8, kMaxLength, kStringMaxLength, resolveObjectURL, transcode };\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });\n\nvar buffer = {};\n\nvar base64Js = {};\n\nbase64Js.byteLength = byteLength;\nbase64Js.toByteArray = toByteArray;\nbase64Js.fromByteArray = fromByteArray;\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfor (var i = 0, len = code.length; i < len; ++i) {\n  lookup[i] = code[i];\n  revLookup[code.charCodeAt(i)] = i;\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens (b64) {\n  var len = b64.length;\n\n  if (len % 4 > 0) {\n    throw new Error('Invalid string. Length must be a multiple of 4')\n  }\n\n  // Trim off extra bytes after placeholder bytes are found\n  // See: https://github.com/beatgammit/base64-js/issues/42\n  var validLen = b64.indexOf('=');\n  if (validLen === -1) validLen = len;\n\n  var placeHoldersLen = validLen === len\n    ? 0\n    : 4 - (validLen % 4);\n\n  return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n  var lens = getLens(b64);\n  var validLen = lens[0];\n  var placeHoldersLen = lens[1];\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n  return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n  var tmp;\n  var lens = getLens(b64);\n  var validLen = lens[0];\n  var placeHoldersLen = lens[1];\n\n  var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n\n  var curByte = 0;\n\n  // if there are placeholders, only get up to the last complete 4 chars\n  var len = placeHoldersLen > 0\n    ? validLen - 4\n    : validLen;\n\n  var i;\n  for (i = 0; i < len; i += 4) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 18) |\n      (revLookup[b64.charCodeAt(i + 1)] << 12) |\n      (revLookup[b64.charCodeAt(i + 2)] << 6) |\n      revLookup[b64.charCodeAt(i + 3)];\n    arr[curByte++] = (tmp >> 16) & 0xFF;\n    arr[curByte++] = (tmp >> 8) & 0xFF;\n    arr[curByte++] = tmp & 0xFF;\n  }\n\n  if (placeHoldersLen === 2) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 2) |\n      (revLookup[b64.charCodeAt(i + 1)] >> 4);\n    arr[curByte++] = tmp & 0xFF;\n  }\n\n  if (placeHoldersLen === 1) {\n    tmp =\n      (revLookup[b64.charCodeAt(i)] << 10) |\n      (revLookup[b64.charCodeAt(i + 1)] << 4) |\n      (revLookup[b64.charCodeAt(i + 2)] >> 2);\n    arr[curByte++] = (tmp >> 8) & 0xFF;\n    arr[curByte++] = tmp & 0xFF;\n  }\n\n  return arr\n}\n\nfunction tripletToBase64 (num) {\n  return lookup[num >> 18 & 0x3F] +\n    lookup[num >> 12 & 0x3F] +\n    lookup[num >> 6 & 0x3F] +\n    lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n  var tmp;\n  var output = [];\n  for (var i = start; i < end; i += 3) {\n    tmp =\n      ((uint8[i] << 16) & 0xFF0000) +\n      ((uint8[i + 1] << 8) & 0xFF00) +\n      (uint8[i + 2] & 0xFF);\n    output.push(tripletToBase64(tmp));\n  }\n  return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n  var tmp;\n  var len = uint8.length;\n  var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n  var parts = [];\n  var maxChunkLength = 16383; // must be multiple of 3\n\n  // go through the array every three bytes, we'll deal with trailing stuff later\n  for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n    parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n  }\n\n  // pad the end with zeros, but make sure to not forget the extra bytes\n  if (extraBytes === 1) {\n    tmp = uint8[len - 1];\n    parts.push(\n      lookup[tmp >> 2] +\n      lookup[(tmp << 4) & 0x3F] +\n      '=='\n    );\n  } else if (extraBytes === 2) {\n    tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n    parts.push(\n      lookup[tmp >> 10] +\n      lookup[(tmp >> 4) & 0x3F] +\n      lookup[(tmp << 2) & 0x3F] +\n      '='\n    );\n  }\n\n  return parts.join('')\n}\n\nvar ieee754 = {};\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */\n\nieee754.read = function (buffer, offset, isLE, mLen, nBytes) {\n  var e, m;\n  var eLen = (nBytes * 8) - mLen - 1;\n  var eMax = (1 << eLen) - 1;\n  var eBias = eMax >> 1;\n  var nBits = -7;\n  var i = isLE ? (nBytes - 1) : 0;\n  var d = isLE ? -1 : 1;\n  var s = buffer[offset + i];\n\n  i += d;\n\n  e = s & ((1 << (-nBits)) - 1);\n  s >>= (-nBits);\n  nBits += eLen;\n  for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  m = e & ((1 << (-nBits)) - 1);\n  e >>= (-nBits);\n  nBits += mLen;\n  for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n  if (e === 0) {\n    e = 1 - eBias;\n  } else if (e === eMax) {\n    return m ? NaN : ((s ? -1 : 1) * Infinity)\n  } else {\n    m = m + Math.pow(2, mLen);\n    e = e - eBias;\n  }\n  return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n};\n\nieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n  var e, m, c;\n  var eLen = (nBytes * 8) - mLen - 1;\n  var eMax = (1 << eLen) - 1;\n  var eBias = eMax >> 1;\n  var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n  var i = isLE ? 0 : (nBytes - 1);\n  var d = isLE ? 1 : -1;\n  var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n  value = Math.abs(value);\n\n  if (isNaN(value) || value === Infinity) {\n    m = isNaN(value) ? 1 : 0;\n    e = eMax;\n  } else {\n    e = Math.floor(Math.log(value) / Math.LN2);\n    if (value * (c = Math.pow(2, -e)) < 1) {\n      e--;\n      c *= 2;\n    }\n    if (e + eBias >= 1) {\n      value += rt / c;\n    } else {\n      value += rt * Math.pow(2, 1 - eBias);\n    }\n    if (value * c >= 2) {\n      e++;\n      c /= 2;\n    }\n\n    if (e + eBias >= eMax) {\n      m = 0;\n      e = eMax;\n    } else if (e + eBias >= 1) {\n      m = ((value * c) - 1) * Math.pow(2, mLen);\n      e = e + eBias;\n    } else {\n      m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n      e = 0;\n    }\n  }\n\n  for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n  e = (e << mLen) | m;\n  eLen += mLen;\n  for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n  buffer[offset + i - d] |= s * 128;\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author   Feross Aboukhadijeh <https://feross.org>\n * @license  MIT\n */\n\n(function (exports) {\n\n\tconst base64 = base64Js;\n\tconst ieee754$1 = ieee754;\n\tconst customInspectSymbol =\n\t  (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n\t    ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n\t    : null;\n\n\texports.Buffer = Buffer;\n\texports.SlowBuffer = SlowBuffer;\n\texports.INSPECT_MAX_BYTES = 50;\n\n\tconst K_MAX_LENGTH = 0x7fffffff;\n\texports.kMaxLength = K_MAX_LENGTH;\n\tconst { Uint8Array: GlobalUint8Array, ArrayBuffer: GlobalArrayBuffer, SharedArrayBuffer: GlobalSharedArrayBuffer } = globalThis;\n\n\t/**\n\t * If `Buffer.TYPED_ARRAY_SUPPORT`:\n\t *   === true    Use Uint8Array implementation (fastest)\n\t *   === false   Print warning and recommend using `buffer` v4.x which has an Object\n\t *               implementation (most compatible, even IE6)\n\t *\n\t * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n\t * Opera 11.6+, iOS 4.2+.\n\t *\n\t * We report that the browser does not support typed arrays if the are not subclassable\n\t * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n\t * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n\t * for __proto__ and has a buggy typed array implementation.\n\t */\n\tBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\n\tif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n\t    typeof console.error === 'function') {\n\t  console.error(\n\t    'This browser lacks typed array (Uint8Array) support which is required by ' +\n\t    '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n\t  );\n\t}\n\n\tfunction typedArraySupport () {\n\t  // Can typed array instances can be augmented?\n\t  try {\n\t    const arr = new GlobalUint8Array(1);\n\t    const proto = { foo: function () { return 42 } };\n\t    Object.setPrototypeOf(proto, GlobalUint8Array.prototype);\n\t    Object.setPrototypeOf(arr, proto);\n\t    return arr.foo() === 42\n\t  } catch (e) {\n\t    return false\n\t  }\n\t}\n\n\tObject.defineProperty(Buffer.prototype, 'parent', {\n\t  enumerable: true,\n\t  get: function () {\n\t    if (!Buffer.isBuffer(this)) return undefined\n\t    return this.buffer\n\t  }\n\t});\n\n\tObject.defineProperty(Buffer.prototype, 'offset', {\n\t  enumerable: true,\n\t  get: function () {\n\t    if (!Buffer.isBuffer(this)) return undefined\n\t    return this.byteOffset\n\t  }\n\t});\n\n\tfunction createBuffer (length) {\n\t  if (length > K_MAX_LENGTH) {\n\t    throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n\t  }\n\t  // Return an augmented `Uint8Array` instance\n\t  const buf = new GlobalUint8Array(length);\n\t  Object.setPrototypeOf(buf, Buffer.prototype);\n\t  return buf\n\t}\n\n\t/**\n\t * The Buffer constructor returns instances of `Uint8Array` that have their\n\t * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n\t * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n\t * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n\t * returns a single octet.\n\t *\n\t * The `Uint8Array` prototype remains unmodified.\n\t */\n\n\tfunction Buffer (arg, encodingOrOffset, length) {\n\t  // Common case.\n\t  if (typeof arg === 'number') {\n\t    if (typeof encodingOrOffset === 'string') {\n\t      throw new TypeError(\n\t        'The \"string\" argument must be of type string. Received type number'\n\t      )\n\t    }\n\t    return allocUnsafe(arg)\n\t  }\n\t  return from(arg, encodingOrOffset, length)\n\t}\n\n\tBuffer.poolSize = 8192; // not used by this implementation\n\n\tfunction from (value, encodingOrOffset, length) {\n\t  if (typeof value === 'string') {\n\t    return fromString(value, encodingOrOffset)\n\t  }\n\n\t  if (GlobalArrayBuffer.isView(value)) {\n\t    return fromArrayView(value)\n\t  }\n\n\t  if (value == null) {\n\t    throw new TypeError(\n\t      'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t      'or Array-like Object. Received type ' + (typeof value)\n\t    )\n\t  }\n\n\t  if (isInstance(value, GlobalArrayBuffer) ||\n\t      (value && isInstance(value.buffer, GlobalArrayBuffer))) {\n\t    return fromArrayBuffer(value, encodingOrOffset, length)\n\t  }\n\n\t  if (typeof GlobalSharedArrayBuffer !== 'undefined' &&\n\t      (isInstance(value, GlobalSharedArrayBuffer) ||\n\t      (value && isInstance(value.buffer, GlobalSharedArrayBuffer)))) {\n\t    return fromArrayBuffer(value, encodingOrOffset, length)\n\t  }\n\n\t  if (typeof value === 'number') {\n\t    throw new TypeError(\n\t      'The \"value\" argument must not be of type number. Received type number'\n\t    )\n\t  }\n\n\t  const valueOf = value.valueOf && value.valueOf();\n\t  if (valueOf != null && valueOf !== value) {\n\t    return Buffer.from(valueOf, encodingOrOffset, length)\n\t  }\n\n\t  const b = fromObject(value);\n\t  if (b) return b\n\n\t  if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n\t      typeof value[Symbol.toPrimitive] === 'function') {\n\t    return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n\t  }\n\n\t  throw new TypeError(\n\t    'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n\t    'or Array-like Object. Received type ' + (typeof value)\n\t  )\n\t}\n\n\t/**\n\t * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n\t * if value is a number.\n\t * Buffer.from(str[, encoding])\n\t * Buffer.from(array)\n\t * Buffer.from(buffer)\n\t * Buffer.from(arrayBuffer[, byteOffset[, length]])\n\t **/\n\tBuffer.from = function (value, encodingOrOffset, length) {\n\t  return from(value, encodingOrOffset, length)\n\t};\n\n\t// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n\t// https://github.com/feross/buffer/pull/148\n\tObject.setPrototypeOf(Buffer.prototype, GlobalUint8Array.prototype);\n\tObject.setPrototypeOf(Buffer, GlobalUint8Array);\n\n\tfunction assertSize (size) {\n\t  if (typeof size !== 'number') {\n\t    throw new TypeError('\"size\" argument must be of type number')\n\t  } else if (size < 0) {\n\t    throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n\t  }\n\t}\n\n\tfunction alloc (size, fill, encoding) {\n\t  assertSize(size);\n\t  if (size <= 0) {\n\t    return createBuffer(size)\n\t  }\n\t  if (fill !== undefined) {\n\t    // Only pay attention to encoding if it's a string. This\n\t    // prevents accidentally sending in a number that would\n\t    // be interpreted as a start offset.\n\t    return typeof encoding === 'string'\n\t      ? createBuffer(size).fill(fill, encoding)\n\t      : createBuffer(size).fill(fill)\n\t  }\n\t  return createBuffer(size)\n\t}\n\n\t/**\n\t * Creates a new filled Buffer instance.\n\t * alloc(size[, fill[, encoding]])\n\t **/\n\tBuffer.alloc = function (size, fill, encoding) {\n\t  return alloc(size, fill, encoding)\n\t};\n\n\tfunction allocUnsafe (size) {\n\t  assertSize(size);\n\t  return createBuffer(size < 0 ? 0 : checked(size) | 0)\n\t}\n\n\t/**\n\t * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n\t * */\n\tBuffer.allocUnsafe = function (size) {\n\t  return allocUnsafe(size)\n\t};\n\t/**\n\t * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n\t */\n\tBuffer.allocUnsafeSlow = function (size) {\n\t  return allocUnsafe(size)\n\t};\n\n\tfunction fromString (string, encoding) {\n\t  if (typeof encoding !== 'string' || encoding === '') {\n\t    encoding = 'utf8';\n\t  }\n\n\t  if (!Buffer.isEncoding(encoding)) {\n\t    throw new TypeError('Unknown encoding: ' + encoding)\n\t  }\n\n\t  const length = byteLength(string, encoding) | 0;\n\t  let buf = createBuffer(length);\n\n\t  const actual = buf.write(string, encoding);\n\n\t  if (actual !== length) {\n\t    // Writing a hex string, for example, that contains invalid characters will\n\t    // cause everything after the first invalid character to be ignored. (e.g.\n\t    // 'abxxcd' will be treated as 'ab')\n\t    buf = buf.slice(0, actual);\n\t  }\n\n\t  return buf\n\t}\n\n\tfunction fromArrayLike (array) {\n\t  const length = array.length < 0 ? 0 : checked(array.length) | 0;\n\t  const buf = createBuffer(length);\n\t  for (let i = 0; i < length; i += 1) {\n\t    buf[i] = array[i] & 255;\n\t  }\n\t  return buf\n\t}\n\n\tfunction fromArrayView (arrayView) {\n\t  if (isInstance(arrayView, GlobalUint8Array)) {\n\t    const copy = new GlobalUint8Array(arrayView);\n\t    return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n\t  }\n\t  return fromArrayLike(arrayView)\n\t}\n\n\tfunction fromArrayBuffer (array, byteOffset, length) {\n\t  if (byteOffset < 0 || array.byteLength < byteOffset) {\n\t    throw new RangeError('\"offset\" is outside of buffer bounds')\n\t  }\n\n\t  if (array.byteLength < byteOffset + (length || 0)) {\n\t    throw new RangeError('\"length\" is outside of buffer bounds')\n\t  }\n\n\t  let buf;\n\t  if (byteOffset === undefined && length === undefined) {\n\t    buf = new GlobalUint8Array(array);\n\t  } else if (length === undefined) {\n\t    buf = new GlobalUint8Array(array, byteOffset);\n\t  } else {\n\t    buf = new GlobalUint8Array(array, byteOffset, length);\n\t  }\n\n\t  // Return an augmented `Uint8Array` instance\n\t  Object.setPrototypeOf(buf, Buffer.prototype);\n\n\t  return buf\n\t}\n\n\tfunction fromObject (obj) {\n\t  if (Buffer.isBuffer(obj)) {\n\t    const len = checked(obj.length) | 0;\n\t    const buf = createBuffer(len);\n\n\t    if (buf.length === 0) {\n\t      return buf\n\t    }\n\n\t    obj.copy(buf, 0, 0, len);\n\t    return buf\n\t  }\n\n\t  if (obj.length !== undefined) {\n\t    if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n\t      return createBuffer(0)\n\t    }\n\t    return fromArrayLike(obj)\n\t  }\n\n\t  if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n\t    return fromArrayLike(obj.data)\n\t  }\n\t}\n\n\tfunction checked (length) {\n\t  // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n\t  // length is NaN (which is otherwise coerced to zero.)\n\t  if (length >= K_MAX_LENGTH) {\n\t    throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n\t                         'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n\t  }\n\t  return length | 0\n\t}\n\n\tfunction SlowBuffer (length) {\n\t  if (+length != length) { // eslint-disable-line eqeqeq\n\t    length = 0;\n\t  }\n\t  return Buffer.alloc(+length)\n\t}\n\n\tBuffer.isBuffer = function isBuffer (b) {\n\t  return b != null && b._isBuffer === true &&\n\t    b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n\t};\n\n\tBuffer.compare = function compare (a, b) {\n\t  if (isInstance(a, GlobalUint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n\t  if (isInstance(b, GlobalUint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n\t  if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n\t    throw new TypeError(\n\t      'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n\t    )\n\t  }\n\n\t  if (a === b) return 0\n\n\t  let x = a.length;\n\t  let y = b.length;\n\n\t  for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n\t    if (a[i] !== b[i]) {\n\t      x = a[i];\n\t      y = b[i];\n\t      break\n\t    }\n\t  }\n\n\t  if (x < y) return -1\n\t  if (y < x) return 1\n\t  return 0\n\t};\n\n\tBuffer.isEncoding = function isEncoding (encoding) {\n\t  switch (String(encoding).toLowerCase()) {\n\t    case 'hex':\n\t    case 'utf8':\n\t    case 'utf-8':\n\t    case 'ascii':\n\t    case 'latin1':\n\t    case 'binary':\n\t    case 'base64':\n\t    case 'ucs2':\n\t    case 'ucs-2':\n\t    case 'utf16le':\n\t    case 'utf-16le':\n\t      return true\n\t    default:\n\t      return false\n\t  }\n\t};\n\n\tBuffer.concat = function concat (list, length) {\n\t  if (!Array.isArray(list)) {\n\t    throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t  }\n\n\t  if (list.length === 0) {\n\t    return Buffer.alloc(0)\n\t  }\n\n\t  let i;\n\t  if (length === undefined) {\n\t    length = 0;\n\t    for (i = 0; i < list.length; ++i) {\n\t      length += list[i].length;\n\t    }\n\t  }\n\n\t  const buffer = Buffer.allocUnsafe(length);\n\t  let pos = 0;\n\t  for (i = 0; i < list.length; ++i) {\n\t    let buf = list[i];\n\t    if (isInstance(buf, GlobalUint8Array)) {\n\t      if (pos + buf.length > buffer.length) {\n\t        if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n\t        buf.copy(buffer, pos);\n\t      } else {\n\t        GlobalUint8Array.prototype.set.call(\n\t          buffer,\n\t          buf,\n\t          pos\n\t        );\n\t      }\n\t    } else if (!Buffer.isBuffer(buf)) {\n\t      throw new TypeError('\"list\" argument must be an Array of Buffers')\n\t    } else {\n\t      buf.copy(buffer, pos);\n\t    }\n\t    pos += buf.length;\n\t  }\n\t  return buffer\n\t};\n\n\tfunction byteLength (string, encoding) {\n\t  if (Buffer.isBuffer(string)) {\n\t    return string.length\n\t  }\n\t  if (GlobalArrayBuffer.isView(string) || isInstance(string, GlobalArrayBuffer)) {\n\t    return string.byteLength\n\t  }\n\t  if (typeof string !== 'string') {\n\t    throw new TypeError(\n\t      'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n\t      'Received type ' + typeof string\n\t    )\n\t  }\n\n\t  const len = string.length;\n\t  const mustMatch = (arguments.length > 2 && arguments[2] === true);\n\t  if (!mustMatch && len === 0) return 0\n\n\t  // Use a for loop to avoid recursion\n\t  let loweredCase = false;\n\t  for (;;) {\n\t    switch (encoding) {\n\t      case 'ascii':\n\t      case 'latin1':\n\t      case 'binary':\n\t        return len\n\t      case 'utf8':\n\t      case 'utf-8':\n\t        return utf8ToBytes(string).length\n\t      case 'ucs2':\n\t      case 'ucs-2':\n\t      case 'utf16le':\n\t      case 'utf-16le':\n\t        return len * 2\n\t      case 'hex':\n\t        return len >>> 1\n\t      case 'base64':\n\t        return base64ToBytes(string).length\n\t      default:\n\t        if (loweredCase) {\n\t          return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n\t        }\n\t        encoding = ('' + encoding).toLowerCase();\n\t        loweredCase = true;\n\t    }\n\t  }\n\t}\n\tBuffer.byteLength = byteLength;\n\n\tfunction slowToString (encoding, start, end) {\n\t  let loweredCase = false;\n\n\t  // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n\t  // property of a typed array.\n\n\t  // This behaves neither like String nor Uint8Array in that we set start/end\n\t  // to their upper/lower bounds if the value passed is out of range.\n\t  // undefined is handled specially as per ECMA-262 6th Edition,\n\t  // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n\t  if (start === undefined || start < 0) {\n\t    start = 0;\n\t  }\n\t  // Return early if start > this.length. Done here to prevent potential uint32\n\t  // coercion fail below.\n\t  if (start > this.length) {\n\t    return ''\n\t  }\n\n\t  if (end === undefined || end > this.length) {\n\t    end = this.length;\n\t  }\n\n\t  if (end <= 0) {\n\t    return ''\n\t  }\n\n\t  // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n\t  end >>>= 0;\n\t  start >>>= 0;\n\n\t  if (end <= start) {\n\t    return ''\n\t  }\n\n\t  if (!encoding) encoding = 'utf8';\n\n\t  while (true) {\n\t    switch (encoding) {\n\t      case 'hex':\n\t        return hexSlice(this, start, end)\n\n\t      case 'utf8':\n\t      case 'utf-8':\n\t        return utf8Slice(this, start, end)\n\n\t      case 'ascii':\n\t        return asciiSlice(this, start, end)\n\n\t      case 'latin1':\n\t      case 'binary':\n\t        return latin1Slice(this, start, end)\n\n\t      case 'base64':\n\t        return base64Slice(this, start, end)\n\n\t      case 'ucs2':\n\t      case 'ucs-2':\n\t      case 'utf16le':\n\t      case 'utf-16le':\n\t        return utf16leSlice(this, start, end)\n\n\t      default:\n\t        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t        encoding = (encoding + '').toLowerCase();\n\t        loweredCase = true;\n\t    }\n\t  }\n\t}\n\n\t// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n\t// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n\t// reliably in a browserify context because there could be multiple different\n\t// copies of the 'buffer' package in use. This method works even for Buffer\n\t// instances that were created from another copy of the `buffer` package.\n\t// See: https://github.com/feross/buffer/issues/154\n\tBuffer.prototype._isBuffer = true;\n\n\tfunction swap (b, n, m) {\n\t  const i = b[n];\n\t  b[n] = b[m];\n\t  b[m] = i;\n\t}\n\n\tBuffer.prototype.swap16 = function swap16 () {\n\t  const len = this.length;\n\t  if (len % 2 !== 0) {\n\t    throw new RangeError('Buffer size must be a multiple of 16-bits')\n\t  }\n\t  for (let i = 0; i < len; i += 2) {\n\t    swap(this, i, i + 1);\n\t  }\n\t  return this\n\t};\n\n\tBuffer.prototype.swap32 = function swap32 () {\n\t  const len = this.length;\n\t  if (len % 4 !== 0) {\n\t    throw new RangeError('Buffer size must be a multiple of 32-bits')\n\t  }\n\t  for (let i = 0; i < len; i += 4) {\n\t    swap(this, i, i + 3);\n\t    swap(this, i + 1, i + 2);\n\t  }\n\t  return this\n\t};\n\n\tBuffer.prototype.swap64 = function swap64 () {\n\t  const len = this.length;\n\t  if (len % 8 !== 0) {\n\t    throw new RangeError('Buffer size must be a multiple of 64-bits')\n\t  }\n\t  for (let i = 0; i < len; i += 8) {\n\t    swap(this, i, i + 7);\n\t    swap(this, i + 1, i + 6);\n\t    swap(this, i + 2, i + 5);\n\t    swap(this, i + 3, i + 4);\n\t  }\n\t  return this\n\t};\n\n\tBuffer.prototype.toString = function toString () {\n\t  const length = this.length;\n\t  if (length === 0) return ''\n\t  if (arguments.length === 0) return utf8Slice(this, 0, length)\n\t  return slowToString.apply(this, arguments)\n\t};\n\n\tBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\n\tBuffer.prototype.equals = function equals (b) {\n\t  if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n\t  if (this === b) return true\n\t  return Buffer.compare(this, b) === 0\n\t};\n\n\tBuffer.prototype.inspect = function inspect () {\n\t  let str = '';\n\t  const max = exports.INSPECT_MAX_BYTES;\n\t  str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n\t  if (this.length > max) str += ' ... ';\n\t  return '<Buffer ' + str + '>'\n\t};\n\tif (customInspectSymbol) {\n\t  Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n\t}\n\n\tBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n\t  if (isInstance(target, GlobalUint8Array)) {\n\t    target = Buffer.from(target, target.offset, target.byteLength);\n\t  }\n\t  if (!Buffer.isBuffer(target)) {\n\t    throw new TypeError(\n\t      'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n\t      'Received type ' + (typeof target)\n\t    )\n\t  }\n\n\t  if (start === undefined) {\n\t    start = 0;\n\t  }\n\t  if (end === undefined) {\n\t    end = target ? target.length : 0;\n\t  }\n\t  if (thisStart === undefined) {\n\t    thisStart = 0;\n\t  }\n\t  if (thisEnd === undefined) {\n\t    thisEnd = this.length;\n\t  }\n\n\t  if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n\t    throw new RangeError('out of range index')\n\t  }\n\n\t  if (thisStart >= thisEnd && start >= end) {\n\t    return 0\n\t  }\n\t  if (thisStart >= thisEnd) {\n\t    return -1\n\t  }\n\t  if (start >= end) {\n\t    return 1\n\t  }\n\n\t  start >>>= 0;\n\t  end >>>= 0;\n\t  thisStart >>>= 0;\n\t  thisEnd >>>= 0;\n\n\t  if (this === target) return 0\n\n\t  let x = thisEnd - thisStart;\n\t  let y = end - start;\n\t  const len = Math.min(x, y);\n\n\t  const thisCopy = this.slice(thisStart, thisEnd);\n\t  const targetCopy = target.slice(start, end);\n\n\t  for (let i = 0; i < len; ++i) {\n\t    if (thisCopy[i] !== targetCopy[i]) {\n\t      x = thisCopy[i];\n\t      y = targetCopy[i];\n\t      break\n\t    }\n\t  }\n\n\t  if (x < y) return -1\n\t  if (y < x) return 1\n\t  return 0\n\t};\n\n\t// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n\t// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n\t//\n\t// Arguments:\n\t// - buffer - a Buffer to search\n\t// - val - a string, Buffer, or number\n\t// - byteOffset - an index into `buffer`; will be clamped to an int32\n\t// - encoding - an optional encoding, relevant is val is a string\n\t// - dir - true for indexOf, false for lastIndexOf\n\tfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n\t  // Empty buffer means no match\n\t  if (buffer.length === 0) return -1\n\n\t  // Normalize byteOffset\n\t  if (typeof byteOffset === 'string') {\n\t    encoding = byteOffset;\n\t    byteOffset = 0;\n\t  } else if (byteOffset > 0x7fffffff) {\n\t    byteOffset = 0x7fffffff;\n\t  } else if (byteOffset < -0x80000000) {\n\t    byteOffset = -0x80000000;\n\t  }\n\t  byteOffset = +byteOffset; // Coerce to Number.\n\t  if (numberIsNaN(byteOffset)) {\n\t    // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n\t    byteOffset = dir ? 0 : (buffer.length - 1);\n\t  }\n\n\t  // Normalize byteOffset: negative offsets start from the end of the buffer\n\t  if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n\t  if (byteOffset >= buffer.length) {\n\t    if (dir) return -1\n\t    else byteOffset = buffer.length - 1;\n\t  } else if (byteOffset < 0) {\n\t    if (dir) byteOffset = 0;\n\t    else return -1\n\t  }\n\n\t  // Normalize val\n\t  if (typeof val === 'string') {\n\t    val = Buffer.from(val, encoding);\n\t  }\n\n\t  // Finally, search either indexOf (if dir is true) or lastIndexOf\n\t  if (Buffer.isBuffer(val)) {\n\t    // Special case: looking for empty string/buffer always fails\n\t    if (val.length === 0) {\n\t      return -1\n\t    }\n\t    return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n\t  } else if (typeof val === 'number') {\n\t    val = val & 0xFF; // Search for a byte value [0-255]\n\t    if (typeof GlobalUint8Array.prototype.indexOf === 'function') {\n\t      if (dir) {\n\t        return GlobalUint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n\t      } else {\n\t        return GlobalUint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n\t      }\n\t    }\n\t    return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n\t  }\n\n\t  throw new TypeError('val must be string, number or Buffer')\n\t}\n\n\tfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n\t  let indexSize = 1;\n\t  let arrLength = arr.length;\n\t  let valLength = val.length;\n\n\t  if (encoding !== undefined) {\n\t    encoding = String(encoding).toLowerCase();\n\t    if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n\t        encoding === 'utf16le' || encoding === 'utf-16le') {\n\t      if (arr.length < 2 || val.length < 2) {\n\t        return -1\n\t      }\n\t      indexSize = 2;\n\t      arrLength /= 2;\n\t      valLength /= 2;\n\t      byteOffset /= 2;\n\t    }\n\t  }\n\n\t  function read (buf, i) {\n\t    if (indexSize === 1) {\n\t      return buf[i]\n\t    } else {\n\t      return buf.readUInt16BE(i * indexSize)\n\t    }\n\t  }\n\n\t  let i;\n\t  if (dir) {\n\t    let foundIndex = -1;\n\t    for (i = byteOffset; i < arrLength; i++) {\n\t      if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n\t        if (foundIndex === -1) foundIndex = i;\n\t        if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n\t      } else {\n\t        if (foundIndex !== -1) i -= i - foundIndex;\n\t        foundIndex = -1;\n\t      }\n\t    }\n\t  } else {\n\t    if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n\t    for (i = byteOffset; i >= 0; i--) {\n\t      let found = true;\n\t      for (let j = 0; j < valLength; j++) {\n\t        if (read(arr, i + j) !== read(val, j)) {\n\t          found = false;\n\t          break\n\t        }\n\t      }\n\t      if (found) return i\n\t    }\n\t  }\n\n\t  return -1\n\t}\n\n\tBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n\t  return this.indexOf(val, byteOffset, encoding) !== -1\n\t};\n\n\tBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n\t  return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n\t};\n\n\tBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n\t  return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n\t};\n\n\tfunction hexWrite (buf, string, offset, length) {\n\t  offset = Number(offset) || 0;\n\t  const remaining = buf.length - offset;\n\t  if (!length) {\n\t    length = remaining;\n\t  } else {\n\t    length = Number(length);\n\t    if (length > remaining) {\n\t      length = remaining;\n\t    }\n\t  }\n\n\t  const strLen = string.length;\n\n\t  if (length > strLen / 2) {\n\t    length = strLen / 2;\n\t  }\n\t  let i;\n\t  for (i = 0; i < length; ++i) {\n\t    const parsed = parseInt(string.substr(i * 2, 2), 16);\n\t    if (numberIsNaN(parsed)) return i\n\t    buf[offset + i] = parsed;\n\t  }\n\t  return i\n\t}\n\n\tfunction utf8Write (buf, string, offset, length) {\n\t  return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tfunction asciiWrite (buf, string, offset, length) {\n\t  return blitBuffer(asciiToBytes(string), buf, offset, length)\n\t}\n\n\tfunction base64Write (buf, string, offset, length) {\n\t  return blitBuffer(base64ToBytes(string), buf, offset, length)\n\t}\n\n\tfunction ucs2Write (buf, string, offset, length) {\n\t  return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n\t}\n\n\tBuffer.prototype.write = function write (string, offset, length, encoding) {\n\t  // Buffer#write(string)\n\t  if (offset === undefined) {\n\t    encoding = 'utf8';\n\t    length = this.length;\n\t    offset = 0;\n\t  // Buffer#write(string, encoding)\n\t  } else if (length === undefined && typeof offset === 'string') {\n\t    encoding = offset;\n\t    length = this.length;\n\t    offset = 0;\n\t  // Buffer#write(string, offset[, length][, encoding])\n\t  } else if (isFinite(offset)) {\n\t    offset = offset >>> 0;\n\t    if (isFinite(length)) {\n\t      length = length >>> 0;\n\t      if (encoding === undefined) encoding = 'utf8';\n\t    } else {\n\t      encoding = length;\n\t      length = undefined;\n\t    }\n\t  } else {\n\t    throw new Error(\n\t      'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n\t    )\n\t  }\n\n\t  const remaining = this.length - offset;\n\t  if (length === undefined || length > remaining) length = remaining;\n\n\t  if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n\t    throw new RangeError('Attempt to write outside buffer bounds')\n\t  }\n\n\t  if (!encoding) encoding = 'utf8';\n\n\t  let loweredCase = false;\n\t  for (;;) {\n\t    switch (encoding) {\n\t      case 'hex':\n\t        return hexWrite(this, string, offset, length)\n\n\t      case 'utf8':\n\t      case 'utf-8':\n\t        return utf8Write(this, string, offset, length)\n\n\t      case 'ascii':\n\t      case 'latin1':\n\t      case 'binary':\n\t        return asciiWrite(this, string, offset, length)\n\n\t      case 'base64':\n\t        // Warning: maxLength not taken into account in base64Write\n\t        return base64Write(this, string, offset, length)\n\n\t      case 'ucs2':\n\t      case 'ucs-2':\n\t      case 'utf16le':\n\t      case 'utf-16le':\n\t        return ucs2Write(this, string, offset, length)\n\n\t      default:\n\t        if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n\t        encoding = ('' + encoding).toLowerCase();\n\t        loweredCase = true;\n\t    }\n\t  }\n\t};\n\n\tBuffer.prototype.toJSON = function toJSON () {\n\t  return {\n\t    type: 'Buffer',\n\t    data: Array.prototype.slice.call(this._arr || this, 0)\n\t  }\n\t};\n\n\tfunction base64Slice (buf, start, end) {\n\t  if (start === 0 && end === buf.length) {\n\t    return base64.fromByteArray(buf)\n\t  } else {\n\t    return base64.fromByteArray(buf.slice(start, end))\n\t  }\n\t}\n\n\tfunction utf8Slice (buf, start, end) {\n\t  end = Math.min(buf.length, end);\n\t  const res = [];\n\n\t  let i = start;\n\t  while (i < end) {\n\t    const firstByte = buf[i];\n\t    let codePoint = null;\n\t    let bytesPerSequence = (firstByte > 0xEF)\n\t      ? 4\n\t      : (firstByte > 0xDF)\n\t          ? 3\n\t          : (firstByte > 0xBF)\n\t              ? 2\n\t              : 1;\n\n\t    if (i + bytesPerSequence <= end) {\n\t      let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n\t      switch (bytesPerSequence) {\n\t        case 1:\n\t          if (firstByte < 0x80) {\n\t            codePoint = firstByte;\n\t          }\n\t          break\n\t        case 2:\n\t          secondByte = buf[i + 1];\n\t          if ((secondByte & 0xC0) === 0x80) {\n\t            tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n\t            if (tempCodePoint > 0x7F) {\n\t              codePoint = tempCodePoint;\n\t            }\n\t          }\n\t          break\n\t        case 3:\n\t          secondByte = buf[i + 1];\n\t          thirdByte = buf[i + 2];\n\t          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n\t            tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n\t            if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n\t              codePoint = tempCodePoint;\n\t            }\n\t          }\n\t          break\n\t        case 4:\n\t          secondByte = buf[i + 1];\n\t          thirdByte = buf[i + 2];\n\t          fourthByte = buf[i + 3];\n\t          if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n\t            tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n\t            if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n\t              codePoint = tempCodePoint;\n\t            }\n\t          }\n\t      }\n\t    }\n\n\t    if (codePoint === null) {\n\t      // we did not generate a valid codePoint so insert a\n\t      // replacement char (U+FFFD) and advance only 1 byte\n\t      codePoint = 0xFFFD;\n\t      bytesPerSequence = 1;\n\t    } else if (codePoint > 0xFFFF) {\n\t      // encode to utf16 (surrogate pair dance)\n\t      codePoint -= 0x10000;\n\t      res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n\t      codePoint = 0xDC00 | codePoint & 0x3FF;\n\t    }\n\n\t    res.push(codePoint);\n\t    i += bytesPerSequence;\n\t  }\n\n\t  return decodeCodePointsArray(res)\n\t}\n\n\t// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n\t// the lowest limit is Chrome, with 0x10000 args.\n\t// We go 1 magnitude less, for safety\n\tconst MAX_ARGUMENTS_LENGTH = 0x1000;\n\n\tfunction decodeCodePointsArray (codePoints) {\n\t  const len = codePoints.length;\n\t  if (len <= MAX_ARGUMENTS_LENGTH) {\n\t    return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n\t  }\n\n\t  // Decode in chunks to avoid \"call stack size exceeded\".\n\t  let res = '';\n\t  let i = 0;\n\t  while (i < len) {\n\t    res += String.fromCharCode.apply(\n\t      String,\n\t      codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n\t    );\n\t  }\n\t  return res\n\t}\n\n\tfunction asciiSlice (buf, start, end) {\n\t  let ret = '';\n\t  end = Math.min(buf.length, end);\n\n\t  for (let i = start; i < end; ++i) {\n\t    ret += String.fromCharCode(buf[i] & 0x7F);\n\t  }\n\t  return ret\n\t}\n\n\tfunction latin1Slice (buf, start, end) {\n\t  let ret = '';\n\t  end = Math.min(buf.length, end);\n\n\t  for (let i = start; i < end; ++i) {\n\t    ret += String.fromCharCode(buf[i]);\n\t  }\n\t  return ret\n\t}\n\n\tfunction hexSlice (buf, start, end) {\n\t  const len = buf.length;\n\n\t  if (!start || start < 0) start = 0;\n\t  if (!end || end < 0 || end > len) end = len;\n\n\t  let out = '';\n\t  for (let i = start; i < end; ++i) {\n\t    out += hexSliceLookupTable[buf[i]];\n\t  }\n\t  return out\n\t}\n\n\tfunction utf16leSlice (buf, start, end) {\n\t  const bytes = buf.slice(start, end);\n\t  let res = '';\n\t  // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n\t  for (let i = 0; i < bytes.length - 1; i += 2) {\n\t    res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n\t  }\n\t  return res\n\t}\n\n\tBuffer.prototype.slice = function slice (start, end) {\n\t  const len = this.length;\n\t  start = ~~start;\n\t  end = end === undefined ? len : ~~end;\n\n\t  if (start < 0) {\n\t    start += len;\n\t    if (start < 0) start = 0;\n\t  } else if (start > len) {\n\t    start = len;\n\t  }\n\n\t  if (end < 0) {\n\t    end += len;\n\t    if (end < 0) end = 0;\n\t  } else if (end > len) {\n\t    end = len;\n\t  }\n\n\t  if (end < start) end = start;\n\n\t  const newBuf = this.subarray(start, end);\n\t  // Return an augmented `Uint8Array` instance\n\t  Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n\t  return newBuf\n\t};\n\n\t/*\n\t * Need to make sure that buffer isn't trying to write out of bounds.\n\t */\n\tfunction checkOffset (offset, ext, length) {\n\t  if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n\t  if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n\t}\n\n\tBuffer.prototype.readUintLE =\n\tBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t  let val = this[offset];\n\t  let mul = 1;\n\t  let i = 0;\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    val += this[offset + i] * mul;\n\t  }\n\n\t  return val\n\t};\n\n\tBuffer.prototype.readUintBE =\n\tBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) {\n\t    checkOffset(offset, byteLength, this.length);\n\t  }\n\n\t  let val = this[offset + --byteLength];\n\t  let mul = 1;\n\t  while (byteLength > 0 && (mul *= 0x100)) {\n\t    val += this[offset + --byteLength] * mul;\n\t  }\n\n\t  return val\n\t};\n\n\tBuffer.prototype.readUint8 =\n\tBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 1, this.length);\n\t  return this[offset]\n\t};\n\n\tBuffer.prototype.readUint16LE =\n\tBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 2, this.length);\n\t  return this[offset] | (this[offset + 1] << 8)\n\t};\n\n\tBuffer.prototype.readUint16BE =\n\tBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 2, this.length);\n\t  return (this[offset] << 8) | this[offset + 1]\n\t};\n\n\tBuffer.prototype.readUint32LE =\n\tBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t  return ((this[offset]) |\n\t      (this[offset + 1] << 8) |\n\t      (this[offset + 2] << 16)) +\n\t      (this[offset + 3] * 0x1000000)\n\t};\n\n\tBuffer.prototype.readUint32BE =\n\tBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t  return (this[offset] * 0x1000000) +\n\t    ((this[offset + 1] << 16) |\n\t    (this[offset + 2] << 8) |\n\t    this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n\t  offset = offset >>> 0;\n\t  validateNumber(offset, 'offset');\n\t  const first = this[offset];\n\t  const last = this[offset + 7];\n\t  if (first === undefined || last === undefined) {\n\t    boundsError(offset, this.length - 8);\n\t  }\n\n\t  const lo = first +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 24;\n\n\t  const hi = this[++offset] +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset] * 2 ** 16 +\n\t    last * 2 ** 24;\n\n\t  return BigInt(lo) + (BigInt(hi) << BigInt(32))\n\t});\n\n\tBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n\t  offset = offset >>> 0;\n\t  validateNumber(offset, 'offset');\n\t  const first = this[offset];\n\t  const last = this[offset + 7];\n\t  if (first === undefined || last === undefined) {\n\t    boundsError(offset, this.length - 8);\n\t  }\n\n\t  const hi = first * 2 ** 24 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset];\n\n\t  const lo = this[++offset] * 2 ** 24 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 8 +\n\t    last;\n\n\t  return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n\t});\n\n\tBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t  let val = this[offset];\n\t  let mul = 1;\n\t  let i = 0;\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    val += this[offset + i] * mul;\n\t  }\n\t  mul *= 0x80;\n\n\t  if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t  return val\n\t};\n\n\tBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n\t  let i = byteLength;\n\t  let mul = 1;\n\t  let val = this[offset + --i];\n\t  while (i > 0 && (mul *= 0x100)) {\n\t    val += this[offset + --i] * mul;\n\t  }\n\t  mul *= 0x80;\n\n\t  if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n\t  return val\n\t};\n\n\tBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 1, this.length);\n\t  if (!(this[offset] & 0x80)) return (this[offset])\n\t  return ((0xff - this[offset] + 1) * -1)\n\t};\n\n\tBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 2, this.length);\n\t  const val = this[offset] | (this[offset + 1] << 8);\n\t  return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 2, this.length);\n\t  const val = this[offset + 1] | (this[offset] << 8);\n\t  return (val & 0x8000) ? val | 0xFFFF0000 : val\n\t};\n\n\tBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t  return (this[offset]) |\n\t    (this[offset + 1] << 8) |\n\t    (this[offset + 2] << 16) |\n\t    (this[offset + 3] << 24)\n\t};\n\n\tBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\n\t  return (this[offset] << 24) |\n\t    (this[offset + 1] << 16) |\n\t    (this[offset + 2] << 8) |\n\t    (this[offset + 3])\n\t};\n\n\tBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n\t  offset = offset >>> 0;\n\t  validateNumber(offset, 'offset');\n\t  const first = this[offset];\n\t  const last = this[offset + 7];\n\t  if (first === undefined || last === undefined) {\n\t    boundsError(offset, this.length - 8);\n\t  }\n\n\t  const val = this[offset + 4] +\n\t    this[offset + 5] * 2 ** 8 +\n\t    this[offset + 6] * 2 ** 16 +\n\t    (last << 24); // Overflow\n\n\t  return (BigInt(val) << BigInt(32)) +\n\t    BigInt(first +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 24)\n\t});\n\n\tBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n\t  offset = offset >>> 0;\n\t  validateNumber(offset, 'offset');\n\t  const first = this[offset];\n\t  const last = this[offset + 7];\n\t  if (first === undefined || last === undefined) {\n\t    boundsError(offset, this.length - 8);\n\t  }\n\n\t  const val = (first << 24) + // Overflow\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 8 +\n\t    this[++offset];\n\n\t  return (BigInt(val) << BigInt(32)) +\n\t    BigInt(this[++offset] * 2 ** 24 +\n\t    this[++offset] * 2 ** 16 +\n\t    this[++offset] * 2 ** 8 +\n\t    last)\n\t});\n\n\tBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\t  return ieee754$1.read(this, offset, true, 23, 4)\n\t};\n\n\tBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 4, this.length);\n\t  return ieee754$1.read(this, offset, false, 23, 4)\n\t};\n\n\tBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 8, this.length);\n\t  return ieee754$1.read(this, offset, true, 52, 8)\n\t};\n\n\tBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkOffset(offset, 8, this.length);\n\t  return ieee754$1.read(this, offset, false, 52, 8)\n\t};\n\n\tfunction checkInt (buf, value, offset, ext, max, min) {\n\t  if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n\t  if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n\t  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t}\n\n\tBuffer.prototype.writeUintLE =\n\tBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) {\n\t    const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t    checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t  }\n\n\t  let mul = 1;\n\t  let i = 0;\n\t  this[offset] = value & 0xFF;\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    this[offset + i] = (value / mul) & 0xFF;\n\t  }\n\n\t  return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUintBE =\n\tBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  byteLength = byteLength >>> 0;\n\t  if (!noAssert) {\n\t    const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n\t    checkInt(this, value, offset, byteLength, maxBytes, 0);\n\t  }\n\n\t  let i = byteLength - 1;\n\t  let mul = 1;\n\t  this[offset + i] = value & 0xFF;\n\t  while (--i >= 0 && (mul *= 0x100)) {\n\t    this[offset + i] = (value / mul) & 0xFF;\n\t  }\n\n\t  return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeUint8 =\n\tBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n\t  this[offset] = (value & 0xff);\n\t  return offset + 1\n\t};\n\n\tBuffer.prototype.writeUint16LE =\n\tBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t  this[offset] = (value & 0xff);\n\t  this[offset + 1] = (value >>> 8);\n\t  return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint16BE =\n\tBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n\t  this[offset] = (value >>> 8);\n\t  this[offset + 1] = (value & 0xff);\n\t  return offset + 2\n\t};\n\n\tBuffer.prototype.writeUint32LE =\n\tBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t  this[offset + 3] = (value >>> 24);\n\t  this[offset + 2] = (value >>> 16);\n\t  this[offset + 1] = (value >>> 8);\n\t  this[offset] = (value & 0xff);\n\t  return offset + 4\n\t};\n\n\tBuffer.prototype.writeUint32BE =\n\tBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n\t  this[offset] = (value >>> 24);\n\t  this[offset + 1] = (value >>> 16);\n\t  this[offset + 2] = (value >>> 8);\n\t  this[offset + 3] = (value & 0xff);\n\t  return offset + 4\n\t};\n\n\tfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n\t  checkIntBI(value, min, max, buf, offset, 7);\n\n\t  let lo = Number(value & BigInt(0xffffffff));\n\t  buf[offset++] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset++] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset++] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset++] = lo;\n\t  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t  buf[offset++] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset++] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset++] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset++] = hi;\n\t  return offset\n\t}\n\n\tfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n\t  checkIntBI(value, min, max, buf, offset, 7);\n\n\t  let lo = Number(value & BigInt(0xffffffff));\n\t  buf[offset + 7] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset + 6] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset + 5] = lo;\n\t  lo = lo >> 8;\n\t  buf[offset + 4] = lo;\n\t  let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n\t  buf[offset + 3] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset + 2] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset + 1] = hi;\n\t  hi = hi >> 8;\n\t  buf[offset] = hi;\n\t  return offset + 8\n\t}\n\n\tBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n\t  return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n\t  return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) {\n\t    const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t    checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t  }\n\n\t  let i = 0;\n\t  let mul = 1;\n\t  let sub = 0;\n\t  this[offset] = value & 0xFF;\n\t  while (++i < byteLength && (mul *= 0x100)) {\n\t    if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n\t      sub = 1;\n\t    }\n\t    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t  }\n\n\t  return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) {\n\t    const limit = Math.pow(2, (8 * byteLength) - 1);\n\n\t    checkInt(this, value, offset, byteLength, limit - 1, -limit);\n\t  }\n\n\t  let i = byteLength - 1;\n\t  let mul = 1;\n\t  let sub = 0;\n\t  this[offset + i] = value & 0xFF;\n\t  while (--i >= 0 && (mul *= 0x100)) {\n\t    if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n\t      sub = 1;\n\t    }\n\t    this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n\t  }\n\n\t  return offset + byteLength\n\t};\n\n\tBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n\t  if (value < 0) value = 0xff + value + 1;\n\t  this[offset] = (value & 0xff);\n\t  return offset + 1\n\t};\n\n\tBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t  this[offset] = (value & 0xff);\n\t  this[offset + 1] = (value >>> 8);\n\t  return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n\t  this[offset] = (value >>> 8);\n\t  this[offset + 1] = (value & 0xff);\n\t  return offset + 2\n\t};\n\n\tBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t  this[offset] = (value & 0xff);\n\t  this[offset + 1] = (value >>> 8);\n\t  this[offset + 2] = (value >>> 16);\n\t  this[offset + 3] = (value >>> 24);\n\t  return offset + 4\n\t};\n\n\tBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n\t  if (value < 0) value = 0xffffffff + value + 1;\n\t  this[offset] = (value >>> 24);\n\t  this[offset + 1] = (value >>> 16);\n\t  this[offset + 2] = (value >>> 8);\n\t  this[offset + 3] = (value & 0xff);\n\t  return offset + 4\n\t};\n\n\tBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n\t  return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n\t  return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n\t});\n\n\tfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n\t  if (offset + ext > buf.length) throw new RangeError('Index out of range')\n\t  if (offset < 0) throw new RangeError('Index out of range')\n\t}\n\n\tfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) {\n\t    checkIEEE754(buf, value, offset, 4);\n\t  }\n\t  ieee754$1.write(buf, value, offset, littleEndian, 23, 4);\n\t  return offset + 4\n\t}\n\n\tBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n\t  return writeFloat(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n\t  return writeFloat(this, value, offset, false, noAssert)\n\t};\n\n\tfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n\t  value = +value;\n\t  offset = offset >>> 0;\n\t  if (!noAssert) {\n\t    checkIEEE754(buf, value, offset, 8);\n\t  }\n\t  ieee754$1.write(buf, value, offset, littleEndian, 52, 8);\n\t  return offset + 8\n\t}\n\n\tBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n\t  return writeDouble(this, value, offset, true, noAssert)\n\t};\n\n\tBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n\t  return writeDouble(this, value, offset, false, noAssert)\n\t};\n\n\t// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\n\tBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n\t  if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n\t  if (!start) start = 0;\n\t  if (!end && end !== 0) end = this.length;\n\t  if (targetStart >= target.length) targetStart = target.length;\n\t  if (!targetStart) targetStart = 0;\n\t  if (end > 0 && end < start) end = start;\n\n\t  // Copy 0 bytes; we're done\n\t  if (end === start) return 0\n\t  if (target.length === 0 || this.length === 0) return 0\n\n\t  // Fatal error conditions\n\t  if (targetStart < 0) {\n\t    throw new RangeError('targetStart out of bounds')\n\t  }\n\t  if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n\t  if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n\t  // Are we oob?\n\t  if (end > this.length) end = this.length;\n\t  if (target.length - targetStart < end - start) {\n\t    end = target.length - targetStart + start;\n\t  }\n\n\t  const len = end - start;\n\n\t  if (this === target && typeof GlobalUint8Array.prototype.copyWithin === 'function') {\n\t    // Use built-in when available, missing from IE11\n\t    this.copyWithin(targetStart, start, end);\n\t  } else {\n\t    GlobalUint8Array.prototype.set.call(\n\t      target,\n\t      this.subarray(start, end),\n\t      targetStart\n\t    );\n\t  }\n\n\t  return len\n\t};\n\n\t// Usage:\n\t//    buffer.fill(number[, offset[, end]])\n\t//    buffer.fill(buffer[, offset[, end]])\n\t//    buffer.fill(string[, offset[, end]][, encoding])\n\tBuffer.prototype.fill = function fill (val, start, end, encoding) {\n\t  // Handle string cases:\n\t  if (typeof val === 'string') {\n\t    if (typeof start === 'string') {\n\t      encoding = start;\n\t      start = 0;\n\t      end = this.length;\n\t    } else if (typeof end === 'string') {\n\t      encoding = end;\n\t      end = this.length;\n\t    }\n\t    if (encoding !== undefined && typeof encoding !== 'string') {\n\t      throw new TypeError('encoding must be a string')\n\t    }\n\t    if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n\t      throw new TypeError('Unknown encoding: ' + encoding)\n\t    }\n\t    if (val.length === 1) {\n\t      const code = val.charCodeAt(0);\n\t      if ((encoding === 'utf8' && code < 128) ||\n\t          encoding === 'latin1') {\n\t        // Fast path: If `val` fits into a single byte, use that numeric value.\n\t        val = code;\n\t      }\n\t    }\n\t  } else if (typeof val === 'number') {\n\t    val = val & 255;\n\t  } else if (typeof val === 'boolean') {\n\t    val = Number(val);\n\t  }\n\n\t  // Invalid ranges are not set to a default, so can range check early.\n\t  if (start < 0 || this.length < start || this.length < end) {\n\t    throw new RangeError('Out of range index')\n\t  }\n\n\t  if (end <= start) {\n\t    return this\n\t  }\n\n\t  start = start >>> 0;\n\t  end = end === undefined ? this.length : end >>> 0;\n\n\t  if (!val) val = 0;\n\n\t  let i;\n\t  if (typeof val === 'number') {\n\t    for (i = start; i < end; ++i) {\n\t      this[i] = val;\n\t    }\n\t  } else {\n\t    const bytes = Buffer.isBuffer(val)\n\t      ? val\n\t      : Buffer.from(val, encoding);\n\t    const len = bytes.length;\n\t    if (len === 0) {\n\t      throw new TypeError('The value \"' + val +\n\t        '\" is invalid for argument \"value\"')\n\t    }\n\t    for (i = 0; i < end - start; ++i) {\n\t      this[i + start] = bytes[i % len];\n\t    }\n\t  }\n\n\t  return this\n\t};\n\n\t// CUSTOM ERRORS\n\t// =============\n\n\t// Simplified versions from Node, changed for Buffer-only usage\n\tconst errors = {};\n\tfunction E (sym, getMessage, Base) {\n\t  errors[sym] = class NodeError extends Base {\n\t    constructor () {\n\t      super();\n\n\t      Object.defineProperty(this, 'message', {\n\t        value: getMessage.apply(this, arguments),\n\t        writable: true,\n\t        configurable: true\n\t      });\n\n\t      // Add the error code to the name to include it in the stack trace.\n\t      this.name = `${this.name} [${sym}]`;\n\t      // Access the stack to generate the error message including the error code\n\t      // from the name.\n\t      this.stack; // eslint-disable-line no-unused-expressions\n\t      // Reset the name to the actual name.\n\t      delete this.name;\n\t    }\n\n\t    get code () {\n\t      return sym\n\t    }\n\n\t    set code (value) {\n\t      Object.defineProperty(this, 'code', {\n\t        configurable: true,\n\t        enumerable: true,\n\t        value,\n\t        writable: true\n\t      });\n\t    }\n\n\t    toString () {\n\t      return `${this.name} [${sym}]: ${this.message}`\n\t    }\n\t  };\n\t}\n\n\tE('ERR_BUFFER_OUT_OF_BOUNDS',\n\t  function (name) {\n\t    if (name) {\n\t      return `${name} is outside of buffer bounds`\n\t    }\n\n\t    return 'Attempt to access memory outside buffer bounds'\n\t  }, RangeError);\n\tE('ERR_INVALID_ARG_TYPE',\n\t  function (name, actual) {\n\t    return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n\t  }, TypeError);\n\tE('ERR_OUT_OF_RANGE',\n\t  function (str, range, input) {\n\t    let msg = `The value of \"${str}\" is out of range.`;\n\t    let received = input;\n\t    if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n\t      received = addNumericalSeparator(String(input));\n\t    } else if (typeof input === 'bigint') {\n\t      received = String(input);\n\t      if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n\t        received = addNumericalSeparator(received);\n\t      }\n\t      received += 'n';\n\t    }\n\t    msg += ` It must be ${range}. Received ${received}`;\n\t    return msg\n\t  }, RangeError);\n\n\tfunction addNumericalSeparator (val) {\n\t  let res = '';\n\t  let i = val.length;\n\t  const start = val[0] === '-' ? 1 : 0;\n\t  for (; i >= start + 4; i -= 3) {\n\t    res = `_${val.slice(i - 3, i)}${res}`;\n\t  }\n\t  return `${val.slice(0, i)}${res}`\n\t}\n\n\t// CHECK FUNCTIONS\n\t// ===============\n\n\tfunction checkBounds (buf, offset, byteLength) {\n\t  validateNumber(offset, 'offset');\n\t  if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n\t    boundsError(offset, buf.length - (byteLength + 1));\n\t  }\n\t}\n\n\tfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n\t  if (value > max || value < min) {\n\t    const n = typeof min === 'bigint' ? 'n' : '';\n\t    let range;\n\t    if (byteLength > 3) {\n\t      if (min === 0 || min === BigInt(0)) {\n\t        range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n\t      } else {\n\t        range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n\t                `${(byteLength + 1) * 8 - 1}${n}`;\n\t      }\n\t    } else {\n\t      range = `>= ${min}${n} and <= ${max}${n}`;\n\t    }\n\t    throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n\t  }\n\t  checkBounds(buf, offset, byteLength);\n\t}\n\n\tfunction validateNumber (value, name) {\n\t  if (typeof value !== 'number') {\n\t    throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n\t  }\n\t}\n\n\tfunction boundsError (value, length, type) {\n\t  if (Math.floor(value) !== value) {\n\t    validateNumber(value, type);\n\t    throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n\t  }\n\n\t  if (length < 0) {\n\t    throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n\t  }\n\n\t  throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n\t                                    `>= ${type ? 1 : 0} and <= ${length}`,\n\t                                    value)\n\t}\n\n\t// HELPER FUNCTIONS\n\t// ================\n\n\tconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\n\tfunction base64clean (str) {\n\t  // Node takes equal signs as end of the Base64 encoding\n\t  str = str.split('=')[0];\n\t  // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n\t  str = str.trim().replace(INVALID_BASE64_RE, '');\n\t  // Node converts strings with length < 2 to ''\n\t  if (str.length < 2) return ''\n\t  // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n\t  while (str.length % 4 !== 0) {\n\t    str = str + '=';\n\t  }\n\t  return str\n\t}\n\n\tfunction utf8ToBytes (string, units) {\n\t  units = units || Infinity;\n\t  let codePoint;\n\t  const length = string.length;\n\t  let leadSurrogate = null;\n\t  const bytes = [];\n\n\t  for (let i = 0; i < length; ++i) {\n\t    codePoint = string.charCodeAt(i);\n\n\t    // is surrogate component\n\t    if (codePoint > 0xD7FF && codePoint < 0xE000) {\n\t      // last char was a lead\n\t      if (!leadSurrogate) {\n\t        // no lead yet\n\t        if (codePoint > 0xDBFF) {\n\t          // unexpected trail\n\t          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t          continue\n\t        } else if (i + 1 === length) {\n\t          // unpaired lead\n\t          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t          continue\n\t        }\n\n\t        // valid lead\n\t        leadSurrogate = codePoint;\n\n\t        continue\n\t      }\n\n\t      // 2 leads in a row\n\t      if (codePoint < 0xDC00) {\n\t        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t        leadSurrogate = codePoint;\n\t        continue\n\t      }\n\n\t      // valid surrogate pair\n\t      codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n\t    } else if (leadSurrogate) {\n\t      // valid bmp char, but last char was a lead\n\t      if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n\t    }\n\n\t    leadSurrogate = null;\n\n\t    // encode utf8\n\t    if (codePoint < 0x80) {\n\t      if ((units -= 1) < 0) break\n\t      bytes.push(codePoint);\n\t    } else if (codePoint < 0x800) {\n\t      if ((units -= 2) < 0) break\n\t      bytes.push(\n\t        codePoint >> 0x6 | 0xC0,\n\t        codePoint & 0x3F | 0x80\n\t      );\n\t    } else if (codePoint < 0x10000) {\n\t      if ((units -= 3) < 0) break\n\t      bytes.push(\n\t        codePoint >> 0xC | 0xE0,\n\t        codePoint >> 0x6 & 0x3F | 0x80,\n\t        codePoint & 0x3F | 0x80\n\t      );\n\t    } else if (codePoint < 0x110000) {\n\t      if ((units -= 4) < 0) break\n\t      bytes.push(\n\t        codePoint >> 0x12 | 0xF0,\n\t        codePoint >> 0xC & 0x3F | 0x80,\n\t        codePoint >> 0x6 & 0x3F | 0x80,\n\t        codePoint & 0x3F | 0x80\n\t      );\n\t    } else {\n\t      throw new Error('Invalid code point')\n\t    }\n\t  }\n\n\t  return bytes\n\t}\n\n\tfunction asciiToBytes (str) {\n\t  const byteArray = [];\n\t  for (let i = 0; i < str.length; ++i) {\n\t    // Node's code seems to be doing this and not & 0x7F..\n\t    byteArray.push(str.charCodeAt(i) & 0xFF);\n\t  }\n\t  return byteArray\n\t}\n\n\tfunction utf16leToBytes (str, units) {\n\t  let c, hi, lo;\n\t  const byteArray = [];\n\t  for (let i = 0; i < str.length; ++i) {\n\t    if ((units -= 2) < 0) break\n\n\t    c = str.charCodeAt(i);\n\t    hi = c >> 8;\n\t    lo = c % 256;\n\t    byteArray.push(lo);\n\t    byteArray.push(hi);\n\t  }\n\n\t  return byteArray\n\t}\n\n\tfunction base64ToBytes (str) {\n\t  return base64.toByteArray(base64clean(str))\n\t}\n\n\tfunction blitBuffer (src, dst, offset, length) {\n\t  let i;\n\t  for (i = 0; i < length; ++i) {\n\t    if ((i + offset >= dst.length) || (i >= src.length)) break\n\t    dst[i + offset] = src[i];\n\t  }\n\t  return i\n\t}\n\n\t// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n\t// the `instanceof` check but they should be treated as of that type.\n\t// See: https://github.com/feross/buffer/issues/166\n\tfunction isInstance (obj, type) {\n\t  return obj instanceof type ||\n\t    (obj != null && obj.constructor != null && obj.constructor.name != null &&\n\t      obj.constructor.name === type.name)\n\t}\n\tfunction numberIsNaN (obj) {\n\t  // For IE11 support\n\t  return obj !== obj // eslint-disable-line no-self-compare\n\t}\n\n\t// Create lookup table for `toString('hex')`\n\t// See: https://github.com/feross/buffer/issues/219\n\tconst hexSliceLookupTable = (function () {\n\t  const alphabet = '0123456789abcdef';\n\t  const table = new Array(256);\n\t  for (let i = 0; i < 16; ++i) {\n\t    const i16 = i * 16;\n\t    for (let j = 0; j < 16; ++j) {\n\t      table[i16 + j] = alphabet[i] + alphabet[j];\n\t    }\n\t  }\n\t  return table\n\t})();\n\n\t// Return not function with Error if BigInt not supported\n\tfunction defineBigIntMethod (fn) {\n\t  return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n\t}\n\n\tfunction BufferBigIntNotDefined () {\n\t  throw new Error('BigInt not supported')\n\t} \n} (buffer));\n\nconst Buffer = buffer.Buffer;\n\nexports.Blob = buffer.Blob;\nexports.BlobOptions = buffer.BlobOptions;\nexports.Buffer = buffer.Buffer;\nexports.File = buffer.File;\nexports.FileOptions = buffer.FileOptions;\nexports.INSPECT_MAX_BYTES = buffer.INSPECT_MAX_BYTES;\nexports.SlowBuffer = buffer.SlowBuffer;\nexports.TranscodeEncoding = buffer.TranscodeEncoding;\nexports.atob = buffer.atob;\nexports.btoa = buffer.btoa;\nexports.constants = buffer.constants;\nexports.default = Buffer;\nexports.isAscii = buffer.isAscii;\nexports.isUtf8 = buffer.isUtf8;\nexports.kMaxLength = buffer.kMaxLength;\nexports.kStringMaxLength = buffer.kStringMaxLength;\nexports.resolveObjectURL = buffer.resolveObjectURL;\nexports.transcode = buffer.transcode;\n//# sourceMappingURL=index.cjs.map\n","/* eslint-disable node/no-deprecated-api */\nvar buffer = require('buffer')\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n  for (var key in src) {\n    dst[key] = src[key]\n  }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n  module.exports = buffer\n} else {\n  // Copy properties from require('buffer')\n  copyProps(buffer, exports)\n  exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n  return Buffer(arg, encodingOrOffset, length)\n}\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n  if (typeof arg === 'number') {\n    throw new TypeError('Argument must not be a number')\n  }\n  return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  var buf = Buffer(size)\n  if (fill !== undefined) {\n    if (typeof encoding === 'string') {\n      buf.fill(fill, encoding)\n    } else {\n      buf.fill(fill)\n    }\n  } else {\n    buf.fill(0)\n  }\n  return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n  if (typeof size !== 'number') {\n    throw new TypeError('Argument must be a number')\n  }\n  return buffer.SlowBuffer(size)\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\n/*<replacement>*/\n\nvar Buffer = require('safe-buffer').Buffer;\n/*</replacement>*/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n  encoding = '' + encoding;\n  switch (encoding && encoding.toLowerCase()) {\n    case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n      return true;\n    default:\n      return false;\n  }\n};\n\nfunction _normalizeEncoding(enc) {\n  if (!enc) return 'utf8';\n  var retried;\n  while (true) {\n    switch (enc) {\n      case 'utf8':\n      case 'utf-8':\n        return 'utf8';\n      case 'ucs2':\n      case 'ucs-2':\n      case 'utf16le':\n      case 'utf-16le':\n        return 'utf16le';\n      case 'latin1':\n      case 'binary':\n        return 'latin1';\n      case 'base64':\n      case 'ascii':\n      case 'hex':\n        return enc;\n      default:\n        if (retried) return; // undefined\n        enc = ('' + enc).toLowerCase();\n        retried = true;\n    }\n  }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n  var nenc = _normalizeEncoding(enc);\n  if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n  return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n  this.encoding = normalizeEncoding(encoding);\n  var nb;\n  switch (this.encoding) {\n    case 'utf16le':\n      this.text = utf16Text;\n      this.end = utf16End;\n      nb = 4;\n      break;\n    case 'utf8':\n      this.fillLast = utf8FillLast;\n      nb = 4;\n      break;\n    case 'base64':\n      this.text = base64Text;\n      this.end = base64End;\n      nb = 3;\n      break;\n    default:\n      this.write = simpleWrite;\n      this.end = simpleEnd;\n      return;\n  }\n  this.lastNeed = 0;\n  this.lastTotal = 0;\n  this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n  if (buf.length === 0) return '';\n  var r;\n  var i;\n  if (this.lastNeed) {\n    r = this.fillLast(buf);\n    if (r === undefined) return '';\n    i = this.lastNeed;\n    this.lastNeed = 0;\n  } else {\n    i = 0;\n  }\n  if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n  return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n  this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n  if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n  return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n  var j = buf.length - 1;\n  if (j < i) return 0;\n  var nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 1;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) self.lastNeed = nb - 2;\n    return nb;\n  }\n  if (--j < i || nb === -2) return 0;\n  nb = utf8CheckByte(buf[j]);\n  if (nb >= 0) {\n    if (nb > 0) {\n      if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n    }\n    return nb;\n  }\n  return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n  if ((buf[0] & 0xC0) !== 0x80) {\n    self.lastNeed = 0;\n    return '\\ufffd';\n  }\n  if (self.lastNeed > 1 && buf.length > 1) {\n    if ((buf[1] & 0xC0) !== 0x80) {\n      self.lastNeed = 1;\n      return '\\ufffd';\n    }\n    if (self.lastNeed > 2 && buf.length > 2) {\n      if ((buf[2] & 0xC0) !== 0x80) {\n        self.lastNeed = 2;\n        return '\\ufffd';\n      }\n    }\n  }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n  var p = this.lastTotal - this.lastNeed;\n  var r = utf8CheckExtraBytes(this, buf, p);\n  if (r !== undefined) return r;\n  if (this.lastNeed <= buf.length) {\n    buf.copy(this.lastChar, p, 0, this.lastNeed);\n    return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n  }\n  buf.copy(this.lastChar, p, 0, buf.length);\n  this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n  var total = utf8CheckIncomplete(this, buf, i);\n  if (!this.lastNeed) return buf.toString('utf8', i);\n  this.lastTotal = total;\n  var end = buf.length - (total - this.lastNeed);\n  buf.copy(this.lastChar, 0, end);\n  return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + '\\ufffd';\n  return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n  if ((buf.length - i) % 2 === 0) {\n    var r = buf.toString('utf16le', i);\n    if (r) {\n      var c = r.charCodeAt(r.length - 1);\n      if (c >= 0xD800 && c <= 0xDBFF) {\n        this.lastNeed = 2;\n        this.lastTotal = 4;\n        this.lastChar[0] = buf[buf.length - 2];\n        this.lastChar[1] = buf[buf.length - 1];\n        return r.slice(0, -1);\n      }\n    }\n    return r;\n  }\n  this.lastNeed = 1;\n  this.lastTotal = 2;\n  this.lastChar[0] = buf[buf.length - 1];\n  return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) {\n    var end = this.lastTotal - this.lastNeed;\n    return r + this.lastChar.toString('utf16le', 0, end);\n  }\n  return r;\n}\n\nfunction base64Text(buf, i) {\n  var n = (buf.length - i) % 3;\n  if (n === 0) return buf.toString('base64', i);\n  this.lastNeed = 3 - n;\n  this.lastTotal = 3;\n  if (n === 1) {\n    this.lastChar[0] = buf[buf.length - 1];\n  } else {\n    this.lastChar[0] = buf[buf.length - 2];\n    this.lastChar[1] = buf[buf.length - 1];\n  }\n  return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n  var r = buf && buf.length ? this.write(buf) : '';\n  if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n  return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n  return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n  return buf && buf.length ? this.write(buf) : '';\n}","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\n/**\n * @param app app ID, e.g. \"mail\"\n * @param key name of the property\n * @param fallback optional parameter to use as default value\n * @throws if the key can't be found\n */\nexport function loadState(app, key, fallback) {\n    const selector = `#initial-state-${app}-${key}`;\n    if (window._nc_initial_state?.has(selector)) {\n        return window._nc_initial_state.get(selector);\n    }\n    else if (!window._nc_initial_state) {\n        window._nc_initial_state = new Map();\n    }\n    const elem = document.querySelector(selector);\n    if (elem === null) {\n        if (fallback !== undefined) {\n            return fallback;\n        }\n        throw new Error(`Could not find initial state ${key} of ${app}`);\n    }\n    try {\n        const parsedValue = JSON.parse(atob(elem.value));\n        window._nc_initial_state.set(selector, parsedValue);\n        return parsedValue;\n    }\n    catch (error) {\n        console.error('[@nextcloud/initial-state] Could not parse initial state', { key, app, error });\n        if (fallback !== undefined) {\n            return fallback;\n        }\n        throw new Error(`Could not parse initial state ${key} of ${app}`, { cause: error });\n    }\n}\n","import { loadState } from \"@nextcloud/initial-state\";\nfunction getCapabilities() {\n  try {\n    return loadState(\"core\", \"capabilities\");\n  } catch (error) {\n    console.debug(\"Could not find capabilities initial state fall back to _oc_capabilities\");\n    if (!(\"_oc_capabilities\" in window)) {\n      return {};\n    }\n    return window[\"_oc_capabilities\"];\n  }\n}\nexport {\n  getCapabilities\n};\n//# sourceMappingURL=index.mjs.map\n","import { o as logger, F as FileType } from \"./chunks/dav-Rt1kTtvI.mjs\";\nimport { q, s, N, t, P, c, l, m, n, a, g, p, b, r, d, h, f, k, j, e, i } from \"./chunks/dav-Rt1kTtvI.mjs\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport require$$1 from \"string_decoder\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { extname, basename } from \"@nextcloud/paths\";\nimport { getCanonicalLocale, getLanguage } from \"@nextcloud/l10n\";\nvar DefaultType = /* @__PURE__ */ ((DefaultType2) => {\n  DefaultType2[\"DEFAULT\"] = \"default\";\n  DefaultType2[\"HIDDEN\"] = \"hidden\";\n  return DefaultType2;\n})(DefaultType || {});\nclass FileAction {\n  _action;\n  constructor(action) {\n    this.validateAction(action);\n    this._action = action;\n  }\n  get id() {\n    return this._action.id;\n  }\n  get displayName() {\n    return this._action.displayName;\n  }\n  get title() {\n    return this._action.title;\n  }\n  get iconSvgInline() {\n    return this._action.iconSvgInline;\n  }\n  get enabled() {\n    return this._action.enabled;\n  }\n  get exec() {\n    return this._action.exec;\n  }\n  get execBatch() {\n    return this._action.execBatch;\n  }\n  get hotkey() {\n    return this._action.hotkey;\n  }\n  get order() {\n    return this._action.order;\n  }\n  get parent() {\n    return this._action.parent;\n  }\n  get default() {\n    return this._action.default;\n  }\n  get destructive() {\n    return this._action.destructive;\n  }\n  get inline() {\n    return this._action.inline;\n  }\n  get renderInline() {\n    return this._action.renderInline;\n  }\n  validateAction(action) {\n    if (!action.id || typeof action.id !== \"string\") {\n      throw new Error(\"Invalid id\");\n    }\n    if (!action.displayName || typeof action.displayName !== \"function\") {\n      throw new Error(\"Invalid displayName function\");\n    }\n    if (\"title\" in action && typeof action.title !== \"function\") {\n      throw new Error(\"Invalid title function\");\n    }\n    if (!action.iconSvgInline || typeof action.iconSvgInline !== \"function\") {\n      throw new Error(\"Invalid iconSvgInline function\");\n    }\n    if (!action.exec || typeof action.exec !== \"function\") {\n      throw new Error(\"Invalid exec function\");\n    }\n    if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n      throw new Error(\"Invalid enabled function\");\n    }\n    if (\"execBatch\" in action && typeof action.execBatch !== \"function\") {\n      throw new Error(\"Invalid execBatch function\");\n    }\n    if (\"order\" in action && typeof action.order !== \"number\") {\n      throw new Error(\"Invalid order\");\n    }\n    if (action.destructive !== void 0 && typeof action.destructive !== \"boolean\") {\n      throw new Error(\"Invalid destructive flag\");\n    }\n    if (\"parent\" in action && typeof action.parent !== \"string\") {\n      throw new Error(\"Invalid parent\");\n    }\n    if (action.default && !Object.values(DefaultType).includes(action.default)) {\n      throw new Error(\"Invalid default\");\n    }\n    if (\"inline\" in action && typeof action.inline !== \"function\") {\n      throw new Error(\"Invalid inline function\");\n    }\n    if (\"renderInline\" in action && typeof action.renderInline !== \"function\") {\n      throw new Error(\"Invalid renderInline function\");\n    }\n    if (\"hotkey\" in action && action.hotkey !== void 0) {\n      if (typeof action.hotkey !== \"object\") {\n        throw new Error(\"Invalid hotkey configuration\");\n      }\n      if (typeof action.hotkey.key !== \"string\" || !action.hotkey.key) {\n        throw new Error(\"Missing or invalid hotkey key\");\n      }\n      if (typeof action.hotkey.description !== \"string\" || !action.hotkey.description) {\n        throw new Error(\"Missing or invalid hotkey description\");\n      }\n    }\n  }\n}\nconst registerFileAction = function(action) {\n  if (typeof window._nc_fileactions === \"undefined\") {\n    window._nc_fileactions = [];\n    logger.debug(\"FileActions initialized\");\n  }\n  if (window._nc_fileactions.find((search) => search.id === action.id)) {\n    logger.error(`FileAction ${action.id} already registered`, { action });\n    return;\n  }\n  window._nc_fileactions.push(action);\n};\nconst getFileActions = function() {\n  if (typeof window._nc_fileactions === \"undefined\") {\n    window._nc_fileactions = [];\n    logger.debug(\"FileActions initialized\");\n  }\n  return window._nc_fileactions;\n};\nclass FileListAction {\n  _action;\n  constructor(action) {\n    this.validateAction(action);\n    this._action = action;\n  }\n  get id() {\n    return this._action.id;\n  }\n  get displayName() {\n    return this._action.displayName;\n  }\n  get iconSvgInline() {\n    return this._action.iconSvgInline;\n  }\n  get order() {\n    return this._action.order;\n  }\n  get enabled() {\n    return this._action.enabled;\n  }\n  get exec() {\n    return this._action.exec;\n  }\n  validateAction(action) {\n    if (!action.id || typeof action.id !== \"string\") {\n      throw new Error(\"Invalid id\");\n    }\n    if (!action.displayName || typeof action.displayName !== \"function\") {\n      throw new Error(\"Invalid displayName function\");\n    }\n    if (\"iconSvgInline\" in action && typeof action.iconSvgInline !== \"function\") {\n      throw new Error(\"Invalid iconSvgInline function\");\n    }\n    if (\"order\" in action && typeof action.order !== \"number\") {\n      throw new Error(\"Invalid order\");\n    }\n    if (\"enabled\" in action && typeof action.enabled !== \"function\") {\n      throw new Error(\"Invalid enabled function\");\n    }\n    if (!action.exec || typeof action.exec !== \"function\") {\n      throw new Error(\"Invalid exec function\");\n    }\n  }\n}\nconst registerFileListAction = (action) => {\n  if (typeof window._nc_filelistactions === \"undefined\") {\n    window._nc_filelistactions = [];\n  }\n  if (window._nc_filelistactions.find((listAction) => listAction.id === action.id)) {\n    logger.error(`FileListAction with id \"${action.id}\" is already registered`, { action });\n    return;\n  }\n  window._nc_filelistactions.push(action);\n};\nconst getFileListActions = () => {\n  if (typeof window._nc_filelistactions === \"undefined\") {\n    window._nc_filelistactions = [];\n  }\n  return window._nc_filelistactions;\n};\nfunction getDefaultExportFromCjs(x) {\n  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, \"default\") ? x[\"default\"] : x;\n}\nvar debug_1;\nvar hasRequiredDebug;\nfunction requireDebug() {\n  if (hasRequiredDebug) return debug_1;\n  hasRequiredDebug = 1;\n  const debug = typeof process === \"object\" && process.env && process.env.NODE_DEBUG && /\\bsemver\\b/i.test(process.env.NODE_DEBUG) ? (...args) => console.error(\"SEMVER\", ...args) : () => {\n  };\n  debug_1 = debug;\n  return debug_1;\n}\nvar constants;\nvar hasRequiredConstants;\nfunction requireConstants() {\n  if (hasRequiredConstants) return constants;\n  hasRequiredConstants = 1;\n  const SEMVER_SPEC_VERSION = \"2.0.0\";\n  const MAX_LENGTH = 256;\n  const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || /* istanbul ignore next */\n  9007199254740991;\n  const MAX_SAFE_COMPONENT_LENGTH = 16;\n  const MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;\n  const RELEASE_TYPES = [\n    \"major\",\n    \"premajor\",\n    \"minor\",\n    \"preminor\",\n    \"patch\",\n    \"prepatch\",\n    \"prerelease\"\n  ];\n  constants = {\n    MAX_LENGTH,\n    MAX_SAFE_COMPONENT_LENGTH,\n    MAX_SAFE_BUILD_LENGTH,\n    MAX_SAFE_INTEGER,\n    RELEASE_TYPES,\n    SEMVER_SPEC_VERSION,\n    FLAG_INCLUDE_PRERELEASE: 1,\n    FLAG_LOOSE: 2\n  };\n  return constants;\n}\nvar re = { exports: {} };\nvar hasRequiredRe;\nfunction requireRe() {\n  if (hasRequiredRe) return re.exports;\n  hasRequiredRe = 1;\n  (function(module, exports) {\n    const {\n      MAX_SAFE_COMPONENT_LENGTH,\n      MAX_SAFE_BUILD_LENGTH,\n      MAX_LENGTH\n    } = requireConstants();\n    const debug = requireDebug();\n    exports = module.exports = {};\n    const re2 = exports.re = [];\n    const safeRe = exports.safeRe = [];\n    const src = exports.src = [];\n    const safeSrc = exports.safeSrc = [];\n    const t2 = exports.t = {};\n    let R = 0;\n    const LETTERDASHNUMBER = \"[a-zA-Z0-9-]\";\n    const safeRegexReplacements = [\n      [\"\\\\s\", 1],\n      [\"\\\\d\", MAX_LENGTH],\n      [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]\n    ];\n    const makeSafeRegex = (value) => {\n      for (const [token, max] of safeRegexReplacements) {\n        value = value.split(`${token}*`).join(`${token}{0,${max}}`).split(`${token}+`).join(`${token}{1,${max}}`);\n      }\n      return value;\n    };\n    const createToken = (name, value, isGlobal) => {\n      const safe = makeSafeRegex(value);\n      const index = R++;\n      debug(name, index, value);\n      t2[name] = index;\n      src[index] = value;\n      safeSrc[index] = safe;\n      re2[index] = new RegExp(value, isGlobal ? \"g\" : void 0);\n      safeRe[index] = new RegExp(safe, isGlobal ? \"g\" : void 0);\n    };\n    createToken(\"NUMERICIDENTIFIER\", \"0|[1-9]\\\\d*\");\n    createToken(\"NUMERICIDENTIFIERLOOSE\", \"\\\\d+\");\n    createToken(\"NONNUMERICIDENTIFIER\", `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);\n    createToken(\"MAINVERSION\", `(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})\\\\.(${src[t2.NUMERICIDENTIFIER]})`);\n    createToken(\"MAINVERSIONLOOSE\", `(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})\\\\.(${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n    createToken(\"PRERELEASEIDENTIFIER\", `(?:${src[t2.NONNUMERICIDENTIFIER]}|${src[t2.NUMERICIDENTIFIER]})`);\n    createToken(\"PRERELEASEIDENTIFIERLOOSE\", `(?:${src[t2.NONNUMERICIDENTIFIER]}|${src[t2.NUMERICIDENTIFIERLOOSE]})`);\n    createToken(\"PRERELEASE\", `(?:-(${src[t2.PRERELEASEIDENTIFIER]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIER]})*))`);\n    createToken(\"PRERELEASELOOSE\", `(?:-?(${src[t2.PRERELEASEIDENTIFIERLOOSE]}(?:\\\\.${src[t2.PRERELEASEIDENTIFIERLOOSE]})*))`);\n    createToken(\"BUILDIDENTIFIER\", `${LETTERDASHNUMBER}+`);\n    createToken(\"BUILD\", `(?:\\\\+(${src[t2.BUILDIDENTIFIER]}(?:\\\\.${src[t2.BUILDIDENTIFIER]})*))`);\n    createToken(\"FULLPLAIN\", `v?${src[t2.MAINVERSION]}${src[t2.PRERELEASE]}?${src[t2.BUILD]}?`);\n    createToken(\"FULL\", `^${src[t2.FULLPLAIN]}$`);\n    createToken(\"LOOSEPLAIN\", `[v=\\\\s]*${src[t2.MAINVERSIONLOOSE]}${src[t2.PRERELEASELOOSE]}?${src[t2.BUILD]}?`);\n    createToken(\"LOOSE\", `^${src[t2.LOOSEPLAIN]}$`);\n    createToken(\"GTLT\", \"((?:<|>)?=?)\");\n    createToken(\"XRANGEIDENTIFIERLOOSE\", `${src[t2.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`);\n    createToken(\"XRANGEIDENTIFIER\", `${src[t2.NUMERICIDENTIFIER]}|x|X|\\\\*`);\n    createToken(\"XRANGEPLAIN\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:\\\\.(${src[t2.XRANGEIDENTIFIER]})(?:${src[t2.PRERELEASE]})?${src[t2.BUILD]}?)?)?`);\n    createToken(\"XRANGEPLAINLOOSE\", `[v=\\\\s]*(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:\\\\.(${src[t2.XRANGEIDENTIFIERLOOSE]})(?:${src[t2.PRERELEASELOOSE]})?${src[t2.BUILD]}?)?)?`);\n    createToken(\"XRANGE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAIN]}$`);\n    createToken(\"XRANGELOOSE\", `^${src[t2.GTLT]}\\\\s*${src[t2.XRANGEPLAINLOOSE]}$`);\n    createToken(\"COERCEPLAIN\", `${\"(^|[^\\\\d])(\\\\d{1,\"}${MAX_SAFE_COMPONENT_LENGTH}})(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`);\n    createToken(\"COERCE\", `${src[t2.COERCEPLAIN]}(?:$|[^\\\\d])`);\n    createToken(\"COERCEFULL\", src[t2.COERCEPLAIN] + `(?:${src[t2.PRERELEASE]})?(?:${src[t2.BUILD]})?(?:$|[^\\\\d])`);\n    createToken(\"COERCERTL\", src[t2.COERCE], true);\n    createToken(\"COERCERTLFULL\", src[t2.COERCEFULL], true);\n    createToken(\"LONETILDE\", \"(?:~>?)\");\n    createToken(\"TILDETRIM\", `(\\\\s*)${src[t2.LONETILDE]}\\\\s+`, true);\n    exports.tildeTrimReplace = \"$1~\";\n    createToken(\"TILDE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAIN]}$`);\n    createToken(\"TILDELOOSE\", `^${src[t2.LONETILDE]}${src[t2.XRANGEPLAINLOOSE]}$`);\n    createToken(\"LONECARET\", \"(?:\\\\^)\");\n    createToken(\"CARETTRIM\", `(\\\\s*)${src[t2.LONECARET]}\\\\s+`, true);\n    exports.caretTrimReplace = \"$1^\";\n    createToken(\"CARET\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAIN]}$`);\n    createToken(\"CARETLOOSE\", `^${src[t2.LONECARET]}${src[t2.XRANGEPLAINLOOSE]}$`);\n    createToken(\"COMPARATORLOOSE\", `^${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]})$|^$`);\n    createToken(\"COMPARATOR\", `^${src[t2.GTLT]}\\\\s*(${src[t2.FULLPLAIN]})$|^$`);\n    createToken(\"COMPARATORTRIM\", `(\\\\s*)${src[t2.GTLT]}\\\\s*(${src[t2.LOOSEPLAIN]}|${src[t2.XRANGEPLAIN]})`, true);\n    exports.comparatorTrimReplace = \"$1$2$3\";\n    createToken(\"HYPHENRANGE\", `^\\\\s*(${src[t2.XRANGEPLAIN]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAIN]})\\\\s*$`);\n    createToken(\"HYPHENRANGELOOSE\", `^\\\\s*(${src[t2.XRANGEPLAINLOOSE]})\\\\s+-\\\\s+(${src[t2.XRANGEPLAINLOOSE]})\\\\s*$`);\n    createToken(\"STAR\", \"(<|>)?=?\\\\s*\\\\*\");\n    createToken(\"GTE0\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$\");\n    createToken(\"GTE0PRE\", \"^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$\");\n  })(re, re.exports);\n  return re.exports;\n}\nvar parseOptions_1;\nvar hasRequiredParseOptions;\nfunction requireParseOptions() {\n  if (hasRequiredParseOptions) return parseOptions_1;\n  hasRequiredParseOptions = 1;\n  const looseOption = Object.freeze({ loose: true });\n  const emptyOpts = Object.freeze({});\n  const parseOptions = (options) => {\n    if (!options) {\n      return emptyOpts;\n    }\n    if (typeof options !== \"object\") {\n      return looseOption;\n    }\n    return options;\n  };\n  parseOptions_1 = parseOptions;\n  return parseOptions_1;\n}\nvar identifiers;\nvar hasRequiredIdentifiers;\nfunction requireIdentifiers() {\n  if (hasRequiredIdentifiers) return identifiers;\n  hasRequiredIdentifiers = 1;\n  const numeric = /^[0-9]+$/;\n  const compareIdentifiers = (a2, b2) => {\n    if (typeof a2 === \"number\" && typeof b2 === \"number\") {\n      return a2 === b2 ? 0 : a2 < b2 ? -1 : 1;\n    }\n    const anum = numeric.test(a2);\n    const bnum = numeric.test(b2);\n    if (anum && bnum) {\n      a2 = +a2;\n      b2 = +b2;\n    }\n    return a2 === b2 ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a2 < b2 ? -1 : 1;\n  };\n  const rcompareIdentifiers = (a2, b2) => compareIdentifiers(b2, a2);\n  identifiers = {\n    compareIdentifiers,\n    rcompareIdentifiers\n  };\n  return identifiers;\n}\nvar semver;\nvar hasRequiredSemver;\nfunction requireSemver() {\n  if (hasRequiredSemver) return semver;\n  hasRequiredSemver = 1;\n  const debug = requireDebug();\n  const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants();\n  const { safeRe: re2, t: t2 } = requireRe();\n  const parseOptions = requireParseOptions();\n  const { compareIdentifiers } = requireIdentifiers();\n  class SemVer {\n    constructor(version, options) {\n      options = parseOptions(options);\n      if (version instanceof SemVer) {\n        if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {\n          return version;\n        } else {\n          version = version.version;\n        }\n      } else if (typeof version !== \"string\") {\n        throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`);\n      }\n      if (version.length > MAX_LENGTH) {\n        throw new TypeError(\n          `version is longer than ${MAX_LENGTH} characters`\n        );\n      }\n      debug(\"SemVer\", version, options);\n      this.options = options;\n      this.loose = !!options.loose;\n      this.includePrerelease = !!options.includePrerelease;\n      const m2 = version.trim().match(options.loose ? re2[t2.LOOSE] : re2[t2.FULL]);\n      if (!m2) {\n        throw new TypeError(`Invalid Version: ${version}`);\n      }\n      this.raw = version;\n      this.major = +m2[1];\n      this.minor = +m2[2];\n      this.patch = +m2[3];\n      if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n        throw new TypeError(\"Invalid major version\");\n      }\n      if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n        throw new TypeError(\"Invalid minor version\");\n      }\n      if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n        throw new TypeError(\"Invalid patch version\");\n      }\n      if (!m2[4]) {\n        this.prerelease = [];\n      } else {\n        this.prerelease = m2[4].split(\".\").map((id) => {\n          if (/^[0-9]+$/.test(id)) {\n            const num = +id;\n            if (num >= 0 && num < MAX_SAFE_INTEGER) {\n              return num;\n            }\n          }\n          return id;\n        });\n      }\n      this.build = m2[5] ? m2[5].split(\".\") : [];\n      this.format();\n    }\n    format() {\n      this.version = `${this.major}.${this.minor}.${this.patch}`;\n      if (this.prerelease.length) {\n        this.version += `-${this.prerelease.join(\".\")}`;\n      }\n      return this.version;\n    }\n    toString() {\n      return this.version;\n    }\n    compare(other) {\n      debug(\"SemVer.compare\", this.version, this.options, other);\n      if (!(other instanceof SemVer)) {\n        if (typeof other === \"string\" && other === this.version) {\n          return 0;\n        }\n        other = new SemVer(other, this.options);\n      }\n      if (other.version === this.version) {\n        return 0;\n      }\n      return this.compareMain(other) || this.comparePre(other);\n    }\n    compareMain(other) {\n      if (!(other instanceof SemVer)) {\n        other = new SemVer(other, this.options);\n      }\n      if (this.major < other.major) {\n        return -1;\n      }\n      if (this.major > other.major) {\n        return 1;\n      }\n      if (this.minor < other.minor) {\n        return -1;\n      }\n      if (this.minor > other.minor) {\n        return 1;\n      }\n      if (this.patch < other.patch) {\n        return -1;\n      }\n      if (this.patch > other.patch) {\n        return 1;\n      }\n      return 0;\n    }\n    comparePre(other) {\n      if (!(other instanceof SemVer)) {\n        other = new SemVer(other, this.options);\n      }\n      if (this.prerelease.length && !other.prerelease.length) {\n        return -1;\n      } else if (!this.prerelease.length && other.prerelease.length) {\n        return 1;\n      } else if (!this.prerelease.length && !other.prerelease.length) {\n        return 0;\n      }\n      let i2 = 0;\n      do {\n        const a2 = this.prerelease[i2];\n        const b2 = other.prerelease[i2];\n        debug(\"prerelease compare\", i2, a2, b2);\n        if (a2 === void 0 && b2 === void 0) {\n          return 0;\n        } else if (b2 === void 0) {\n          return 1;\n        } else if (a2 === void 0) {\n          return -1;\n        } else if (a2 === b2) {\n          continue;\n        } else {\n          return compareIdentifiers(a2, b2);\n        }\n      } while (++i2);\n    }\n    compareBuild(other) {\n      if (!(other instanceof SemVer)) {\n        other = new SemVer(other, this.options);\n      }\n      let i2 = 0;\n      do {\n        const a2 = this.build[i2];\n        const b2 = other.build[i2];\n        debug(\"build compare\", i2, a2, b2);\n        if (a2 === void 0 && b2 === void 0) {\n          return 0;\n        } else if (b2 === void 0) {\n          return 1;\n        } else if (a2 === void 0) {\n          return -1;\n        } else if (a2 === b2) {\n          continue;\n        } else {\n          return compareIdentifiers(a2, b2);\n        }\n      } while (++i2);\n    }\n    // preminor will bump the version up to the next minor release, and immediately\n    // down to pre-release. premajor and prepatch work the same way.\n    inc(release, identifier, identifierBase) {\n      if (release.startsWith(\"pre\")) {\n        if (!identifier && identifierBase === false) {\n          throw new Error(\"invalid increment argument: identifier is empty\");\n        }\n        if (identifier) {\n          const match = `-${identifier}`.match(this.options.loose ? re2[t2.PRERELEASELOOSE] : re2[t2.PRERELEASE]);\n          if (!match || match[1] !== identifier) {\n            throw new Error(`invalid identifier: ${identifier}`);\n          }\n        }\n      }\n      switch (release) {\n        case \"premajor\":\n          this.prerelease.length = 0;\n          this.patch = 0;\n          this.minor = 0;\n          this.major++;\n          this.inc(\"pre\", identifier, identifierBase);\n          break;\n        case \"preminor\":\n          this.prerelease.length = 0;\n          this.patch = 0;\n          this.minor++;\n          this.inc(\"pre\", identifier, identifierBase);\n          break;\n        case \"prepatch\":\n          this.prerelease.length = 0;\n          this.inc(\"patch\", identifier, identifierBase);\n          this.inc(\"pre\", identifier, identifierBase);\n          break;\n        // If the input is a non-prerelease version, this acts the same as\n        // prepatch.\n        case \"prerelease\":\n          if (this.prerelease.length === 0) {\n            this.inc(\"patch\", identifier, identifierBase);\n          }\n          this.inc(\"pre\", identifier, identifierBase);\n          break;\n        case \"release\":\n          if (this.prerelease.length === 0) {\n            throw new Error(`version ${this.raw} is not a prerelease`);\n          }\n          this.prerelease.length = 0;\n          break;\n        case \"major\":\n          if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {\n            this.major++;\n          }\n          this.minor = 0;\n          this.patch = 0;\n          this.prerelease = [];\n          break;\n        case \"minor\":\n          if (this.patch !== 0 || this.prerelease.length === 0) {\n            this.minor++;\n          }\n          this.patch = 0;\n          this.prerelease = [];\n          break;\n        case \"patch\":\n          if (this.prerelease.length === 0) {\n            this.patch++;\n          }\n          this.prerelease = [];\n          break;\n        // This probably shouldn't be used publicly.\n        // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n        case \"pre\": {\n          const base = Number(identifierBase) ? 1 : 0;\n          if (this.prerelease.length === 0) {\n            this.prerelease = [base];\n          } else {\n            let i2 = this.prerelease.length;\n            while (--i2 >= 0) {\n              if (typeof this.prerelease[i2] === \"number\") {\n                this.prerelease[i2]++;\n                i2 = -2;\n              }\n            }\n            if (i2 === -1) {\n              if (identifier === this.prerelease.join(\".\") && identifierBase === false) {\n                throw new Error(\"invalid increment argument: identifier already exists\");\n              }\n              this.prerelease.push(base);\n            }\n          }\n          if (identifier) {\n            let prerelease = [identifier, base];\n            if (identifierBase === false) {\n              prerelease = [identifier];\n            }\n            if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n              if (isNaN(this.prerelease[1])) {\n                this.prerelease = prerelease;\n              }\n            } else {\n              this.prerelease = prerelease;\n            }\n          }\n          break;\n        }\n        default:\n          throw new Error(`invalid increment argument: ${release}`);\n      }\n      this.raw = this.format();\n      if (this.build.length) {\n        this.raw += `+${this.build.join(\".\")}`;\n      }\n      return this;\n    }\n  }\n  semver = SemVer;\n  return semver;\n}\nvar major_1;\nvar hasRequiredMajor;\nfunction requireMajor() {\n  if (hasRequiredMajor) return major_1;\n  hasRequiredMajor = 1;\n  const SemVer = requireSemver();\n  const major2 = (a2, loose) => new SemVer(a2, loose).major;\n  major_1 = major2;\n  return major_1;\n}\nvar majorExports = requireMajor();\nconst major = /* @__PURE__ */ getDefaultExportFromCjs(majorExports);\nvar parse_1;\nvar hasRequiredParse;\nfunction requireParse() {\n  if (hasRequiredParse) return parse_1;\n  hasRequiredParse = 1;\n  const SemVer = requireSemver();\n  const parse = (version, options, throwErrors = false) => {\n    if (version instanceof SemVer) {\n      return version;\n    }\n    try {\n      return new SemVer(version, options);\n    } catch (er) {\n      if (!throwErrors) {\n        return null;\n      }\n      throw er;\n    }\n  };\n  parse_1 = parse;\n  return parse_1;\n}\nvar valid_1;\nvar hasRequiredValid;\nfunction requireValid() {\n  if (hasRequiredValid) return valid_1;\n  hasRequiredValid = 1;\n  const parse = requireParse();\n  const valid2 = (version, options) => {\n    const v = parse(version, options);\n    return v ? v.version : null;\n  };\n  valid_1 = valid2;\n  return valid_1;\n}\nvar validExports = requireValid();\nconst valid = /* @__PURE__ */ getDefaultExportFromCjs(validExports);\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass ProxyBus {\n  bus;\n  constructor(bus2) {\n    if (typeof bus2.getVersion !== \"function\" || !valid(bus2.getVersion())) {\n      console.warn(\"Proxying an event bus with an unknown or invalid version\");\n    } else if (major(bus2.getVersion()) !== major(this.getVersion())) {\n      console.warn(\n        \"Proxying an event bus of version \" + bus2.getVersion() + \" with \" + this.getVersion()\n      );\n    }\n    this.bus = bus2;\n  }\n  getVersion() {\n    return \"3.3.3\";\n  }\n  subscribe(name, handler) {\n    this.bus.subscribe(name, handler);\n  }\n  unsubscribe(name, handler) {\n    this.bus.unsubscribe(name, handler);\n  }\n  emit(name, ...event) {\n    this.bus.emit(name, ...event);\n  }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nclass SimpleBus {\n  handlers = /* @__PURE__ */ new Map();\n  getVersion() {\n    return \"3.3.3\";\n  }\n  subscribe(name, handler) {\n    this.handlers.set(\n      name,\n      (this.handlers.get(name) || []).concat(\n        handler\n      )\n    );\n  }\n  unsubscribe(name, handler) {\n    this.handlers.set(\n      name,\n      (this.handlers.get(name) || []).filter((h2) => h2 !== handler)\n    );\n  }\n  emit(name, ...event) {\n    const handlers = this.handlers.get(name) || [];\n    handlers.forEach((h2) => {\n      try {\n        ;\n        h2(event[0]);\n      } catch (e2) {\n        console.error(\"could not invoke event listener\", e2);\n      }\n    });\n  }\n}\n/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: GPL-3.0-or-later\n */\nlet bus = null;\nfunction getBus() {\n  if (bus !== null) {\n    return bus;\n  }\n  if (typeof window === \"undefined\") {\n    return new Proxy({}, {\n      get: () => {\n        return () => console.error(\n          \"Window not available, EventBus can not be established!\"\n        );\n      }\n    });\n  }\n  if (window.OC?._eventBus && typeof window._nc_event_bus === \"undefined\") {\n    console.warn(\n      \"found old event bus instance at OC._eventBus. Update your version!\"\n    );\n    window._nc_event_bus = window.OC._eventBus;\n  }\n  if (typeof window?._nc_event_bus !== \"undefined\") {\n    bus = new ProxyBus(window._nc_event_bus);\n  } else {\n    bus = window._nc_event_bus = new SimpleBus();\n  }\n  return bus;\n}\nfunction emit(name, ...event) {\n  getBus().emit(name, ...event);\n}\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass FileListFilter extends TypedEventTarget {\n  id;\n  order;\n  constructor(id, order = 100) {\n    super();\n    this.id = id;\n    this.order = order;\n  }\n  filter(nodes) {\n    throw new Error(\"Not implemented\");\n  }\n  updateChips(chips) {\n    this.dispatchTypedEvent(\"update:chips\", new CustomEvent(\"update:chips\", { detail: chips }));\n  }\n  filterUpdated() {\n    this.dispatchTypedEvent(\"update:filter\", new CustomEvent(\"update:filter\"));\n  }\n}\nfunction registerFileListFilter(filter) {\n  if (!window._nc_filelist_filters) {\n    window._nc_filelist_filters = /* @__PURE__ */ new Map();\n  }\n  if (window._nc_filelist_filters.has(filter.id)) {\n    throw new Error(`File list filter \"${filter.id}\" already registered`);\n  }\n  window._nc_filelist_filters.set(filter.id, filter);\n  emit(\"files:filter:added\", filter);\n}\nfunction unregisterFileListFilter(filterId) {\n  if (window._nc_filelist_filters && window._nc_filelist_filters.has(filterId)) {\n    window._nc_filelist_filters.delete(filterId);\n    emit(\"files:filter:removed\", filterId);\n  }\n}\nfunction getFileListFilters() {\n  if (!window._nc_filelist_filters) {\n    return [];\n  }\n  return [...window._nc_filelist_filters.values()];\n}\nclass Header {\n  _header;\n  constructor(header) {\n    this.validateHeader(header);\n    this._header = header;\n  }\n  get id() {\n    return this._header.id;\n  }\n  get order() {\n    return this._header.order;\n  }\n  get enabled() {\n    return this._header.enabled;\n  }\n  get render() {\n    return this._header.render;\n  }\n  get updated() {\n    return this._header.updated;\n  }\n  validateHeader(header) {\n    if (!header.id || !header.render || !header.updated) {\n      throw new Error(\"Invalid header: id, render and updated are required\");\n    }\n    if (typeof header.id !== \"string\") {\n      throw new Error(\"Invalid id property\");\n    }\n    if (header.enabled !== void 0 && typeof header.enabled !== \"function\") {\n      throw new Error(\"Invalid enabled property\");\n    }\n    if (header.render && typeof header.render !== \"function\") {\n      throw new Error(\"Invalid render property\");\n    }\n    if (header.updated && typeof header.updated !== \"function\") {\n      throw new Error(\"Invalid updated property\");\n    }\n  }\n}\nconst registerFileListHeaders = function(header) {\n  if (typeof window._nc_filelistheader === \"undefined\") {\n    window._nc_filelistheader = [];\n    logger.debug(\"FileListHeaders initialized\");\n  }\n  if (window._nc_filelistheader.find((search) => search.id === header.id)) {\n    logger.error(`Header ${header.id} already registered`, { header });\n    return;\n  }\n  window._nc_filelistheader.push(header);\n};\nconst getFileListHeaders = function() {\n  if (typeof window._nc_filelistheader === \"undefined\") {\n    window._nc_filelistheader = [];\n    logger.debug(\"FileListHeaders initialized\");\n  }\n  return window._nc_filelistheader;\n};\nclass Navigation extends TypedEventTarget {\n  _views = [];\n  _currentView = null;\n  /**\n   * Register a new view on the navigation\n   * @param view The view to register\n   * @throws `Error` is thrown if a view with the same id is already registered\n   */\n  register(view) {\n    if (this._views.find((search) => search.id === view.id)) {\n      throw new Error(`View id ${view.id} is already registered`);\n    }\n    this._views.push(view);\n    this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n  }\n  /**\n   * Remove a registered view\n   * @param id The id of the view to remove\n   */\n  remove(id) {\n    const index = this._views.findIndex((view) => view.id === id);\n    if (index !== -1) {\n      this._views.splice(index, 1);\n      this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\"));\n    }\n  }\n  /**\n   * Set the currently active view\n   * @fires UpdateActiveViewEvent\n   * @param view New active view\n   */\n  setActive(view) {\n    this._currentView = view;\n    const event = new CustomEvent(\"updateActive\", { detail: view });\n    this.dispatchTypedEvent(\"updateActive\", event);\n  }\n  /**\n   * The currently active files view\n   */\n  get active() {\n    return this._currentView;\n  }\n  /**\n   * All registered views\n   */\n  get views() {\n    return this._views;\n  }\n}\nconst getNavigation = function() {\n  if (typeof window._nc_navigation === \"undefined\") {\n    window._nc_navigation = new Navigation();\n    logger.debug(\"Navigation service initialized\");\n  }\n  return window._nc_navigation;\n};\nclass Column {\n  _column;\n  constructor(column) {\n    isValidColumn(column);\n    this._column = column;\n  }\n  get id() {\n    return this._column.id;\n  }\n  get title() {\n    return this._column.title;\n  }\n  get render() {\n    return this._column.render;\n  }\n  get sort() {\n    return this._column.sort;\n  }\n  get summary() {\n    return this._column.summary;\n  }\n}\nconst isValidColumn = function(column) {\n  if (!column.id || typeof column.id !== \"string\") {\n    throw new Error(\"A column id is required\");\n  }\n  if (!column.title || typeof column.title !== \"string\") {\n    throw new Error(\"A column title is required\");\n  }\n  if (!column.render || typeof column.render !== \"function\") {\n    throw new Error(\"A render function is required\");\n  }\n  if (column.sort && typeof column.sort !== \"function\") {\n    throw new Error(\"Column sortFunction must be a function\");\n  }\n  if (column.summary && typeof column.summary !== \"function\") {\n    throw new Error(\"Column summary must be a function\");\n  }\n  return true;\n};\nvar sax$1 = {};\nvar hasRequiredSax;\nfunction requireSax() {\n  if (hasRequiredSax) return sax$1;\n  hasRequiredSax = 1;\n  (function(exports) {\n    (function(sax2) {\n      sax2.parser = function(strict, opt) {\n        return new SAXParser(strict, opt);\n      };\n      sax2.SAXParser = SAXParser;\n      sax2.SAXStream = SAXStream;\n      sax2.createStream = createStream;\n      sax2.MAX_BUFFER_LENGTH = 64 * 1024;\n      var buffers = [\n        \"comment\",\n        \"sgmlDecl\",\n        \"textNode\",\n        \"tagName\",\n        \"doctype\",\n        \"procInstName\",\n        \"procInstBody\",\n        \"entity\",\n        \"attribName\",\n        \"attribValue\",\n        \"cdata\",\n        \"script\"\n      ];\n      sax2.EVENTS = [\n        \"text\",\n        \"processinginstruction\",\n        \"sgmldeclaration\",\n        \"doctype\",\n        \"comment\",\n        \"opentagstart\",\n        \"attribute\",\n        \"opentag\",\n        \"closetag\",\n        \"opencdata\",\n        \"cdata\",\n        \"closecdata\",\n        \"error\",\n        \"end\",\n        \"ready\",\n        \"script\",\n        \"opennamespace\",\n        \"closenamespace\"\n      ];\n      function SAXParser(strict, opt) {\n        if (!(this instanceof SAXParser)) {\n          return new SAXParser(strict, opt);\n        }\n        var parser = this;\n        clearBuffers(parser);\n        parser.q = parser.c = \"\";\n        parser.bufferCheckPosition = sax2.MAX_BUFFER_LENGTH;\n        parser.opt = opt || {};\n        parser.opt.lowercase = parser.opt.lowercase || parser.opt.lowercasetags;\n        parser.looseCase = parser.opt.lowercase ? \"toLowerCase\" : \"toUpperCase\";\n        parser.tags = [];\n        parser.closed = parser.closedRoot = parser.sawRoot = false;\n        parser.tag = parser.error = null;\n        parser.strict = !!strict;\n        parser.noscript = !!(strict || parser.opt.noscript);\n        parser.state = S.BEGIN;\n        parser.strictEntities = parser.opt.strictEntities;\n        parser.ENTITIES = parser.strictEntities ? Object.create(sax2.XML_ENTITIES) : Object.create(sax2.ENTITIES);\n        parser.attribList = [];\n        if (parser.opt.xmlns) {\n          parser.ns = Object.create(rootNS);\n        }\n        if (parser.opt.unquotedAttributeValues === void 0) {\n          parser.opt.unquotedAttributeValues = !strict;\n        }\n        parser.trackPosition = parser.opt.position !== false;\n        if (parser.trackPosition) {\n          parser.position = parser.line = parser.column = 0;\n        }\n        emit2(parser, \"onready\");\n      }\n      if (!Object.create) {\n        Object.create = function(o) {\n          function F() {\n          }\n          F.prototype = o;\n          var newf = new F();\n          return newf;\n        };\n      }\n      if (!Object.keys) {\n        Object.keys = function(o) {\n          var a2 = [];\n          for (var i2 in o) if (o.hasOwnProperty(i2)) a2.push(i2);\n          return a2;\n        };\n      }\n      function checkBufferLength(parser) {\n        var maxAllowed = Math.max(sax2.MAX_BUFFER_LENGTH, 10);\n        var maxActual = 0;\n        for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n          var len = parser[buffers[i2]].length;\n          if (len > maxAllowed) {\n            switch (buffers[i2]) {\n              case \"textNode\":\n                closeText(parser);\n                break;\n              case \"cdata\":\n                emitNode(parser, \"oncdata\", parser.cdata);\n                parser.cdata = \"\";\n                break;\n              case \"script\":\n                emitNode(parser, \"onscript\", parser.script);\n                parser.script = \"\";\n                break;\n              default:\n                error(parser, \"Max buffer length exceeded: \" + buffers[i2]);\n            }\n          }\n          maxActual = Math.max(maxActual, len);\n        }\n        var m2 = sax2.MAX_BUFFER_LENGTH - maxActual;\n        parser.bufferCheckPosition = m2 + parser.position;\n      }\n      function clearBuffers(parser) {\n        for (var i2 = 0, l2 = buffers.length; i2 < l2; i2++) {\n          parser[buffers[i2]] = \"\";\n        }\n      }\n      function flushBuffers(parser) {\n        closeText(parser);\n        if (parser.cdata !== \"\") {\n          emitNode(parser, \"oncdata\", parser.cdata);\n          parser.cdata = \"\";\n        }\n        if (parser.script !== \"\") {\n          emitNode(parser, \"onscript\", parser.script);\n          parser.script = \"\";\n        }\n      }\n      SAXParser.prototype = {\n        end: function() {\n          end(this);\n        },\n        write,\n        resume: function() {\n          this.error = null;\n          return this;\n        },\n        close: function() {\n          return this.write(null);\n        },\n        flush: function() {\n          flushBuffers(this);\n        }\n      };\n      var Stream;\n      try {\n        Stream = require(\"stream\").Stream;\n      } catch (ex) {\n        Stream = function() {\n        };\n      }\n      if (!Stream) Stream = function() {\n      };\n      var streamWraps = sax2.EVENTS.filter(function(ev) {\n        return ev !== \"error\" && ev !== \"end\";\n      });\n      function createStream(strict, opt) {\n        return new SAXStream(strict, opt);\n      }\n      function SAXStream(strict, opt) {\n        if (!(this instanceof SAXStream)) {\n          return new SAXStream(strict, opt);\n        }\n        Stream.apply(this);\n        this._parser = new SAXParser(strict, opt);\n        this.writable = true;\n        this.readable = true;\n        var me = this;\n        this._parser.onend = function() {\n          me.emit(\"end\");\n        };\n        this._parser.onerror = function(er) {\n          me.emit(\"error\", er);\n          me._parser.error = null;\n        };\n        this._decoder = null;\n        streamWraps.forEach(function(ev) {\n          Object.defineProperty(me, \"on\" + ev, {\n            get: function() {\n              return me._parser[\"on\" + ev];\n            },\n            set: function(h2) {\n              if (!h2) {\n                me.removeAllListeners(ev);\n                me._parser[\"on\" + ev] = h2;\n                return h2;\n              }\n              me.on(ev, h2);\n            },\n            enumerable: true,\n            configurable: false\n          });\n        });\n      }\n      SAXStream.prototype = Object.create(Stream.prototype, {\n        constructor: {\n          value: SAXStream\n        }\n      });\n      SAXStream.prototype.write = function(data) {\n        if (typeof Buffer === \"function\" && typeof Buffer.isBuffer === \"function\" && Buffer.isBuffer(data)) {\n          if (!this._decoder) {\n            var SD = require$$1.StringDecoder;\n            this._decoder = new SD(\"utf8\");\n          }\n          data = this._decoder.write(data);\n        }\n        this._parser.write(data.toString());\n        this.emit(\"data\", data);\n        return true;\n      };\n      SAXStream.prototype.end = function(chunk) {\n        if (chunk && chunk.length) {\n          this.write(chunk);\n        }\n        this._parser.end();\n        return true;\n      };\n      SAXStream.prototype.on = function(ev, handler) {\n        var me = this;\n        if (!me._parser[\"on\" + ev] && streamWraps.indexOf(ev) !== -1) {\n          me._parser[\"on\" + ev] = function() {\n            var args = arguments.length === 1 ? [arguments[0]] : Array.apply(null, arguments);\n            args.splice(0, 0, ev);\n            me.emit.apply(me, args);\n          };\n        }\n        return Stream.prototype.on.call(me, ev, handler);\n      };\n      var CDATA = \"[CDATA[\";\n      var DOCTYPE = \"DOCTYPE\";\n      var XML_NAMESPACE = \"http://www.w3.org/XML/1998/namespace\";\n      var XMLNS_NAMESPACE = \"http://www.w3.org/2000/xmlns/\";\n      var rootNS = { xml: XML_NAMESPACE, xmlns: XMLNS_NAMESPACE };\n      var nameStart = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n      var nameBody = /[:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n      var entityStart = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD]/;\n      var entityBody = /[#:_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\u00B7\\u0300-\\u036F\\u203F-\\u2040.\\d-]/;\n      function isWhitespace(c2) {\n        return c2 === \" \" || c2 === \"\\n\" || c2 === \"\\r\" || c2 === \"\t\";\n      }\n      function isQuote(c2) {\n        return c2 === '\"' || c2 === \"'\";\n      }\n      function isAttribEnd(c2) {\n        return c2 === \">\" || isWhitespace(c2);\n      }\n      function isMatch(regex, c2) {\n        return regex.test(c2);\n      }\n      function notMatch(regex, c2) {\n        return !isMatch(regex, c2);\n      }\n      var S = 0;\n      sax2.STATE = {\n        BEGIN: S++,\n        // leading byte order mark or whitespace\n        BEGIN_WHITESPACE: S++,\n        // leading whitespace\n        TEXT: S++,\n        // general stuff\n        TEXT_ENTITY: S++,\n        // &amp and such.\n        OPEN_WAKA: S++,\n        // <\n        SGML_DECL: S++,\n        // <!BLARG\n        SGML_DECL_QUOTED: S++,\n        // <!BLARG foo \"bar\n        DOCTYPE: S++,\n        // <!DOCTYPE\n        DOCTYPE_QUOTED: S++,\n        // <!DOCTYPE \"//blah\n        DOCTYPE_DTD: S++,\n        // <!DOCTYPE \"//blah\" [ ...\n        DOCTYPE_DTD_QUOTED: S++,\n        // <!DOCTYPE \"//blah\" [ \"foo\n        COMMENT_STARTING: S++,\n        // <!-\n        COMMENT: S++,\n        // <!--\n        COMMENT_ENDING: S++,\n        // <!-- blah -\n        COMMENT_ENDED: S++,\n        // <!-- blah --\n        CDATA: S++,\n        // <![CDATA[ something\n        CDATA_ENDING: S++,\n        // ]\n        CDATA_ENDING_2: S++,\n        // ]]\n        PROC_INST: S++,\n        // <?hi\n        PROC_INST_BODY: S++,\n        // <?hi there\n        PROC_INST_ENDING: S++,\n        // <?hi \"there\" ?\n        OPEN_TAG: S++,\n        // <strong\n        OPEN_TAG_SLASH: S++,\n        // <strong /\n        ATTRIB: S++,\n        // <a\n        ATTRIB_NAME: S++,\n        // <a foo\n        ATTRIB_NAME_SAW_WHITE: S++,\n        // <a foo _\n        ATTRIB_VALUE: S++,\n        // <a foo=\n        ATTRIB_VALUE_QUOTED: S++,\n        // <a foo=\"bar\n        ATTRIB_VALUE_CLOSED: S++,\n        // <a foo=\"bar\"\n        ATTRIB_VALUE_UNQUOTED: S++,\n        // <a foo=bar\n        ATTRIB_VALUE_ENTITY_Q: S++,\n        // <foo bar=\"&quot;\"\n        ATTRIB_VALUE_ENTITY_U: S++,\n        // <foo bar=&quot\n        CLOSE_TAG: S++,\n        // </a\n        CLOSE_TAG_SAW_WHITE: S++,\n        // </a   >\n        SCRIPT: S++,\n        // <script> ...\n        SCRIPT_ENDING: S++\n        // <script> ... <\n      };\n      sax2.XML_ENTITIES = {\n        \"amp\": \"&\",\n        \"gt\": \">\",\n        \"lt\": \"<\",\n        \"quot\": '\"',\n        \"apos\": \"'\"\n      };\n      sax2.ENTITIES = {\n        \"amp\": \"&\",\n        \"gt\": \">\",\n        \"lt\": \"<\",\n        \"quot\": '\"',\n        \"apos\": \"'\",\n        \"AElig\": 198,\n        \"Aacute\": 193,\n        \"Acirc\": 194,\n        \"Agrave\": 192,\n        \"Aring\": 197,\n        \"Atilde\": 195,\n        \"Auml\": 196,\n        \"Ccedil\": 199,\n        \"ETH\": 208,\n        \"Eacute\": 201,\n        \"Ecirc\": 202,\n        \"Egrave\": 200,\n        \"Euml\": 203,\n        \"Iacute\": 205,\n        \"Icirc\": 206,\n        \"Igrave\": 204,\n        \"Iuml\": 207,\n        \"Ntilde\": 209,\n        \"Oacute\": 211,\n        \"Ocirc\": 212,\n        \"Ograve\": 210,\n        \"Oslash\": 216,\n        \"Otilde\": 213,\n        \"Ouml\": 214,\n        \"THORN\": 222,\n        \"Uacute\": 218,\n        \"Ucirc\": 219,\n        \"Ugrave\": 217,\n        \"Uuml\": 220,\n        \"Yacute\": 221,\n        \"aacute\": 225,\n        \"acirc\": 226,\n        \"aelig\": 230,\n        \"agrave\": 224,\n        \"aring\": 229,\n        \"atilde\": 227,\n        \"auml\": 228,\n        \"ccedil\": 231,\n        \"eacute\": 233,\n        \"ecirc\": 234,\n        \"egrave\": 232,\n        \"eth\": 240,\n        \"euml\": 235,\n        \"iacute\": 237,\n        \"icirc\": 238,\n        \"igrave\": 236,\n        \"iuml\": 239,\n        \"ntilde\": 241,\n        \"oacute\": 243,\n        \"ocirc\": 244,\n        \"ograve\": 242,\n        \"oslash\": 248,\n        \"otilde\": 245,\n        \"ouml\": 246,\n        \"szlig\": 223,\n        \"thorn\": 254,\n        \"uacute\": 250,\n        \"ucirc\": 251,\n        \"ugrave\": 249,\n        \"uuml\": 252,\n        \"yacute\": 253,\n        \"yuml\": 255,\n        \"copy\": 169,\n        \"reg\": 174,\n        \"nbsp\": 160,\n        \"iexcl\": 161,\n        \"cent\": 162,\n        \"pound\": 163,\n        \"curren\": 164,\n        \"yen\": 165,\n        \"brvbar\": 166,\n        \"sect\": 167,\n        \"uml\": 168,\n        \"ordf\": 170,\n        \"laquo\": 171,\n        \"not\": 172,\n        \"shy\": 173,\n        \"macr\": 175,\n        \"deg\": 176,\n        \"plusmn\": 177,\n        \"sup1\": 185,\n        \"sup2\": 178,\n        \"sup3\": 179,\n        \"acute\": 180,\n        \"micro\": 181,\n        \"para\": 182,\n        \"middot\": 183,\n        \"cedil\": 184,\n        \"ordm\": 186,\n        \"raquo\": 187,\n        \"frac14\": 188,\n        \"frac12\": 189,\n        \"frac34\": 190,\n        \"iquest\": 191,\n        \"times\": 215,\n        \"divide\": 247,\n        \"OElig\": 338,\n        \"oelig\": 339,\n        \"Scaron\": 352,\n        \"scaron\": 353,\n        \"Yuml\": 376,\n        \"fnof\": 402,\n        \"circ\": 710,\n        \"tilde\": 732,\n        \"Alpha\": 913,\n        \"Beta\": 914,\n        \"Gamma\": 915,\n        \"Delta\": 916,\n        \"Epsilon\": 917,\n        \"Zeta\": 918,\n        \"Eta\": 919,\n        \"Theta\": 920,\n        \"Iota\": 921,\n        \"Kappa\": 922,\n        \"Lambda\": 923,\n        \"Mu\": 924,\n        \"Nu\": 925,\n        \"Xi\": 926,\n        \"Omicron\": 927,\n        \"Pi\": 928,\n        \"Rho\": 929,\n        \"Sigma\": 931,\n        \"Tau\": 932,\n        \"Upsilon\": 933,\n        \"Phi\": 934,\n        \"Chi\": 935,\n        \"Psi\": 936,\n        \"Omega\": 937,\n        \"alpha\": 945,\n        \"beta\": 946,\n        \"gamma\": 947,\n        \"delta\": 948,\n        \"epsilon\": 949,\n        \"zeta\": 950,\n        \"eta\": 951,\n        \"theta\": 952,\n        \"iota\": 953,\n        \"kappa\": 954,\n        \"lambda\": 955,\n        \"mu\": 956,\n        \"nu\": 957,\n        \"xi\": 958,\n        \"omicron\": 959,\n        \"pi\": 960,\n        \"rho\": 961,\n        \"sigmaf\": 962,\n        \"sigma\": 963,\n        \"tau\": 964,\n        \"upsilon\": 965,\n        \"phi\": 966,\n        \"chi\": 967,\n        \"psi\": 968,\n        \"omega\": 969,\n        \"thetasym\": 977,\n        \"upsih\": 978,\n        \"piv\": 982,\n        \"ensp\": 8194,\n        \"emsp\": 8195,\n        \"thinsp\": 8201,\n        \"zwnj\": 8204,\n        \"zwj\": 8205,\n        \"lrm\": 8206,\n        \"rlm\": 8207,\n        \"ndash\": 8211,\n        \"mdash\": 8212,\n        \"lsquo\": 8216,\n        \"rsquo\": 8217,\n        \"sbquo\": 8218,\n        \"ldquo\": 8220,\n        \"rdquo\": 8221,\n        \"bdquo\": 8222,\n        \"dagger\": 8224,\n        \"Dagger\": 8225,\n        \"bull\": 8226,\n        \"hellip\": 8230,\n        \"permil\": 8240,\n        \"prime\": 8242,\n        \"Prime\": 8243,\n        \"lsaquo\": 8249,\n        \"rsaquo\": 8250,\n        \"oline\": 8254,\n        \"frasl\": 8260,\n        \"euro\": 8364,\n        \"image\": 8465,\n        \"weierp\": 8472,\n        \"real\": 8476,\n        \"trade\": 8482,\n        \"alefsym\": 8501,\n        \"larr\": 8592,\n        \"uarr\": 8593,\n        \"rarr\": 8594,\n        \"darr\": 8595,\n        \"harr\": 8596,\n        \"crarr\": 8629,\n        \"lArr\": 8656,\n        \"uArr\": 8657,\n        \"rArr\": 8658,\n        \"dArr\": 8659,\n        \"hArr\": 8660,\n        \"forall\": 8704,\n        \"part\": 8706,\n        \"exist\": 8707,\n        \"empty\": 8709,\n        \"nabla\": 8711,\n        \"isin\": 8712,\n        \"notin\": 8713,\n        \"ni\": 8715,\n        \"prod\": 8719,\n        \"sum\": 8721,\n        \"minus\": 8722,\n        \"lowast\": 8727,\n        \"radic\": 8730,\n        \"prop\": 8733,\n        \"infin\": 8734,\n        \"ang\": 8736,\n        \"and\": 8743,\n        \"or\": 8744,\n        \"cap\": 8745,\n        \"cup\": 8746,\n        \"int\": 8747,\n        \"there4\": 8756,\n        \"sim\": 8764,\n        \"cong\": 8773,\n        \"asymp\": 8776,\n        \"ne\": 8800,\n        \"equiv\": 8801,\n        \"le\": 8804,\n        \"ge\": 8805,\n        \"sub\": 8834,\n        \"sup\": 8835,\n        \"nsub\": 8836,\n        \"sube\": 8838,\n        \"supe\": 8839,\n        \"oplus\": 8853,\n        \"otimes\": 8855,\n        \"perp\": 8869,\n        \"sdot\": 8901,\n        \"lceil\": 8968,\n        \"rceil\": 8969,\n        \"lfloor\": 8970,\n        \"rfloor\": 8971,\n        \"lang\": 9001,\n        \"rang\": 9002,\n        \"loz\": 9674,\n        \"spades\": 9824,\n        \"clubs\": 9827,\n        \"hearts\": 9829,\n        \"diams\": 9830\n      };\n      Object.keys(sax2.ENTITIES).forEach(function(key) {\n        var e2 = sax2.ENTITIES[key];\n        var s3 = typeof e2 === \"number\" ? String.fromCharCode(e2) : e2;\n        sax2.ENTITIES[key] = s3;\n      });\n      for (var s2 in sax2.STATE) {\n        sax2.STATE[sax2.STATE[s2]] = s2;\n      }\n      S = sax2.STATE;\n      function emit2(parser, event, data) {\n        parser[event] && parser[event](data);\n      }\n      function emitNode(parser, nodeType, data) {\n        if (parser.textNode) closeText(parser);\n        emit2(parser, nodeType, data);\n      }\n      function closeText(parser) {\n        parser.textNode = textopts(parser.opt, parser.textNode);\n        if (parser.textNode) emit2(parser, \"ontext\", parser.textNode);\n        parser.textNode = \"\";\n      }\n      function textopts(opt, text) {\n        if (opt.trim) text = text.trim();\n        if (opt.normalize) text = text.replace(/\\s+/g, \" \");\n        return text;\n      }\n      function error(parser, er) {\n        closeText(parser);\n        if (parser.trackPosition) {\n          er += \"\\nLine: \" + parser.line + \"\\nColumn: \" + parser.column + \"\\nChar: \" + parser.c;\n        }\n        er = new Error(er);\n        parser.error = er;\n        emit2(parser, \"onerror\", er);\n        return parser;\n      }\n      function end(parser) {\n        if (parser.sawRoot && !parser.closedRoot) strictFail(parser, \"Unclosed root tag\");\n        if (parser.state !== S.BEGIN && parser.state !== S.BEGIN_WHITESPACE && parser.state !== S.TEXT) {\n          error(parser, \"Unexpected end\");\n        }\n        closeText(parser);\n        parser.c = \"\";\n        parser.closed = true;\n        emit2(parser, \"onend\");\n        SAXParser.call(parser, parser.strict, parser.opt);\n        return parser;\n      }\n      function strictFail(parser, message) {\n        if (typeof parser !== \"object\" || !(parser instanceof SAXParser)) {\n          throw new Error(\"bad call to strictFail\");\n        }\n        if (parser.strict) {\n          error(parser, message);\n        }\n      }\n      function newTag(parser) {\n        if (!parser.strict) parser.tagName = parser.tagName[parser.looseCase]();\n        var parent = parser.tags[parser.tags.length - 1] || parser;\n        var tag = parser.tag = { name: parser.tagName, attributes: {} };\n        if (parser.opt.xmlns) {\n          tag.ns = parent.ns;\n        }\n        parser.attribList.length = 0;\n        emitNode(parser, \"onopentagstart\", tag);\n      }\n      function qname(name, attribute) {\n        var i2 = name.indexOf(\":\");\n        var qualName = i2 < 0 ? [\"\", name] : name.split(\":\");\n        var prefix = qualName[0];\n        var local = qualName[1];\n        if (attribute && name === \"xmlns\") {\n          prefix = \"xmlns\";\n          local = \"\";\n        }\n        return { prefix, local };\n      }\n      function attrib(parser) {\n        if (!parser.strict) {\n          parser.attribName = parser.attribName[parser.looseCase]();\n        }\n        if (parser.attribList.indexOf(parser.attribName) !== -1 || parser.tag.attributes.hasOwnProperty(parser.attribName)) {\n          parser.attribName = parser.attribValue = \"\";\n          return;\n        }\n        if (parser.opt.xmlns) {\n          var qn = qname(parser.attribName, true);\n          var prefix = qn.prefix;\n          var local = qn.local;\n          if (prefix === \"xmlns\") {\n            if (local === \"xml\" && parser.attribValue !== XML_NAMESPACE) {\n              strictFail(\n                parser,\n                \"xml: prefix must be bound to \" + XML_NAMESPACE + \"\\nActual: \" + parser.attribValue\n              );\n            } else if (local === \"xmlns\" && parser.attribValue !== XMLNS_NAMESPACE) {\n              strictFail(\n                parser,\n                \"xmlns: prefix must be bound to \" + XMLNS_NAMESPACE + \"\\nActual: \" + parser.attribValue\n              );\n            } else {\n              var tag = parser.tag;\n              var parent = parser.tags[parser.tags.length - 1] || parser;\n              if (tag.ns === parent.ns) {\n                tag.ns = Object.create(parent.ns);\n              }\n              tag.ns[local] = parser.attribValue;\n            }\n          }\n          parser.attribList.push([parser.attribName, parser.attribValue]);\n        } else {\n          parser.tag.attributes[parser.attribName] = parser.attribValue;\n          emitNode(parser, \"onattribute\", {\n            name: parser.attribName,\n            value: parser.attribValue\n          });\n        }\n        parser.attribName = parser.attribValue = \"\";\n      }\n      function openTag(parser, selfClosing) {\n        if (parser.opt.xmlns) {\n          var tag = parser.tag;\n          var qn = qname(parser.tagName);\n          tag.prefix = qn.prefix;\n          tag.local = qn.local;\n          tag.uri = tag.ns[qn.prefix] || \"\";\n          if (tag.prefix && !tag.uri) {\n            strictFail(parser, \"Unbound namespace prefix: \" + JSON.stringify(parser.tagName));\n            tag.uri = qn.prefix;\n          }\n          var parent = parser.tags[parser.tags.length - 1] || parser;\n          if (tag.ns && parent.ns !== tag.ns) {\n            Object.keys(tag.ns).forEach(function(p2) {\n              emitNode(parser, \"onopennamespace\", {\n                prefix: p2,\n                uri: tag.ns[p2]\n              });\n            });\n          }\n          for (var i2 = 0, l2 = parser.attribList.length; i2 < l2; i2++) {\n            var nv = parser.attribList[i2];\n            var name = nv[0];\n            var value = nv[1];\n            var qualName = qname(name, true);\n            var prefix = qualName.prefix;\n            var local = qualName.local;\n            var uri = prefix === \"\" ? \"\" : tag.ns[prefix] || \"\";\n            var a2 = {\n              name,\n              value,\n              prefix,\n              local,\n              uri\n            };\n            if (prefix && prefix !== \"xmlns\" && !uri) {\n              strictFail(parser, \"Unbound namespace prefix: \" + JSON.stringify(prefix));\n              a2.uri = prefix;\n            }\n            parser.tag.attributes[name] = a2;\n            emitNode(parser, \"onattribute\", a2);\n          }\n          parser.attribList.length = 0;\n        }\n        parser.tag.isSelfClosing = !!selfClosing;\n        parser.sawRoot = true;\n        parser.tags.push(parser.tag);\n        emitNode(parser, \"onopentag\", parser.tag);\n        if (!selfClosing) {\n          if (!parser.noscript && parser.tagName.toLowerCase() === \"script\") {\n            parser.state = S.SCRIPT;\n          } else {\n            parser.state = S.TEXT;\n          }\n          parser.tag = null;\n          parser.tagName = \"\";\n        }\n        parser.attribName = parser.attribValue = \"\";\n        parser.attribList.length = 0;\n      }\n      function closeTag(parser) {\n        if (!parser.tagName) {\n          strictFail(parser, \"Weird empty close tag.\");\n          parser.textNode += \"</>\";\n          parser.state = S.TEXT;\n          return;\n        }\n        if (parser.script) {\n          if (parser.tagName !== \"script\") {\n            parser.script += \"</\" + parser.tagName + \">\";\n            parser.tagName = \"\";\n            parser.state = S.SCRIPT;\n            return;\n          }\n          emitNode(parser, \"onscript\", parser.script);\n          parser.script = \"\";\n        }\n        var t2 = parser.tags.length;\n        var tagName = parser.tagName;\n        if (!parser.strict) {\n          tagName = tagName[parser.looseCase]();\n        }\n        var closeTo = tagName;\n        while (t2--) {\n          var close = parser.tags[t2];\n          if (close.name !== closeTo) {\n            strictFail(parser, \"Unexpected close tag\");\n          } else {\n            break;\n          }\n        }\n        if (t2 < 0) {\n          strictFail(parser, \"Unmatched closing tag: \" + parser.tagName);\n          parser.textNode += \"</\" + parser.tagName + \">\";\n          parser.state = S.TEXT;\n          return;\n        }\n        parser.tagName = tagName;\n        var s3 = parser.tags.length;\n        while (s3-- > t2) {\n          var tag = parser.tag = parser.tags.pop();\n          parser.tagName = parser.tag.name;\n          emitNode(parser, \"onclosetag\", parser.tagName);\n          var x = {};\n          for (var i2 in tag.ns) {\n            x[i2] = tag.ns[i2];\n          }\n          var parent = parser.tags[parser.tags.length - 1] || parser;\n          if (parser.opt.xmlns && tag.ns !== parent.ns) {\n            Object.keys(tag.ns).forEach(function(p2) {\n              var n2 = tag.ns[p2];\n              emitNode(parser, \"onclosenamespace\", { prefix: p2, uri: n2 });\n            });\n          }\n        }\n        if (t2 === 0) parser.closedRoot = true;\n        parser.tagName = parser.attribValue = parser.attribName = \"\";\n        parser.attribList.length = 0;\n        parser.state = S.TEXT;\n      }\n      function parseEntity(parser) {\n        var entity = parser.entity;\n        var entityLC = entity.toLowerCase();\n        var num;\n        var numStr = \"\";\n        if (parser.ENTITIES[entity]) {\n          return parser.ENTITIES[entity];\n        }\n        if (parser.ENTITIES[entityLC]) {\n          return parser.ENTITIES[entityLC];\n        }\n        entity = entityLC;\n        if (entity.charAt(0) === \"#\") {\n          if (entity.charAt(1) === \"x\") {\n            entity = entity.slice(2);\n            num = parseInt(entity, 16);\n            numStr = num.toString(16);\n          } else {\n            entity = entity.slice(1);\n            num = parseInt(entity, 10);\n            numStr = num.toString(10);\n          }\n        }\n        entity = entity.replace(/^0+/, \"\");\n        if (isNaN(num) || numStr.toLowerCase() !== entity) {\n          strictFail(parser, \"Invalid character entity\");\n          return \"&\" + parser.entity + \";\";\n        }\n        return String.fromCodePoint(num);\n      }\n      function beginWhiteSpace(parser, c2) {\n        if (c2 === \"<\") {\n          parser.state = S.OPEN_WAKA;\n          parser.startTagPosition = parser.position;\n        } else if (!isWhitespace(c2)) {\n          strictFail(parser, \"Non-whitespace before first tag.\");\n          parser.textNode = c2;\n          parser.state = S.TEXT;\n        }\n      }\n      function charAt(chunk, i2) {\n        var result = \"\";\n        if (i2 < chunk.length) {\n          result = chunk.charAt(i2);\n        }\n        return result;\n      }\n      function write(chunk) {\n        var parser = this;\n        if (this.error) {\n          throw this.error;\n        }\n        if (parser.closed) {\n          return error(\n            parser,\n            \"Cannot write after close. Assign an onready handler.\"\n          );\n        }\n        if (chunk === null) {\n          return end(parser);\n        }\n        if (typeof chunk === \"object\") {\n          chunk = chunk.toString();\n        }\n        var i2 = 0;\n        var c2 = \"\";\n        while (true) {\n          c2 = charAt(chunk, i2++);\n          parser.c = c2;\n          if (!c2) {\n            break;\n          }\n          if (parser.trackPosition) {\n            parser.position++;\n            if (c2 === \"\\n\") {\n              parser.line++;\n              parser.column = 0;\n            } else {\n              parser.column++;\n            }\n          }\n          switch (parser.state) {\n            case S.BEGIN:\n              parser.state = S.BEGIN_WHITESPACE;\n              if (c2 === \"\\uFEFF\") {\n                continue;\n              }\n              beginWhiteSpace(parser, c2);\n              continue;\n            case S.BEGIN_WHITESPACE:\n              beginWhiteSpace(parser, c2);\n              continue;\n            case S.TEXT:\n              if (parser.sawRoot && !parser.closedRoot) {\n                var starti = i2 - 1;\n                while (c2 && c2 !== \"<\" && c2 !== \"&\") {\n                  c2 = charAt(chunk, i2++);\n                  if (c2 && parser.trackPosition) {\n                    parser.position++;\n                    if (c2 === \"\\n\") {\n                      parser.line++;\n                      parser.column = 0;\n                    } else {\n                      parser.column++;\n                    }\n                  }\n                }\n                parser.textNode += chunk.substring(starti, i2 - 1);\n              }\n              if (c2 === \"<\" && !(parser.sawRoot && parser.closedRoot && !parser.strict)) {\n                parser.state = S.OPEN_WAKA;\n                parser.startTagPosition = parser.position;\n              } else {\n                if (!isWhitespace(c2) && (!parser.sawRoot || parser.closedRoot)) {\n                  strictFail(parser, \"Text data outside of root node.\");\n                }\n                if (c2 === \"&\") {\n                  parser.state = S.TEXT_ENTITY;\n                } else {\n                  parser.textNode += c2;\n                }\n              }\n              continue;\n            case S.SCRIPT:\n              if (c2 === \"<\") {\n                parser.state = S.SCRIPT_ENDING;\n              } else {\n                parser.script += c2;\n              }\n              continue;\n            case S.SCRIPT_ENDING:\n              if (c2 === \"/\") {\n                parser.state = S.CLOSE_TAG;\n              } else {\n                parser.script += \"<\" + c2;\n                parser.state = S.SCRIPT;\n              }\n              continue;\n            case S.OPEN_WAKA:\n              if (c2 === \"!\") {\n                parser.state = S.SGML_DECL;\n                parser.sgmlDecl = \"\";\n              } else if (isWhitespace(c2)) ;\n              else if (isMatch(nameStart, c2)) {\n                parser.state = S.OPEN_TAG;\n                parser.tagName = c2;\n              } else if (c2 === \"/\") {\n                parser.state = S.CLOSE_TAG;\n                parser.tagName = \"\";\n              } else if (c2 === \"?\") {\n                parser.state = S.PROC_INST;\n                parser.procInstName = parser.procInstBody = \"\";\n              } else {\n                strictFail(parser, \"Unencoded <\");\n                if (parser.startTagPosition + 1 < parser.position) {\n                  var pad = parser.position - parser.startTagPosition;\n                  c2 = new Array(pad).join(\" \") + c2;\n                }\n                parser.textNode += \"<\" + c2;\n                parser.state = S.TEXT;\n              }\n              continue;\n            case S.SGML_DECL:\n              if (parser.sgmlDecl + c2 === \"--\") {\n                parser.state = S.COMMENT;\n                parser.comment = \"\";\n                parser.sgmlDecl = \"\";\n                continue;\n              }\n              if (parser.doctype && parser.doctype !== true && parser.sgmlDecl) {\n                parser.state = S.DOCTYPE_DTD;\n                parser.doctype += \"<!\" + parser.sgmlDecl + c2;\n                parser.sgmlDecl = \"\";\n              } else if ((parser.sgmlDecl + c2).toUpperCase() === CDATA) {\n                emitNode(parser, \"onopencdata\");\n                parser.state = S.CDATA;\n                parser.sgmlDecl = \"\";\n                parser.cdata = \"\";\n              } else if ((parser.sgmlDecl + c2).toUpperCase() === DOCTYPE) {\n                parser.state = S.DOCTYPE;\n                if (parser.doctype || parser.sawRoot) {\n                  strictFail(\n                    parser,\n                    \"Inappropriately located doctype declaration\"\n                  );\n                }\n                parser.doctype = \"\";\n                parser.sgmlDecl = \"\";\n              } else if (c2 === \">\") {\n                emitNode(parser, \"onsgmldeclaration\", parser.sgmlDecl);\n                parser.sgmlDecl = \"\";\n                parser.state = S.TEXT;\n              } else if (isQuote(c2)) {\n                parser.state = S.SGML_DECL_QUOTED;\n                parser.sgmlDecl += c2;\n              } else {\n                parser.sgmlDecl += c2;\n              }\n              continue;\n            case S.SGML_DECL_QUOTED:\n              if (c2 === parser.q) {\n                parser.state = S.SGML_DECL;\n                parser.q = \"\";\n              }\n              parser.sgmlDecl += c2;\n              continue;\n            case S.DOCTYPE:\n              if (c2 === \">\") {\n                parser.state = S.TEXT;\n                emitNode(parser, \"ondoctype\", parser.doctype);\n                parser.doctype = true;\n              } else {\n                parser.doctype += c2;\n                if (c2 === \"[\") {\n                  parser.state = S.DOCTYPE_DTD;\n                } else if (isQuote(c2)) {\n                  parser.state = S.DOCTYPE_QUOTED;\n                  parser.q = c2;\n                }\n              }\n              continue;\n            case S.DOCTYPE_QUOTED:\n              parser.doctype += c2;\n              if (c2 === parser.q) {\n                parser.q = \"\";\n                parser.state = S.DOCTYPE;\n              }\n              continue;\n            case S.DOCTYPE_DTD:\n              if (c2 === \"]\") {\n                parser.doctype += c2;\n                parser.state = S.DOCTYPE;\n              } else if (c2 === \"<\") {\n                parser.state = S.OPEN_WAKA;\n                parser.startTagPosition = parser.position;\n              } else if (isQuote(c2)) {\n                parser.doctype += c2;\n                parser.state = S.DOCTYPE_DTD_QUOTED;\n                parser.q = c2;\n              } else {\n                parser.doctype += c2;\n              }\n              continue;\n            case S.DOCTYPE_DTD_QUOTED:\n              parser.doctype += c2;\n              if (c2 === parser.q) {\n                parser.state = S.DOCTYPE_DTD;\n                parser.q = \"\";\n              }\n              continue;\n            case S.COMMENT:\n              if (c2 === \"-\") {\n                parser.state = S.COMMENT_ENDING;\n              } else {\n                parser.comment += c2;\n              }\n              continue;\n            case S.COMMENT_ENDING:\n              if (c2 === \"-\") {\n                parser.state = S.COMMENT_ENDED;\n                parser.comment = textopts(parser.opt, parser.comment);\n                if (parser.comment) {\n                  emitNode(parser, \"oncomment\", parser.comment);\n                }\n                parser.comment = \"\";\n              } else {\n                parser.comment += \"-\" + c2;\n                parser.state = S.COMMENT;\n              }\n              continue;\n            case S.COMMENT_ENDED:\n              if (c2 !== \">\") {\n                strictFail(parser, \"Malformed comment\");\n                parser.comment += \"--\" + c2;\n                parser.state = S.COMMENT;\n              } else if (parser.doctype && parser.doctype !== true) {\n                parser.state = S.DOCTYPE_DTD;\n              } else {\n                parser.state = S.TEXT;\n              }\n              continue;\n            case S.CDATA:\n              if (c2 === \"]\") {\n                parser.state = S.CDATA_ENDING;\n              } else {\n                parser.cdata += c2;\n              }\n              continue;\n            case S.CDATA_ENDING:\n              if (c2 === \"]\") {\n                parser.state = S.CDATA_ENDING_2;\n              } else {\n                parser.cdata += \"]\" + c2;\n                parser.state = S.CDATA;\n              }\n              continue;\n            case S.CDATA_ENDING_2:\n              if (c2 === \">\") {\n                if (parser.cdata) {\n                  emitNode(parser, \"oncdata\", parser.cdata);\n                }\n                emitNode(parser, \"onclosecdata\");\n                parser.cdata = \"\";\n                parser.state = S.TEXT;\n              } else if (c2 === \"]\") {\n                parser.cdata += \"]\";\n              } else {\n                parser.cdata += \"]]\" + c2;\n                parser.state = S.CDATA;\n              }\n              continue;\n            case S.PROC_INST:\n              if (c2 === \"?\") {\n                parser.state = S.PROC_INST_ENDING;\n              } else if (isWhitespace(c2)) {\n                parser.state = S.PROC_INST_BODY;\n              } else {\n                parser.procInstName += c2;\n              }\n              continue;\n            case S.PROC_INST_BODY:\n              if (!parser.procInstBody && isWhitespace(c2)) {\n                continue;\n              } else if (c2 === \"?\") {\n                parser.state = S.PROC_INST_ENDING;\n              } else {\n                parser.procInstBody += c2;\n              }\n              continue;\n            case S.PROC_INST_ENDING:\n              if (c2 === \">\") {\n                emitNode(parser, \"onprocessinginstruction\", {\n                  name: parser.procInstName,\n                  body: parser.procInstBody\n                });\n                parser.procInstName = parser.procInstBody = \"\";\n                parser.state = S.TEXT;\n              } else {\n                parser.procInstBody += \"?\" + c2;\n                parser.state = S.PROC_INST_BODY;\n              }\n              continue;\n            case S.OPEN_TAG:\n              if (isMatch(nameBody, c2)) {\n                parser.tagName += c2;\n              } else {\n                newTag(parser);\n                if (c2 === \">\") {\n                  openTag(parser);\n                } else if (c2 === \"/\") {\n                  parser.state = S.OPEN_TAG_SLASH;\n                } else {\n                  if (!isWhitespace(c2)) {\n                    strictFail(parser, \"Invalid character in tag name\");\n                  }\n                  parser.state = S.ATTRIB;\n                }\n              }\n              continue;\n            case S.OPEN_TAG_SLASH:\n              if (c2 === \">\") {\n                openTag(parser, true);\n                closeTag(parser);\n              } else {\n                strictFail(parser, \"Forward-slash in opening tag not followed by >\");\n                parser.state = S.ATTRIB;\n              }\n              continue;\n            case S.ATTRIB:\n              if (isWhitespace(c2)) {\n                continue;\n              } else if (c2 === \">\") {\n                openTag(parser);\n              } else if (c2 === \"/\") {\n                parser.state = S.OPEN_TAG_SLASH;\n              } else if (isMatch(nameStart, c2)) {\n                parser.attribName = c2;\n                parser.attribValue = \"\";\n                parser.state = S.ATTRIB_NAME;\n              } else {\n                strictFail(parser, \"Invalid attribute name\");\n              }\n              continue;\n            case S.ATTRIB_NAME:\n              if (c2 === \"=\") {\n                parser.state = S.ATTRIB_VALUE;\n              } else if (c2 === \">\") {\n                strictFail(parser, \"Attribute without value\");\n                parser.attribValue = parser.attribName;\n                attrib(parser);\n                openTag(parser);\n              } else if (isWhitespace(c2)) {\n                parser.state = S.ATTRIB_NAME_SAW_WHITE;\n              } else if (isMatch(nameBody, c2)) {\n                parser.attribName += c2;\n              } else {\n                strictFail(parser, \"Invalid attribute name\");\n              }\n              continue;\n            case S.ATTRIB_NAME_SAW_WHITE:\n              if (c2 === \"=\") {\n                parser.state = S.ATTRIB_VALUE;\n              } else if (isWhitespace(c2)) {\n                continue;\n              } else {\n                strictFail(parser, \"Attribute without value\");\n                parser.tag.attributes[parser.attribName] = \"\";\n                parser.attribValue = \"\";\n                emitNode(parser, \"onattribute\", {\n                  name: parser.attribName,\n                  value: \"\"\n                });\n                parser.attribName = \"\";\n                if (c2 === \">\") {\n                  openTag(parser);\n                } else if (isMatch(nameStart, c2)) {\n                  parser.attribName = c2;\n                  parser.state = S.ATTRIB_NAME;\n                } else {\n                  strictFail(parser, \"Invalid attribute name\");\n                  parser.state = S.ATTRIB;\n                }\n              }\n              continue;\n            case S.ATTRIB_VALUE:\n              if (isWhitespace(c2)) {\n                continue;\n              } else if (isQuote(c2)) {\n                parser.q = c2;\n                parser.state = S.ATTRIB_VALUE_QUOTED;\n              } else {\n                if (!parser.opt.unquotedAttributeValues) {\n                  error(parser, \"Unquoted attribute value\");\n                }\n                parser.state = S.ATTRIB_VALUE_UNQUOTED;\n                parser.attribValue = c2;\n              }\n              continue;\n            case S.ATTRIB_VALUE_QUOTED:\n              if (c2 !== parser.q) {\n                if (c2 === \"&\") {\n                  parser.state = S.ATTRIB_VALUE_ENTITY_Q;\n                } else {\n                  parser.attribValue += c2;\n                }\n                continue;\n              }\n              attrib(parser);\n              parser.q = \"\";\n              parser.state = S.ATTRIB_VALUE_CLOSED;\n              continue;\n            case S.ATTRIB_VALUE_CLOSED:\n              if (isWhitespace(c2)) {\n                parser.state = S.ATTRIB;\n              } else if (c2 === \">\") {\n                openTag(parser);\n              } else if (c2 === \"/\") {\n                parser.state = S.OPEN_TAG_SLASH;\n              } else if (isMatch(nameStart, c2)) {\n                strictFail(parser, \"No whitespace between attributes\");\n                parser.attribName = c2;\n                parser.attribValue = \"\";\n                parser.state = S.ATTRIB_NAME;\n              } else {\n                strictFail(parser, \"Invalid attribute name\");\n              }\n              continue;\n            case S.ATTRIB_VALUE_UNQUOTED:\n              if (!isAttribEnd(c2)) {\n                if (c2 === \"&\") {\n                  parser.state = S.ATTRIB_VALUE_ENTITY_U;\n                } else {\n                  parser.attribValue += c2;\n                }\n                continue;\n              }\n              attrib(parser);\n              if (c2 === \">\") {\n                openTag(parser);\n              } else {\n                parser.state = S.ATTRIB;\n              }\n              continue;\n            case S.CLOSE_TAG:\n              if (!parser.tagName) {\n                if (isWhitespace(c2)) {\n                  continue;\n                } else if (notMatch(nameStart, c2)) {\n                  if (parser.script) {\n                    parser.script += \"</\" + c2;\n                    parser.state = S.SCRIPT;\n                  } else {\n                    strictFail(parser, \"Invalid tagname in closing tag.\");\n                  }\n                } else {\n                  parser.tagName = c2;\n                }\n              } else if (c2 === \">\") {\n                closeTag(parser);\n              } else if (isMatch(nameBody, c2)) {\n                parser.tagName += c2;\n              } else if (parser.script) {\n                parser.script += \"</\" + parser.tagName;\n                parser.tagName = \"\";\n                parser.state = S.SCRIPT;\n              } else {\n                if (!isWhitespace(c2)) {\n                  strictFail(parser, \"Invalid tagname in closing tag\");\n                }\n                parser.state = S.CLOSE_TAG_SAW_WHITE;\n              }\n              continue;\n            case S.CLOSE_TAG_SAW_WHITE:\n              if (isWhitespace(c2)) {\n                continue;\n              }\n              if (c2 === \">\") {\n                closeTag(parser);\n              } else {\n                strictFail(parser, \"Invalid characters in closing tag\");\n              }\n              continue;\n            case S.TEXT_ENTITY:\n            case S.ATTRIB_VALUE_ENTITY_Q:\n            case S.ATTRIB_VALUE_ENTITY_U:\n              var returnState;\n              var buffer;\n              switch (parser.state) {\n                case S.TEXT_ENTITY:\n                  returnState = S.TEXT;\n                  buffer = \"textNode\";\n                  break;\n                case S.ATTRIB_VALUE_ENTITY_Q:\n                  returnState = S.ATTRIB_VALUE_QUOTED;\n                  buffer = \"attribValue\";\n                  break;\n                case S.ATTRIB_VALUE_ENTITY_U:\n                  returnState = S.ATTRIB_VALUE_UNQUOTED;\n                  buffer = \"attribValue\";\n                  break;\n              }\n              if (c2 === \";\") {\n                var parsedEntity = parseEntity(parser);\n                if (parser.opt.unparsedEntities && !Object.values(sax2.XML_ENTITIES).includes(parsedEntity)) {\n                  parser.entity = \"\";\n                  parser.state = returnState;\n                  parser.write(parsedEntity);\n                } else {\n                  parser[buffer] += parsedEntity;\n                  parser.entity = \"\";\n                  parser.state = returnState;\n                }\n              } else if (isMatch(parser.entity.length ? entityBody : entityStart, c2)) {\n                parser.entity += c2;\n              } else {\n                strictFail(parser, \"Invalid character in entity name\");\n                parser[buffer] += \"&\" + parser.entity + c2;\n                parser.entity = \"\";\n                parser.state = returnState;\n              }\n              continue;\n            default: {\n              throw new Error(parser, \"Unknown state: \" + parser.state);\n            }\n          }\n        }\n        if (parser.position >= parser.bufferCheckPosition) {\n          checkBufferLength(parser);\n        }\n        return parser;\n      }\n      /*! http://mths.be/fromcodepoint v0.1.0 by @mathias */\n      if (!String.fromCodePoint) {\n        (function() {\n          var stringFromCharCode = String.fromCharCode;\n          var floor = Math.floor;\n          var fromCodePoint = function() {\n            var MAX_SIZE = 16384;\n            var codeUnits = [];\n            var highSurrogate;\n            var lowSurrogate;\n            var index = -1;\n            var length = arguments.length;\n            if (!length) {\n              return \"\";\n            }\n            var result = \"\";\n            while (++index < length) {\n              var codePoint = Number(arguments[index]);\n              if (!isFinite(codePoint) || // `NaN`, `+Infinity`, or `-Infinity`\n              codePoint < 0 || // not a valid Unicode code point\n              codePoint > 1114111 || // not a valid Unicode code point\n              floor(codePoint) !== codePoint) {\n                throw RangeError(\"Invalid code point: \" + codePoint);\n              }\n              if (codePoint <= 65535) {\n                codeUnits.push(codePoint);\n              } else {\n                codePoint -= 65536;\n                highSurrogate = (codePoint >> 10) + 55296;\n                lowSurrogate = codePoint % 1024 + 56320;\n                codeUnits.push(highSurrogate, lowSurrogate);\n              }\n              if (index + 1 === length || codeUnits.length > MAX_SIZE) {\n                result += stringFromCharCode.apply(null, codeUnits);\n                codeUnits.length = 0;\n              }\n            }\n            return result;\n          };\n          if (Object.defineProperty) {\n            Object.defineProperty(String, \"fromCodePoint\", {\n              value: fromCodePoint,\n              configurable: true,\n              writable: true\n            });\n          } else {\n            String.fromCodePoint = fromCodePoint;\n          }\n        })();\n      }\n    })(exports);\n  })(sax$1);\n  return sax$1;\n}\nvar saxExports = requireSax();\nconst sax = /* @__PURE__ */ getDefaultExportFromCjs(saxExports);\nconst namespaceMapping = {\n  \"http://www.w3.org/2000/svg\": {\n    ext: \"svg\",\n    mime: \"image/svg+xml\"\n  },\n  \"http://www.w3.org/1999/xhtml\": {\n    ext: \"xhtml\",\n    mime: \"application/xhtml+xml\"\n  },\n  \"http://www.opengis.net/kml/2.2\": {\n    ext: \"kml\",\n    mime: \"application/vnd.google-earth.kml+xml\"\n  },\n  \"http://www.opengis.net/gml\": {\n    ext: \"gml\",\n    mime: \"application/gml+xml\"\n  }\n};\nconst rootNameMapping = {\n  rss: {\n    ext: \"rss\",\n    mime: \"application/rss+xml\"\n  },\n  \"score-partwise\": {\n    ext: \"musicxml\",\n    mime: \"application/vnd.recordare.musicxml+xml\"\n  },\n  svg: {\n    ext: \"svg\",\n    mime: \"image/svg+xml\"\n  }\n};\nclass XmlTextDetector {\n  constructor(options) {\n    this.options = options ?? {};\n    this.firstTag = true;\n    this.onEnd = false;\n    this.parser = sax.parser(true, { xmlns: true });\n    this.nesting = 0;\n    this.parser.onerror = (e2) => {\n      if (e2.message.startsWith(\"Invalid character entity\")) {\n        return;\n      }\n      this.fileType = void 0;\n      this.onEnd = true;\n    };\n    this.parser.onopentag = (node) => {\n      ++this.nesting;\n      if (!this.firstTag || this.onEnd) {\n        return;\n      }\n      this.firstTag = false;\n      if (node.uri) {\n        this.fileType = namespaceMapping[node.uri];\n      } else if (node.name) {\n        this.fileType = rootNameMapping[node.name.toLowerCase()];\n      }\n      if (this.fileType && !this.options.fullScan) {\n        this.onEnd = true;\n      }\n    };\n    this.parser.onclosetag = () => {\n      --this.nesting;\n    };\n  }\n  write(text) {\n    this.parser.write(text);\n  }\n  close() {\n    this.parser.close();\n    this.onEnd = true;\n  }\n  isValid() {\n    return this.nesting === 0;\n  }\n}\nfunction isSvg(string, { validate = true } = {}) {\n  if (typeof string !== \"string\") {\n    throw new TypeError(`Expected a \\`string\\`, got \\`${typeof string}\\``);\n  }\n  string = string.trim();\n  if (string.length === 0) {\n    return false;\n  }\n  const xmlTextDetector = new XmlTextDetector({ fullScan: validate });\n  if (validate) {\n    xmlTextDetector.write(string);\n    if (!xmlTextDetector.isValid()) {\n      return false;\n    }\n  } else {\n    const chunkSize = 128;\n    let offset = 0;\n    while (string.length > offset && !xmlTextDetector.onEnd) {\n      xmlTextDetector.write(string.slice(offset, Math.min(offset + chunkSize, string.length)));\n      offset += chunkSize;\n    }\n  }\n  return xmlTextDetector.fileType?.ext === \"svg\";\n}\nclass View {\n  _view;\n  constructor(view) {\n    isValidView(view);\n    this._view = view;\n  }\n  get id() {\n    return this._view.id;\n  }\n  get name() {\n    return this._view.name;\n  }\n  get caption() {\n    return this._view.caption;\n  }\n  get emptyTitle() {\n    return this._view.emptyTitle;\n  }\n  get emptyCaption() {\n    return this._view.emptyCaption;\n  }\n  get getContents() {\n    return this._view.getContents;\n  }\n  get hidden() {\n    return this._view.hidden;\n  }\n  get icon() {\n    return this._view.icon;\n  }\n  set icon(icon) {\n    this._view.icon = icon;\n  }\n  get order() {\n    return this._view.order;\n  }\n  set order(order) {\n    this._view.order = order;\n  }\n  get params() {\n    return this._view.params;\n  }\n  set params(params) {\n    this._view.params = params;\n  }\n  get columns() {\n    return this._view.columns;\n  }\n  get emptyView() {\n    return this._view.emptyView;\n  }\n  get parent() {\n    return this._view.parent;\n  }\n  get sticky() {\n    return this._view.sticky;\n  }\n  get expanded() {\n    return this._view.expanded;\n  }\n  set expanded(expanded) {\n    this._view.expanded = expanded;\n  }\n  get defaultSortKey() {\n    return this._view.defaultSortKey;\n  }\n  get loadChildViews() {\n    return this._view.loadChildViews;\n  }\n}\nconst isValidView = function(view) {\n  if (!view.id || typeof view.id !== \"string\") {\n    throw new Error(\"View id is required and must be a string\");\n  }\n  if (!view.name || typeof view.name !== \"string\") {\n    throw new Error(\"View name is required and must be a string\");\n  }\n  if (\"caption\" in view && typeof view.caption !== \"string\") {\n    throw new Error(\"View caption must be a string\");\n  }\n  if (!view.getContents || typeof view.getContents !== \"function\") {\n    throw new Error(\"View getContents is required and must be a function\");\n  }\n  if (\"hidden\" in view && typeof view.hidden !== \"boolean\") {\n    throw new Error(\"View hidden must be a boolean\");\n  }\n  if (!view.icon || typeof view.icon !== \"string\" || !isSvg(view.icon)) {\n    throw new Error(\"View icon is required and must be a valid svg string\");\n  }\n  if (\"order\" in view && typeof view.order !== \"number\") {\n    throw new Error(\"View order must be a number\");\n  }\n  if (view.columns) {\n    view.columns.forEach((column) => {\n      if (!(column instanceof Column)) {\n        throw new Error(\"View columns must be an array of Column. Invalid column found\");\n      }\n    });\n  }\n  if (view.emptyView && typeof view.emptyView !== \"function\") {\n    throw new Error(\"View emptyView must be a function\");\n  }\n  if (view.parent && typeof view.parent !== \"string\") {\n    throw new Error(\"View parent must be a string\");\n  }\n  if (\"sticky\" in view && typeof view.sticky !== \"boolean\") {\n    throw new Error(\"View sticky must be a boolean\");\n  }\n  if (\"expanded\" in view && typeof view.expanded !== \"boolean\") {\n    throw new Error(\"View expanded must be a boolean\");\n  }\n  if (view.defaultSortKey && typeof view.defaultSortKey !== \"string\") {\n    throw new Error(\"View defaultSortKey must be a string\");\n  }\n  if (view.loadChildViews && typeof view.loadChildViews !== \"function\") {\n    throw new Error(\"View loadChildViews must be a function\");\n  }\n  return true;\n};\nvar NewMenuEntryCategory = /* @__PURE__ */ ((NewMenuEntryCategory2) => {\n  NewMenuEntryCategory2[NewMenuEntryCategory2[\"UploadFromDevice\"] = 0] = \"UploadFromDevice\";\n  NewMenuEntryCategory2[NewMenuEntryCategory2[\"CreateNew\"] = 1] = \"CreateNew\";\n  NewMenuEntryCategory2[NewMenuEntryCategory2[\"Other\"] = 2] = \"Other\";\n  return NewMenuEntryCategory2;\n})(NewMenuEntryCategory || {});\nclass NewMenu {\n  _entries = [];\n  registerEntry(entry) {\n    this.validateEntry(entry);\n    entry.category = entry.category ?? 1;\n    this._entries.push(entry);\n  }\n  unregisterEntry(entry) {\n    const entryIndex = typeof entry === \"string\" ? this.getEntryIndex(entry) : this.getEntryIndex(entry.id);\n    if (entryIndex === -1) {\n      logger.warn(\"Entry not found, nothing removed\", { entry, entries: this.getEntries() });\n      return;\n    }\n    this._entries.splice(entryIndex, 1);\n  }\n  /**\n   * Get the list of registered entries\n   *\n   * @param {Folder} context the creation context. Usually the current folder\n   */\n  getEntries(context) {\n    if (context) {\n      return this._entries.filter((entry) => typeof entry.enabled === \"function\" ? entry.enabled(context) : true);\n    }\n    return this._entries;\n  }\n  getEntryIndex(id) {\n    return this._entries.findIndex((entry) => entry.id === id);\n  }\n  validateEntry(entry) {\n    if (!entry.id || !entry.displayName || !(entry.iconSvgInline || entry.iconClass) || !entry.handler) {\n      throw new Error(\"Invalid entry\");\n    }\n    if (typeof entry.id !== \"string\" || typeof entry.displayName !== \"string\") {\n      throw new Error(\"Invalid id or displayName property\");\n    }\n    if (entry.iconClass && typeof entry.iconClass !== \"string\" || entry.iconSvgInline && typeof entry.iconSvgInline !== \"string\") {\n      throw new Error(\"Invalid icon provided\");\n    }\n    if (entry.enabled !== void 0 && typeof entry.enabled !== \"function\") {\n      throw new Error(\"Invalid enabled property\");\n    }\n    if (typeof entry.handler !== \"function\") {\n      throw new Error(\"Invalid handler property\");\n    }\n    if (\"order\" in entry && typeof entry.order !== \"number\") {\n      throw new Error(\"Invalid order property\");\n    }\n    if (this.getEntryIndex(entry.id) !== -1) {\n      throw new Error(\"Duplicate entry\");\n    }\n  }\n}\nfunction getNewFileMenu() {\n  if (typeof window._nc_newfilemenu === \"undefined\") {\n    window._nc_newfilemenu = new NewMenu();\n    logger.debug(\"NewFileMenu initialized\");\n  }\n  return window._nc_newfilemenu;\n}\nfunction addNewFileMenuEntry(entry) {\n  const newFileMenu = getNewFileMenu();\n  return newFileMenu.registerEntry(entry);\n}\nfunction removeNewFileMenuEntry(entry) {\n  const newFileMenu = getNewFileMenu();\n  return newFileMenu.unregisterEntry(entry);\n}\nfunction getNewFileMenuEntries(context) {\n  const newFileMenu = getNewFileMenu();\n  return newFileMenu.getEntries(context).sort((a2, b2) => {\n    if (a2.order !== void 0 && b2.order !== void 0 && a2.order !== b2.order) {\n      return a2.order - b2.order;\n    }\n    return a2.displayName.localeCompare(b2.displayName, void 0, { numeric: true, sensitivity: \"base\" });\n  });\n}\nvar InvalidFilenameErrorReason = /* @__PURE__ */ ((InvalidFilenameErrorReason2) => {\n  InvalidFilenameErrorReason2[\"ReservedName\"] = \"reserved name\";\n  InvalidFilenameErrorReason2[\"Character\"] = \"character\";\n  InvalidFilenameErrorReason2[\"Extension\"] = \"extension\";\n  return InvalidFilenameErrorReason2;\n})(InvalidFilenameErrorReason || {});\nclass InvalidFilenameError extends Error {\n  constructor(options) {\n    super(`Invalid ${options.reason} '${options.segment}' in filename '${options.filename}'`, { cause: options });\n  }\n  /**\n   * The filename that was validated\n   */\n  get filename() {\n    return this.cause.filename;\n  }\n  /**\n   * Reason why the validation failed\n   */\n  get reason() {\n    return this.cause.reason;\n  }\n  /**\n   * Part of the filename that caused this error\n   */\n  get segment() {\n    return this.cause.segment;\n  }\n}\nfunction validateFilename(filename) {\n  const capabilities = getCapabilities().files;\n  const forbiddenCharacters = capabilities.forbidden_filename_characters ?? window._oc_config?.forbidden_filenames_characters ?? [\"/\", \"\\\\\"];\n  for (const character of forbiddenCharacters) {\n    if (filename.includes(character)) {\n      throw new InvalidFilenameError({ segment: character, reason: \"character\", filename });\n    }\n  }\n  filename = filename.toLocaleLowerCase();\n  const forbiddenFilenames = capabilities.forbidden_filenames ?? [\".htaccess\"];\n  if (forbiddenFilenames.includes(filename)) {\n    throw new InvalidFilenameError({\n      filename,\n      segment: filename,\n      reason: \"reserved name\"\n      /* ReservedName */\n    });\n  }\n  const endOfBasename = filename.indexOf(\".\", 1);\n  const basename2 = filename.substring(0, endOfBasename === -1 ? void 0 : endOfBasename);\n  const forbiddenFilenameBasenames = capabilities.forbidden_filename_basenames ?? [];\n  if (forbiddenFilenameBasenames.includes(basename2)) {\n    throw new InvalidFilenameError({\n      filename,\n      segment: basename2,\n      reason: \"reserved name\"\n      /* ReservedName */\n    });\n  }\n  const forbiddenFilenameExtensions = capabilities.forbidden_filename_extensions ?? [\".part\", \".filepart\"];\n  for (const extension of forbiddenFilenameExtensions) {\n    if (filename.length > extension.length && filename.endsWith(extension)) {\n      throw new InvalidFilenameError({ segment: extension, reason: \"extension\", filename });\n    }\n  }\n}\nfunction isFilenameValid(filename) {\n  try {\n    validateFilename(filename);\n    return true;\n  } catch (error) {\n    if (error instanceof InvalidFilenameError) {\n      return false;\n    }\n    throw error;\n  }\n}\nfunction getUniqueName(name, otherNames, options) {\n  const opts = {\n    suffix: (n2) => `(${n2})`,\n    ignoreFileExtension: false,\n    ...options\n  };\n  let newName = name;\n  let i2 = 1;\n  while (otherNames.includes(newName)) {\n    const ext = opts.ignoreFileExtension ? \"\" : extname(name);\n    const base = basename(name, ext);\n    newName = `${base} ${opts.suffix(i2++)}${ext}`;\n  }\n  return newName;\n}\nconst humanList = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\", \"PB\"];\nconst humanListBinary = [\"B\", \"KiB\", \"MiB\", \"GiB\", \"TiB\", \"PiB\"];\nfunction formatFileSize(size, skipSmallSizes = false, binaryPrefixes = false, base1000 = false) {\n  binaryPrefixes = binaryPrefixes && !base1000;\n  if (typeof size === \"string\") {\n    size = Number(size);\n  }\n  let order = size > 0 ? Math.floor(Math.log(size) / Math.log(base1000 ? 1e3 : 1024)) : 0;\n  order = Math.min((binaryPrefixes ? humanListBinary.length : humanList.length) - 1, order);\n  const readableFormat = binaryPrefixes ? humanListBinary[order] : humanList[order];\n  let relativeSize = (size / Math.pow(base1000 ? 1e3 : 1024, order)).toFixed(1);\n  if (skipSmallSizes === true && order === 0) {\n    return (relativeSize !== \"0.0\" ? \"< 1 \" : \"0 \") + (binaryPrefixes ? humanListBinary[1] : humanList[1]);\n  }\n  if (order < 2) {\n    relativeSize = parseFloat(relativeSize).toFixed(0);\n  } else {\n    relativeSize = parseFloat(relativeSize).toLocaleString(getCanonicalLocale());\n  }\n  return relativeSize + \" \" + readableFormat;\n}\nfunction parseFileSize(value, forceBinary = false) {\n  try {\n    value = `${value}`.toLocaleLowerCase().replaceAll(/\\s+/g, \"\").replaceAll(\",\", \".\");\n  } catch (e2) {\n    return null;\n  }\n  const match = value.match(/^([0-9]*(\\.[0-9]*)?)([kmgtp]?)(i?)b?$/);\n  if (match === null || match[1] === \".\" || match[1] === \"\") {\n    return null;\n  }\n  const bytesArray = {\n    \"\": 0,\n    k: 1,\n    m: 2,\n    g: 3,\n    t: 4,\n    p: 5,\n    e: 6\n  };\n  const decimalString = `${match[1]}`;\n  const base = match[4] === \"i\" || forceBinary ? 1024 : 1e3;\n  return Math.round(Number.parseFloat(decimalString) * base ** bytesArray[match[3]]);\n}\nfunction stringify(value) {\n  if (value instanceof Date) {\n    return value.toISOString();\n  }\n  return String(value);\n}\nfunction orderBy(collection, identifiers2, orders) {\n  identifiers2 = identifiers2 ?? [(value) => value];\n  orders = orders ?? [];\n  const sorting = identifiers2.map((_, index) => (orders[index] ?? \"asc\") === \"asc\" ? 1 : -1);\n  const collator = Intl.Collator(\n    [getLanguage(), getCanonicalLocale()],\n    {\n      // handle 10 as ten and not as one-zero\n      numeric: true,\n      usage: \"sort\"\n    }\n  );\n  return [...collection].sort((a2, b2) => {\n    for (const [index, identifier] of identifiers2.entries()) {\n      const value = collator.compare(stringify(identifier(a2)), stringify(identifier(b2)));\n      if (value !== 0) {\n        return value * sorting[index];\n      }\n    }\n    return 0;\n  });\n}\nvar FilesSortingMode = /* @__PURE__ */ ((FilesSortingMode2) => {\n  FilesSortingMode2[\"Name\"] = \"basename\";\n  FilesSortingMode2[\"Modified\"] = \"mtime\";\n  FilesSortingMode2[\"Size\"] = \"size\";\n  return FilesSortingMode2;\n})(FilesSortingMode || {});\nfunction sortNodes(nodes, options = {}) {\n  const sortingOptions = {\n    // Default to sort by name\n    sortingMode: \"basename\",\n    // Default to sort ascending\n    sortingOrder: \"asc\",\n    ...options\n  };\n  function basename2(node) {\n    const name = node.displayname || node.attributes?.displayname || node.basename || \"\";\n    if (node.type === FileType.Folder) {\n      return name;\n    }\n    return name.lastIndexOf(\".\") > 0 ? name.slice(0, name.lastIndexOf(\".\")) : name;\n  }\n  const identifiers2 = [\n    // 1: Sort favorites first if enabled\n    ...sortingOptions.sortFavoritesFirst ? [(v) => v.attributes?.favorite !== 1] : [],\n    // 2: Sort folders first if sorting by name\n    ...sortingOptions.sortFoldersFirst ? [(v) => v.type !== \"folder\"] : [],\n    // 3: Use sorting mode if NOT basename (to be able to use display name too)\n    ...sortingOptions.sortingMode !== \"basename\" ? [(v) => v[sortingOptions.sortingMode] ?? v.attributes[sortingOptions.sortingMode]] : [],\n    // 4: Use display name if available, fallback to name\n    (v) => basename2(v),\n    // 5: Finally, use basename if all previous sorting methods failed\n    (v) => v.basename\n  ];\n  const orders = [\n    // (for 1): always sort favorites before normal files\n    ...sortingOptions.sortFavoritesFirst ? [\"asc\"] : [],\n    // (for 2): always sort folders before files\n    ...sortingOptions.sortFoldersFirst ? [\"asc\"] : [],\n    // (for 3): Reverse if sorting by mtime as mtime higher means edited more recent -> lower\n    ...sortingOptions.sortingMode === \"mtime\" ? [sortingOptions.sortingOrder === \"asc\" ? \"desc\" : \"asc\"] : [],\n    // (also for 3 so make sure not to conflict with 2 and 3)\n    ...sortingOptions.sortingMode !== \"mtime\" && sortingOptions.sortingMode !== \"basename\" ? [sortingOptions.sortingOrder] : [],\n    // for 4: use configured sorting direction\n    sortingOptions.sortingOrder,\n    // for 5: use configured sorting direction\n    sortingOptions.sortingOrder\n  ];\n  return orderBy(nodes, identifiers2, orders);\n}\nexport {\n  Column,\n  DefaultType,\n  q as File,\n  FileAction,\n  FileListAction,\n  FileListFilter,\n  FileType,\n  FilesSortingMode,\n  s as Folder,\n  Header,\n  InvalidFilenameError,\n  InvalidFilenameErrorReason,\n  Navigation,\n  NewMenuEntryCategory,\n  N as Node,\n  t as NodeStatus,\n  P as Permission,\n  View,\n  addNewFileMenuEntry,\n  c as davGetClient,\n  l as davGetDefaultPropfind,\n  m as davGetFavoritesReport,\n  n as davGetRecentSearch,\n  a as davGetRemoteURL,\n  g as davGetRootPath,\n  p as davParsePermissions,\n  b as davRemoteURL,\n  r as davResultToNode,\n  d as davRootPath,\n  h as defaultDavNamespaces,\n  f as defaultDavProperties,\n  formatFileSize,\n  k as getDavNameSpaces,\n  j as getDavProperties,\n  e as getFavoriteNodes,\n  getFileActions,\n  getFileListActions,\n  getFileListFilters,\n  getFileListHeaders,\n  getNavigation,\n  getNewFileMenu,\n  getNewFileMenuEntries,\n  getUniqueName,\n  isFilenameValid,\n  orderBy,\n  parseFileSize,\n  i as registerDavProperty,\n  registerFileAction,\n  registerFileListAction,\n  registerFileListFilter,\n  registerFileListHeaders,\n  removeNewFileMenuEntry,\n  sortNodes,\n  unregisterFileListFilter,\n  validateFilename\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["GettextWrapper","pluralFunction","bundle","dict","msgid","msgidPlural","msgstr","original","placeholders","translate","singular","plural","count","translatePlural","GettextBuilder","language","getLanguage","data","wrapper","n","getPlural","getGettextBuilder","global","factory","module","this","hookCallback","hooks","setHookCallback","callback","isArray","input","isObject","hasOwnProp","a","b","isObjectEmpty","obj","k","isUndefined","isNumber","isDate","map","arr","fn","res","i","arrLen","extend","createUTC","format","locale","strict","createLocalOrUTC","defaultParsingFlags","getParsingFlags","m","some","fun","t","len","isValid","flags","parsedParts","isNowValid","createInvalid","momentProperties","updateInProgress","copyConfig","to","from","prop","val","momentPropertiesLen","Moment","config","isMoment","warn","msg","deprecate","firstTime","args","arg","key","argLen","deprecations","deprecateSimple","name","isFunction","set","mergeConfigs","parentConfig","childConfig","Locale","keys","defaultCalendar","calendar","mom","now","output","zeroFill","number","targetLength","forceSign","absNumber","zerosToFill","sign","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","token","padded","ordinal","func","removeFormattingTokens","makeFormatFunction","array","length","formatMoment","expandFormat","replaceLongDateFormatTokens","defaultLongDateFormat","longDateFormat","formatUpper","tok","defaultInvalidDate","invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","defaultRelativeTime","relativeTime","withoutSuffix","string","isFuture","pastFuture","diff","aliases","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedInput","normalizedProp","priorities","getPrioritizedUnits","unitsObj","u","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","regexes","addRegexToken","regex","strictRegex","isStrict","localeData","getParseRegexForToken","unescapeFormat","s","regexEscape","matched","p1","p2","p3","p4","absFloor","toInt","argumentForCoercion","coercedNumber","value","tokens","addParseToken","tokenLen","addWeekParseToken","addTimeToArrayFromToken","isLeapYear","year","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","y","daysInYear","getSetYear","makeGetSet","getIsLeapYear","unit","keepTime","set$1","get","d","isUTC","month","date","stringGet","stringSet","prioritized","prioritizedLen","mod","x","indexOf","o","daysInMonth","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","localeMonthsShort","handleStrictParse","monthName","ii","llc","localeMonthsParse","setMonth","getSetMonth","getDaysInMonth","monthsShortRegex","computeMonthsParse","monthsRegex","cmpLenRev","shortPieces","longPieces","mixedPieces","shortP","longP","createDate","h","M","ms","createUTCDate","firstWeekOffset","dow","doy","fwd","fwdlw","dayOfYearFromWeeks","week","weekday","localWeekday","weekOffset","dayOfYear","resYear","resDayOfYear","weekOfYear","resWeek","weeksInYear","weekOffsetNext","localeWeek","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","parseIsoWeekday","shiftWeekdays","ws","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","weekdays","localeWeekdaysShort","localeWeekdaysMin","handleStrictParse$1","weekdayName","localeWeekdaysParse","getSetDayOfWeek","day","getSetLocaleDayOfWeek","getSetISODayOfWeek","weekdaysRegex","computeWeekdaysParse","weekdaysShortRegex","weekdaysMinRegex","minPieces","minp","shortp","longp","hFormat","kFormat","meridiem","lowercase","matchMeridiem","kInput","pos","pos1","pos2","localeIsPM","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","hours","minutes","isLower","baseConfig","locales","localeFamilies","globalLocale","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","j","next","split","loadLocale","isLocaleNameSane","oldLocale","aliasedRequire","require","getSetGlobalLocale","values","getLocale","defineLocale","updateLocale","tmpLocale","listLocales","checkOverflow","overflow","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","rfc2822","obsOffsets","configFromISO","l","match","allowTime","dateFormat","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","result","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","weekdayProvided","weekdayActual","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","defaults","c","currentDateArray","nowValue","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","w","weekYear","temp","weekdayOverflow","curWeek","createLocal","skipped","stringLength","totalParsedInputLength","era","meridiemFixWrap","hour","isPm","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","configFromObject","dayOrDate","createFromConfig","prepareConfig","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","min","max","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","duration","years","quarters","months","weeks","days","seconds","milliseconds","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","offset","separator","offsetFromString","chunkOffset","matcher","matches","chunk","parts","cloneWithOffset","model","getDateOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","createAdder","direction","period","dur","tmp","isAdding","updateOffset","add","subtract","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","objectTest","propertyTest","properties","property","propertyLen","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","formats","sod","clone","isAfter","localInput","isBefore","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","anchor2","adjust","toString","toISOString","keepOffset","utc","inspect","zone","prefix","datetime","suffix","inputString","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOf","startOfDate","endOf","valueOf","unix","toDate","toArray","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","localeEras","eras","localeErasParse","eraName","abbr","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","erasAbbrRegex","erasNarrowRegex","abbrPieces","namePieces","narrowPieces","erasName","erasAbbr","erasNarrow","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetSecond","getSetMillisecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","preParsePostFormat","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","mathAbs","abs","addSubtract$1","add$1","subtract$1","absCeil","bubble","monthsFromDays","monthsToDays","daysToMonths","as","makeAs","alias","asMilliseconds","asSeconds","asMinutes","asHours","asDays","asWeeks","asMonths","asQuarters","asYears","valueOf$1","clone$1","get$2","makeGetter","round","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","humanize","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","total","totalSign","ymSign","daysSign","hmsSign","proto$2","pluralForm","plurals","pluralize","f","str","months$1","minute","symbolMap","pluralForm$1","plurals$1","pluralize$1","months$2","symbolMap$1","numberMap","symbolMap$2","numberMap$1","symbolMap$3","numberMap$2","pluralForm$2","plurals$2","pluralize$2","months$3","suffixes","word","num","forms","relativeTimeWithPlural","lastDigit","last2Digits","symbolMap$4","numberMap$3","symbolMap$5","numberMap$4","symbolMap$6","numberMap$5","relativeTimeWithMutation","mutation","specialMutationForYears","lastNumber","text","softMutation","mutationTable","monthsParse","monthsRegex$1","monthsStrictRegex","monthsShortStrictRegex","fullWeekdaysParse","shortWeekdaysParse","minWeekdaysParse","processRelativeTime","months$4","monthsShort","monthsParse$1","monthsRegex$2","plural$1","translate$1","affix","lookup","processRelativeTime$1","processRelativeTime$2","processRelativeTime$3","months$5","isFunction$1","momentToFormat","monthsShortDot","monthsShort$1","monthsParse$2","monthsRegex$3","monthsShortDot$1","monthsShort$2","monthsParse$3","monthsRegex$4","monthsShortDot$2","monthsShort$3","monthsParse$4","monthsRegex$5","monthsShortDot$3","monthsShort$4","monthsParse$5","monthsRegex$6","processRelativeTime$4","symbolMap$7","numberMap$6","numbersPast","numbersFuture","translate$2","verbalNumber","monthsStrictRegex$1","monthsShortStrictRegex$1","monthsRegex$7","monthsParse$6","monthsShortWithDots","monthsShortWithoutDots","months$6","monthsShort$5","weekdays$1","weekdaysShort","weekdaysMin","months$7","monthsShort$6","weekdays$2","weekdaysShort$1","weekdaysMin$1","processRelativeTime$5","processRelativeTime$6","symbolMap$8","numberMap$7","symbolMap$9","numberMap$8","monthsParse$7","shortMonthsParse","translate$3","weekEndings","translate$4","plural$2","translate$5","$0","$1","$2","suffixes$1","symbolMap$a","numberMap$9","symbolMap$b","numberMap$a","isUpper","processRelativeTime$7","ezafeNumSuffix","ll","p","symbolMap$c","numberMap$b","months$8","suffixes$2","processRelativeTime$8","processFutureTime","eifelerRegelAppliesToNumber","processPastTime","firstDigit","translateSeconds","translateSingular","special","translate$6","units$1","format$1","relativeTimeWithPlural$1","relativeTimeWithSingular","relativeSeconds","translator","wordKey","lastWeekDays","translate$7","symbolMap$d","numberMap$c","relativeTimeMr","symbolMap$e","numberMap$d","symbolMap$f","numberMap$e","monthsShortWithDots$1","monthsShortWithoutDots$1","monthsParse$8","monthsRegex$8","monthsShortWithDots$2","monthsShortWithoutDots$2","monthsParse$9","monthsRegex$9","symbolMap$g","numberMap$f","monthsNominative","monthsSubjective","monthsParse$a","plural$3","translate$8","relativeTimeWithPlural$2","plural$4","relativeTimeWithPlural$3","monthsParse$b","months$9","days$1","months$a","monthsShort$7","plural$5","translate$9","processRelativeTime$9","translator$1","translator$2","symbolMap$h","numberMap$g","suffixes$3","suffixes$4","numbersNouns","translateFuture","translatePast","translate$a","numberNoun","numberAsNoun","hundred","ten","one","suffixes$5","processRelativeTime$a","plural$6","relativeTimeWithPlural$4","weekdaysCaseReplace","nounCase","processHoursFunction","months$b","days$2","translations","moment","gt","buffer","base64Js","byteLength","toByteArray","fromByteArray","revLookup","Arr","code","getLens","b64","validLen","placeHoldersLen","lens","_byteLength","curByte","tripletToBase64","encodeChunk","uint8","start","end","extraBytes","maxChunkLength","len2","ieee754","isLE","mLen","nBytes","e","eLen","eMax","eBias","nBits","rt","exports","base64","ieee754$1","customInspectSymbol","Buffer","SlowBuffer","K_MAX_LENGTH","GlobalUint8Array","GlobalArrayBuffer","GlobalSharedArrayBuffer","typedArraySupport","createBuffer","buf","encodingOrOffset","allocUnsafe","fromString","fromArrayView","isInstance","fromArrayBuffer","fromObject","assertSize","size","alloc","fill","encoding","checked","actual","fromArrayLike","arrayView","copy","byteOffset","numberIsNaN","list","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","target","thisStart","thisEnd","thisCopy","targetCopy","bidirectionalIndexOf","arrayIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","asciiToBytes","base64Write","ucs2Write","utf16leToBytes","firstByte","codePoint","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","decodeCodePointsArray","MAX_ARGUMENTS_LENGTH","codePoints","hexSliceLookupTable","bytes","newBuf","checkOffset","ext","noAssert","mul","defineBigIntMethod","validateNumber","first","last","boundsError","lo","hi","checkInt","maxBytes","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","sub","checkIEEE754","writeFloat","littleEndian","writeDouble","targetStart","errors","E","sym","getMessage","Base","range","received","addNumericalSeparator","checkBounds","type","INVALID_BASE64_RE","base64clean","leadSurrogate","byteArray","src","dst","alphabet","table","i16","BufferBigIntNotDefined","require$$0","copyProps","SafeBuffer","isEncoding","_normalizeEncoding","enc","retried","normalizeEncoding","nenc","string_decoder","StringDecoder","nb","utf16Text","utf16End","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","r","utf8End","utf8Text","utf8CheckByte","byte","utf8CheckIncomplete","self","utf8CheckExtraBytes","loadState","app","fallback","selector","elem","parsedValue","error","getCapabilities","debug_1","hasRequiredDebug","requireDebug","process","define_process_env_default","constants","hasRequiredConstants","requireConstants","SEMVER_SPEC_VERSION","MAX_LENGTH","MAX_SAFE_INTEGER","MAX_SAFE_COMPONENT_LENGTH","MAX_SAFE_BUILD_LENGTH","re","hasRequiredRe","requireRe","debug","re2","safeRe","safeSrc","t2","R","LETTERDASHNUMBER","safeRegexReplacements","makeSafeRegex","createToken","isGlobal","safe","parseOptions_1","hasRequiredParseOptions","requireParseOptions","looseOption","emptyOpts","options","identifiers","hasRequiredIdentifiers","requireIdentifiers","numeric","compareIdentifiers","a2","b2","anum","bnum","semver","hasRequiredSemver","requireSemver","parseOptions","SemVer","version","m2","id","i2","release","identifier","identifierBase","prerelease","major_1","hasRequiredMajor","requireMajor","loose","parse_1","hasRequiredParse","requireParse","throwErrors","er","valid_1","hasRequiredValid","requireValid","parse","v","sax$1","hasRequiredSax","requireSax","sax2","opt","SAXParser","SAXStream","createStream","buffers","parser","clearBuffers","S","rootNS","emit2","F","newf","checkBufferLength","maxAllowed","maxActual","l2","closeText","emitNode","flushBuffers","write","Stream","streamWraps","ev","me","h2","SD","require$$1","handler","CDATA","DOCTYPE","XML_NAMESPACE","XMLNS_NAMESPACE","nameStart","nameBody","entityStart","entityBody","isWhitespace","c2","isQuote","isAttribEnd","isMatch","notMatch","e2","s3","s2","event","nodeType","textopts","strictFail","message","newTag","parent","tag","qname","attribute","qualName","local","attrib","qn","openTag","selfClosing","nv","uri","closeTag","tagName","closeTo","close","n2","parseEntity","entity","entityLC","numStr","beginWhiteSpace","charAt","starti","pad","returnState","parsedEntity","stringFromCharCode","floor","fromCodePoint","MAX_SIZE","codeUnits","highSurrogate","lowSurrogate","NewMenuEntryCategory","NewMenuEntryCategory2","NewMenu","entry","entryIndex","logger","context","getNewFileMenu","getNewFileMenuEntries","InvalidFilenameErrorReason","InvalidFilenameErrorReason2","InvalidFilenameError","validateFilename","filename","capabilities","forbiddenCharacters","character","endOfBasename","basename2","forbiddenFilenameExtensions","extension","getUniqueName","otherNames","opts","newName","extname","basename","humanList","humanListBinary","formatFileSize","skipSmallSizes","binaryPrefixes","base1000","order","readableFormat","relativeSize","getCanonicalLocale","stringify","orderBy","collection","identifiers2","orders","sorting","_","collator","sortNodes","nodes","sortingOptions","node","FileType"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}