{"version":3,"file":"scripts/initMiniSCPISimulatorForm.js","mappings":"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","sources":["webpack://moniwan/./node_modules/@lf/mwuikit/src/scripts/utils/mathTruncPolyfill.js","webpack://moniwan/./node_modules/flatpickr/dist/esm/types/options.js","webpack://moniwan/./node_modules/flatpickr/dist/esm/l10n/default.js","webpack://moniwan/./node_modules/flatpickr/dist/esm/utils/index.js","webpack://moniwan/./node_modules/flatpickr/dist/esm/utils/dom.js","webpack://moniwan/./node_modules/flatpickr/dist/esm/utils/formatting.js","webpack://moniwan/./node_modules/flatpickr/dist/esm/utils/dates.js","webpack://moniwan/./node_modules/flatpickr/dist/esm/index.js","webpack://moniwan/./node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack://moniwan/./node_modules/flatpickr/dist/l10n/fr.js","webpack://moniwan/./node_modules/moment/locale/fr.js","webpack://moniwan/./node_modules/moment/locale/ sync [/\\\\](fr(\\.js)","webpack://moniwan/./node_modules/moment/moment.js","webpack://moniwan/./node_modules/core-js/internals/a-callable.js","webpack://moniwan/./node_modules/core-js/internals/advance-string-index.js","webpack://moniwan/./node_modules/core-js/internals/an-object.js","webpack://moniwan/./node_modules/core-js/internals/array-includes.js","webpack://moniwan/./node_modules/core-js/internals/array-iteration.js","webpack://moniwan/./node_modules/core-js/internals/array-method-has-species-support.js","webpack://moniwan/./node_modules/core-js/internals/array-method-is-strict.js","webpack://moniwan/./node_modules/core-js/internals/array-species-constructor.js","webpack://moniwan/./node_modules/core-js/internals/array-species-create.js","webpack://moniwan/./node_modules/core-js/internals/classof-raw.js","webpack://moniwan/./node_modules/core-js/internals/classof.js","webpack://moniwan/./node_modules/core-js/internals/copy-constructor-properties.js","webpack://moniwan/./node_modules/core-js/internals/create-non-enumerable-property.js","webpack://moniwan/./node_modules/core-js/internals/create-property-descriptor.js","webpack://moniwan/./node_modules/core-js/internals/define-built-in.js","webpack://moniwan/./node_modules/core-js/internals/define-global-property.js","webpack://moniwan/./node_modules/core-js/internals/descriptors.js","webpack://moniwan/./node_modules/core-js/internals/document-create-element.js","webpack://moniwan/./node_modules/core-js/internals/enum-bug-keys.js","webpack://moniwan/./node_modules/core-js/internals/environment-user-agent.js","webpack://moniwan/./node_modules/core-js/internals/environment-v8-version.js","webpack://moniwan/./node_modules/core-js/internals/export.js","webpack://moniwan/./node_modules/core-js/internals/fails.js","webpack://moniwan/./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack://moniwan/./node_modules/core-js/internals/function-apply.js","webpack://moniwan/./node_modules/core-js/internals/function-bind-context.js","webpack://moniwan/./node_modules/core-js/internals/function-bind-native.js","webpack://moniwan/./node_modules/core-js/internals/function-call.js","webpack://moniwan/./node_modules/core-js/internals/function-name.js","webpack://moniwan/./node_modules/core-js/internals/function-uncurry-this-clause.js","webpack://moniwan/./node_modules/core-js/internals/function-uncurry-this.js","webpack://moniwan/./node_modules/core-js/internals/get-built-in.js","webpack://moniwan/./node_modules/core-js/internals/get-method.js","webpack://moniwan/./node_modules/core-js/internals/get-substitution.js","webpack://moniwan/./node_modules/core-js/internals/global-this.js","webpack://moniwan/./node_modules/core-js/internals/has-own-property.js","webpack://moniwan/./node_modules/core-js/internals/hidden-keys.js","webpack://moniwan/./node_modules/core-js/internals/html.js","webpack://moniwan/./node_modules/core-js/internals/ie8-dom-define.js","webpack://moniwan/./node_modules/core-js/internals/indexed-object.js","webpack://moniwan/./node_modules/core-js/internals/inspect-source.js","webpack://moniwan/./node_modules/core-js/internals/internal-state.js","webpack://moniwan/./node_modules/core-js/internals/is-array.js","webpack://moniwan/./node_modules/core-js/internals/is-callable.js","webpack://moniwan/./node_modules/core-js/internals/is-constructor.js","webpack://moniwan/./node_modules/core-js/internals/is-forced.js","webpack://moniwan/./node_modules/core-js/internals/is-null-or-undefined.js","webpack://moniwan/./node_modules/core-js/internals/is-object.js","webpack://moniwan/./node_modules/core-js/internals/is-pure.js","webpack://moniwan/./node_modules/core-js/internals/is-symbol.js","webpack://moniwan/./node_modules/core-js/internals/length-of-array-like.js","webpack://moniwan/./node_modules/core-js/internals/make-built-in.js","webpack://moniwan/./node_modules/core-js/internals/math-trunc.js","webpack://moniwan/./node_modules/core-js/internals/object-create.js","webpack://moniwan/./node_modules/core-js/internals/object-define-properties.js","webpack://moniwan/./node_modules/core-js/internals/object-define-property.js","webpack://moniwan/./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack://moniwan/./node_modules/core-js/internals/object-get-own-property-names.js","webpack://moniwan/./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack://moniwan/./node_modules/core-js/internals/object-is-prototype-of.js","webpack://moniwan/./node_modules/core-js/internals/object-keys-internal.js","webpack://moniwan/./node_modules/core-js/internals/object-keys.js","webpack://moniwan/./node_modules/core-js/internals/object-property-is-enumerable.js","webpack://moniwan/./node_modules/core-js/internals/object-to-string.js","webpack://moniwan/./node_modules/core-js/internals/ordinary-to-primitive.js","webpack://moniwan/./node_modules/core-js/internals/own-keys.js","webpack://moniwan/./node_modules/core-js/internals/regexp-exec-abstract.js","webpack://moniwan/./node_modules/core-js/internals/regexp-exec.js","webpack://moniwan/./node_modules/core-js/internals/regexp-flags.js","webpack://moniwan/./node_modules/core-js/internals/regexp-get-flags.js","webpack://moniwan/./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack://moniwan/./node_modules/core-js/internals/regexp-unsupported-dot-all.js","webpack://moniwan/./node_modules/core-js/internals/regexp-unsupported-ncg.js","webpack://moniwan/./node_modules/core-js/internals/require-object-coercible.js","webpack://moniwan/./node_modules/core-js/internals/shared-key.js","webpack://moniwan/./node_modules/core-js/internals/shared-store.js","webpack://moniwan/./node_modules/core-js/internals/shared.js","webpack://moniwan/./node_modules/core-js/internals/string-multibyte.js","webpack://moniwan/./node_modules/core-js/internals/symbol-constructor-detection.js","webpack://moniwan/./node_modules/core-js/internals/to-absolute-index.js","webpack://moniwan/./node_modules/core-js/internals/to-indexed-object.js","webpack://moniwan/./node_modules/core-js/internals/to-integer-or-infinity.js","webpack://moniwan/./node_modules/core-js/internals/to-length.js","webpack://moniwan/./node_modules/core-js/internals/to-object.js","webpack://moniwan/./node_modules/core-js/internals/to-primitive.js","webpack://moniwan/./node_modules/core-js/internals/to-property-key.js","webpack://moniwan/./node_modules/core-js/internals/to-string-tag-support.js","webpack://moniwan/./node_modules/core-js/internals/to-string.js","webpack://moniwan/./node_modules/core-js/internals/try-to-string.js","webpack://moniwan/./node_modules/core-js/internals/uid.js","webpack://moniwan/./node_modules/core-js/internals/use-symbol-as-uid.js","webpack://moniwan/./node_modules/core-js/internals/v8-prototype-define-bug.js","webpack://moniwan/./node_modules/core-js/internals/weak-map-basic-detection.js","webpack://moniwan/./node_modules/core-js/internals/well-known-symbol.js","webpack://moniwan/./node_modules/core-js/modules/es.array.filter.js","webpack://moniwan/./node_modules/core-js/modules/es.array.join.js","webpack://moniwan/./node_modules/core-js/modules/es.object.keys.js","webpack://moniwan/./node_modules/core-js/modules/es.object.to-string.js","webpack://moniwan/./node_modules/core-js/modules/es.regexp.exec.js","webpack://moniwan/./node_modules/core-js/modules/es.regexp.to-string.js","webpack://moniwan/./node_modules/core-js/modules/es.string.replace.js","webpack://moniwan/webpack/bootstrap","webpack://moniwan/webpack/runtime/define property getters","webpack://moniwan/webpack/runtime/global","webpack://moniwan/webpack/runtime/hasOwnProperty shorthand","webpack://moniwan/webpack/runtime/node module decorator","webpack://moniwan/./node_modules/@babel/runtime/helpers/esm/newArrowCheck.js","webpack://moniwan/./node_modules/@lf/mwuikit/src/scripts/objects/conditionallyDisplayedElement.js","webpack://moniwan/./node_modules/@lf/mwuikit/src/scripts/utils/id.js","webpack://moniwan/./node_modules/@lf/mwuikit/src/scripts/objects/dropdown.js","webpack://moniwan/./node_modules/@lf/mwuikit/src/scripts/utils/isAdultPerson.js","webpack://moniwan/./node_modules/@lf/mwuikit/src/scripts/objects/form.js","webpack://moniwan/./node_modules/@lf/mwuikit/src/scripts/utils/executeRecaptcha.js","webpack://moniwan/./Assets/scripts/special/forms/initMiniSCPISimulatorForm.js"],"sourcesContent":["Math.trunc = Math.trunc || function (x) {\r\n if (isNaN(x)) {\r\n return NaN;\r\n }\r\n if (x > 0) {\r\n return Math.floor(x);\r\n }\r\n return Math.ceil(x);\r\n};\r\n","export var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n};\nexport var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n }\n else if (containsDisabled && !outOfRange)\n return;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n });\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n}\n","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n typeof define === 'function' && define.amd ? define(['exports'], factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.fr = {}));\n}(this, (function (exports) { 'use strict';\n\n var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n ? window.flatpickr\n : {\n l10ns: {},\n };\n var French = {\n firstDayOfWeek: 1,\n weekdays: {\n shorthand: [\"dim\", \"lun\", \"mar\", \"mer\", \"jeu\", \"ven\", \"sam\"],\n longhand: [\n \"dimanche\",\n \"lundi\",\n \"mardi\",\n \"mercredi\",\n \"jeudi\",\n \"vendredi\",\n \"samedi\",\n ],\n },\n months: {\n shorthand: [\n \"janv\",\n \"févr\",\n \"mars\",\n \"avr\",\n \"mai\",\n \"juin\",\n \"juil\",\n \"août\",\n \"sept\",\n \"oct\",\n \"nov\",\n \"déc\",\n ],\n longhand: [\n \"janvier\",\n \"février\",\n \"mars\",\n \"avril\",\n \"mai\",\n \"juin\",\n \"juillet\",\n \"août\",\n \"septembre\",\n \"octobre\",\n \"novembre\",\n \"décembre\",\n ],\n },\n ordinal: function (nth) {\n if (nth > 1)\n return \"\";\n return \"er\";\n },\n rangeSeparator: \" au \",\n weekAbbreviation: \"Sem\",\n scrollTitle: \"Défiler pour augmenter la valeur\",\n toggleTitle: \"Cliquer pour basculer\",\n time_24hr: true,\n };\n fp.l10ns.fr = French;\n var fr = fp.l10ns;\n\n exports.French = French;\n exports.default = fr;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\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 = [\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 var fr = moment.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,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\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 return fr;\n\n})));\n","var map = {\n\t\"./fr\": 5498,\n\t\"./fr.js\": 5498\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 5076;","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\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', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n};\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE === 1;\n var IS_FILTER = TYPE === 2;\n var IS_SOME = TYPE === 3;\n var IS_EVERY = TYPE === 4;\n var IS_FIND_INDEX = TYPE === 6;\n var IS_FILTER_REJECT = TYPE === 7;\n var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var length = lengthOfArrayLike(self);\n var boundFunction = bind(callbackfn, that);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/environment-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call -- required for testing\n method.call(null, argument || function () { return 1; }, 1);\n });\n};\n","'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? $Array : C;\n};\n","'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(globalThis, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n globalThis[key] = value;\n } return value;\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\n\nvar document = globalThis.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\nvar globalThis = require('../internals/global-this');\n\nvar navigator = globalThis.navigator;\nvar userAgent = navigator && navigator.userAgent;\n\nmodule.exports = userAgent ? String(userAgent) : '';\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar userAgent = require('../internals/environment-user-agent');\n\nvar process = globalThis.process;\nvar Deno = globalThis.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = globalThis;\n } else if (STATIC) {\n target = globalThis[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = globalThis[TARGET] && globalThis[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n var SYMBOL = wellKnownSymbol(KEY);\n\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegExp methods\n var O = {};\n O[SYMBOL] = function () { return 7; };\n return ''[KEY](O) !== 7;\n });\n\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {};\n // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n re.constructor = {};\n re.constructor[SPECIES] = function () { return re; };\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () {\n execCalled = true;\n return null;\n };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (\n !DELEGATES_TO_SYMBOL ||\n !DELEGATES_TO_EXEC ||\n FORCED\n ) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n var $exec = regexp.exec;\n if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };\n }\n return { done: true, value: call(nativeMethod, str, regexp, arg2) };\n }\n return { done: false };\n });\n\n defineBuiltIn(String.prototype, KEY, methods[0]);\n defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n }\n\n if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(globalThis[namespace]) : globalThis[namespace] && globalThis[namespace][method];\n};\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar floor = Math.floor;\nvar charAt = uncurryThis(''.charAt);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d{1,2}|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d{1,2})/g;\n\n// `GetSubstitution` abstract operation\n// https://tc39.es/ecma262/#sec-getsubstitution\nmodule.exports = function (matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return replace(replacement, symbols, function (match, ch) {\n var capture;\n switch (charAt(ch, 0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return stringSlice(str, 0, position);\n case \"'\": return stringSlice(str, tailPos);\n case '<':\n capture = namedCaptures[stringSlice(ch, 1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? charAt(ch, 1) : captures[f - 1] + charAt(ch, 1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar globalThis = require('../internals/global-this');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = globalThis.TypeError;\nvar WeakMap = globalThis.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n return classof(argument) === 'Array';\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, [], argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n // eslint-disable-next-line no-useless-assignment -- avoid memory leak\n activeXDocument = null;\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n var exec = R.exec;\n if (isCallable(exec)) {\n var result = call(exec, R, S);\n if (result !== null) anObject(result);\n return result;\n }\n if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n throw new $TypeError('RegExp#exec called on incompatible receiver');\n};\n","'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n var re1 = /a/;\n var re2 = /b*/g;\n call(nativeExec, re1, 'a');\n call(nativeExec, re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n patchedExec = function exec(string) {\n var re = this;\n var state = getInternalState(re);\n var str = toString(string);\n var raw = state.raw;\n var result, reCopy, lastIndex, match, i, object, group;\n\n if (raw) {\n raw.lastIndex = re.lastIndex;\n result = call(patchedExec, raw, str);\n re.lastIndex = raw.lastIndex;\n return result;\n }\n\n var groups = state.groups;\n var sticky = UNSUPPORTED_Y && re.sticky;\n var flags = call(regexpFlags, re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = replace(flags, 'y', '');\n if (indexOf(flags, 'g') === -1) {\n flags += 'g';\n }\n\n strCopy = stringSlice(str, re.lastIndex);\n // Support anchored sticky behavior.\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n }\n // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = stringSlice(match.input, charsAdded);\n match[0] = stringSlice(match[0], charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n call(nativeReplace, match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n if (match && groups) {\n match.groups = object = create(null);\n for (i = 0; i < groups.length; i++) {\n group = groups[i];\n object[group[0]] = match[group[1]];\n }\n }\n\n return match;\n };\n}\n\nmodule.exports = patchedExec;\n","'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n var that = anObject(this);\n var result = '';\n if (that.hasIndices) result += 'd';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.unicodeSets) result += 'v';\n if (that.sticky) result += 'y';\n return result;\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar regExpFlags = require('../internals/regexp-flags');\n\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (R) {\n var flags = R.flags;\n return flags === undefined && !('flags' in RegExpPrototype) && !hasOwn(R, 'flags') && isPrototypeOf(RegExpPrototype, R)\n ? call(regExpFlags, R) : flags;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n var re = $RegExp('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = $RegExp('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') !== null;\n});\n\nmodule.exports = {\n BROKEN_CARET: BROKEN_CARET,\n MISSED_STICKY: MISSED_STICKY,\n UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('.', 's');\n return !(re.dotAll && re.test('\\n') && re.flags === 's');\n});\n","'use strict';\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?b)', 'g') -> /(?b)/g and it causes SyntaxError\nvar $RegExp = globalThis.RegExp;\n\nmodule.exports = fails(function () {\n var re = $RegExp('(?b)', 'g');\n return re.exec('b').groups.a !== 'b' ||\n 'b'.replace(re, '$c') !== 'bc';\n});\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global-this');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.39.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.39.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/environment-v8-version');\nvar fails = require('../internals/fails');\nvar globalThis = require('../internals/global-this');\n\nvar $String = globalThis.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL &&\n !Symbol.sham &&\n typeof Symbol.iterator == 'symbol';\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = globalThis.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = globalThis.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject !== Object;\nvar FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: FORCED }, {\n join: function join(separator) {\n return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar toObject = require('../internals/to-object');\nvar nativeKeys = require('../internals/object-keys');\nvar fails = require('../internals/fails');\n\nvar FAILS_ON_PRIMITIVES = fails(function () { nativeKeys(1); });\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n$({ target: 'Object', stat: true, forced: FAILS_ON_PRIMITIVES }, {\n keys: function keys(it) {\n return nativeKeys(toObject(it));\n }\n});\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n defineBuiltIn(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar exec = require('../internals/regexp-exec');\n\n// `RegExp.prototype.exec` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.exec\n$({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {\n exec: exec\n});\n","'use strict';\nvar PROPER_FUNCTION_NAME = require('../internals/function-name').PROPER;\nvar defineBuiltIn = require('../internals/define-built-in');\nvar anObject = require('../internals/an-object');\nvar $toString = require('../internals/to-string');\nvar fails = require('../internals/fails');\nvar getRegExpFlags = require('../internals/regexp-get-flags');\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\n\nvar NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) !== '/a/b'; });\n// FF44- RegExp#toString has a wrong name\nvar INCORRECT_NAME = PROPER_FUNCTION_NAME && nativeToString.name !== TO_STRING;\n\n// `RegExp.prototype.toString` method\n// https://tc39.es/ecma262/#sec-regexp.prototype.tostring\nif (NOT_GENERIC || INCORRECT_NAME) {\n defineBuiltIn(RegExpPrototype, TO_STRING, function toString() {\n var R = anObject(this);\n var pattern = $toString(R.source);\n var flags = $toString(getRegExpFlags(R));\n return '/' + pattern + '/' + flags;\n }, { unsafe: true });\n}\n","'use strict';\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar fails = require('../internals/fails');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar getMethod = require('../internals/get-method');\nvar getSubstitution = require('../internals/get-substitution');\nvar regExpExec = require('../internals/regexp-exec-abstract');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar REPLACE = wellKnownSymbol('replace');\nvar max = Math.max;\nvar min = Math.min;\nvar concat = uncurryThis([].concat);\nvar push = uncurryThis([].push);\nvar stringIndexOf = uncurryThis(''.indexOf);\nvar stringSlice = uncurryThis(''.slice);\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\nvar REPLACE_KEEPS_$0 = (function () {\n // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing\n return 'a'.replace(/./, '$0') === '$0';\n})();\n\n// Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n return false;\n})();\n\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n var re = /./;\n re.exec = function () {\n var result = [];\n result.groups = { a: '7' };\n return result;\n };\n // eslint-disable-next-line regexp/no-useless-dollar-replacements -- false positive\n return ''.replace(re, '$') !== '7';\n});\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', function (_, nativeReplace, maybeCallNative) {\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.es/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = isNullOrUndefined(searchValue) ? undefined : getMethod(searchValue, REPLACE);\n return replacer\n ? call(replacer, searchValue, O, replaceValue)\n : call(nativeReplace, toString(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace\n function (string, replaceValue) {\n var rx = anObject(this);\n var S = toString(string);\n\n if (\n typeof replaceValue == 'string' &&\n stringIndexOf(replaceValue, UNSAFE_SUBSTITUTE) === -1 &&\n stringIndexOf(replaceValue, '$<') === -1\n ) {\n var res = maybeCallNative(nativeReplace, rx, S, replaceValue);\n if (res.done) return res.value;\n }\n\n var functionalReplace = isCallable(replaceValue);\n if (!functionalReplace) replaceValue = toString(replaceValue);\n\n var global = rx.global;\n var fullUnicode;\n if (global) {\n fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n\n var results = [];\n var result;\n while (true) {\n result = regExpExec(rx, S);\n if (result === null) break;\n\n push(results, result);\n if (!global) break;\n\n var matchStr = toString(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = toString(result[0]);\n var position = max(min(toIntegerOrInfinity(result.index), S.length), 0);\n var captures = [];\n var replacement;\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) push(captures, maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = concat([matched], captures, position, S);\n if (namedCaptures !== undefined) push(replacerArgs, namedCaptures);\n replacement = toString(apply(replaceValue, undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += stringSlice(S, nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n\n return accumulatedResult + stringSlice(S, nextSourcePosition);\n }\n ];\n}, !REPLACE_SUPPORTS_NAMED_GROUPS || !REPLACE_KEEPS_$0 || REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","function _newArrowCheck(n, r) {\n if (n !== r) throw new TypeError(\"Cannot instantiate an arrow function\");\n}\nexport { _newArrowCheck as default };","'use strict';\r\n\r\nexport function ConditionallyDisplayedElement(element) {\r\n const dataset = element.dataset;\r\n const condition = dataset ? dataset.displayIf : null;\r\n\r\n if (condition) {\r\n const triggerSupportAttributeName = 'data-' + condition.replace(/([a-zA-Z])(?=[A-Z])/g, '$1-').toLowerCase();\r\n const triggerSupportElement = document.querySelector('[' + triggerSupportAttributeName + ']');\r\n\r\n if (triggerSupportElement) {\r\n element.style.display = triggerSupportElement.dataset[condition] === 'false' ? 'none' : '';\r\n\r\n const observer = new MutationObserver(function (mutations) {\r\n for (let i = 0; i < mutations.length; i++) {\r\n if (mutations[i].attributeName === triggerSupportAttributeName) {\r\n element.style.display = triggerSupportElement.dataset[condition] === 'false' ? 'none' : '';\r\n }\r\n }\r\n });\r\n\r\n const observerConfig = {\r\n attributes: true,\r\n childList: false,\r\n characterData: false\r\n };\r\n\r\n observer.observe(triggerSupportElement, observerConfig);\r\n }\r\n }\r\n\r\n return element;\r\n}\r\n","'use strict';\r\n\r\nexport const id = function () {\r\n return Math.random().toString(36).substr(2,16);\r\n};","\r\n'use strict';\r\n\r\nimport { id } from '../utils/id';\r\n\r\nconst KEYCODE = {\r\n\tUP: 38,\r\n\tDOWN: 40,\r\n\tRETURN: 13,\r\n\tESC: 27\r\n};\r\n\r\nexport function Dropdown(params) {\r\n\t/* TODO: adapt with input text instead of cta */\r\n\tlet dropdownElement = null;\r\n\tlet ctaElement = null;\r\n\tlet listboxElement = null;\r\n\tlet inputElement = null;\r\n\r\n\tlet dropdownId = '';\r\n\r\n\tlet selectOptions = new Array();\r\n\tlet selectedOptionId = null;\r\n\r\n\tlet ctaPlaceholderLabel = '';\r\n\r\n\tconst dropdownInvalidModifier = 'dropdown--invalid';\r\n\tconst hiddenListboxModifier = 'dropdown__options-list--hidden';\r\n\tconst focusedListItemModifier = 'dropdown__option--focused';\r\n\tconst activeCtaModifier = 'dropdown__cta--active';\r\n\tconst withSpinnerCtaModifier = 'dropdown__cta--with-spinner';\r\n\tconst emptyOptionsListCtaModifier = 'dropdown__cta--with-empty-options-list';\r\n\r\n\tlet isDropdownActive = false;\r\n\r\n\tif (params.selectElement) {\r\n\t\tconst selectElement = params.selectElement.cloneNode(true);\r\n\t\tdropdownId = selectElement.id || id();\r\n\r\n\t\tdropdownElement = function () {\r\n\t\t\tconst element = document.createElement('div');\r\n\t\t\telement.setAttribute('id', dropdownId);\r\n\r\n\t\t\tif (selectElement.dataset.dropdownClass) {\r\n\t\t\t\telement.setAttribute('class', selectElement.dataset.dropdownClass);\r\n\t\t\t}\r\n\r\n\t\t\telement.classList.add('dropdown');\r\n\r\n\t\t\treturn element;\r\n\t\t}();\r\n\r\n\t\tctaElement = function () {\r\n\t\t\tconst element = document.createElement('span');\r\n\t\t\telement.setAttribute('id', dropdownId + '__cta');\r\n\t\t\telement.setAttribute('role', 'button');\r\n\t\t\telement.setAttribute('tabindex', '0');\r\n\t\t\telement.setAttribute('aria-haspopup', 'listbox');\r\n\t\t\telement.classList.add('dropdown__cta');\r\n\t\t\tif(params.labelId) element.setAttribute('aria-labelledby', params.labelId);\r\n\r\n\t\t\tconst selectedOptionElement = selectElement.querySelector('option[selected]');\r\n\t\t\tif (selectedOptionElement && selectedOptionElement.innerText !== '') {\r\n\t\t\t\telement.innerText = selectedOptionElement.innerText;\r\n\t\t\t}\r\n\r\n\t\t\tconst selectPlaceholderOptionElement = selectElement.querySelector('option[disabled]:first-child');\r\n\t\t\tif (selectPlaceholderOptionElement && selectPlaceholderOptionElement.innerText !== '') {\r\n\t\t\t\tctaPlaceholderLabel = selectPlaceholderOptionElement.innerText;\r\n\r\n\t\t\t\tif (!element.innerText.length) {\r\n\t\t\t\t\telement.innerText = ctaPlaceholderLabel;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn element;\r\n\t\t}();\r\n\r\n\t\tlistboxElement = function () {\r\n\t\t\tconst element = document.createElement('ul');\r\n\t\t\telement.setAttribute('id', dropdownId + '__options');\r\n\t\t\telement.setAttribute('role', 'listbox');\r\n\t\t\telement.setAttribute('tabindex', '-1');\r\n\t\t\telement.classList.add('dropdown__options-list');\r\n\t\t\telement.classList.add(hiddenListboxModifier);\r\n\t\t\telement.setAttribute('aria-labelledby', dropdownId + '__cta' + (params.labelId ? ' ' + params.labelId : ''));\r\n\r\n\t\t\tconst selectOptionElements = selectElement.querySelectorAll('option');\r\n\r\n\t\t\tfor (let i = 0; i < selectOptionElements.length; i++) {\r\n\t\t\t\tconst selectOptionElement = selectOptionElements[i];\r\n\t\t\t\tif (selectOptionElement.value) {\r\n\t\t\t\t\tconst itemElement = document.createElement('li');\r\n\t\t\t\t\titemElement.setAttribute('id', dropdownId + '__option-' + i);\r\n\t\t\t\t\titemElement.setAttribute('role', 'option');\r\n\t\t\t\t\titemElement.classList.add('dropdown__option');\r\n\t\t\t\t\titemElement.innerText = selectOptionElement.innerText;\r\n\r\n\t\t\t\t\tselectOptions[dropdownId + '__option-' + i] = selectOptionElement.value;\r\n\r\n\t\t\t\t\tif (selectOptionElement.selected) {\r\n\t\t\t\t\t\tselectedOptionId = dropdownId + '__option-' + i;\r\n\t\t\t\t\t\titemElement.classList.add(focusedListItemModifier);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\telement.append(itemElement);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn element;\r\n\t\t}();\r\n\r\n\t\tinputElement = function () {\r\n\t\t\tif (selectElement.hasAttribute('name')) {\r\n\t\t\t\tconst element = document.createElement('input');\r\n\t\t\t\telement.setAttribute('name', selectElement.getAttribute('name'));\r\n\t\t\t\telement.setAttribute('type', 'text');\r\n\t\t\t\telement.setAttribute('style', 'display:none');\r\n\t\t\t\tif (selectElement.required) element.setAttribute('required', true);\r\n\r\n\t\t\t\tif (selectElement.value) {\r\n\t\t\t\t\telement.setAttribute('value', selectElement.value);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!element.validity.valid) {\r\n\t\t\t\t\tdropdownElement.classList.add(dropdownInvalidModifier);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn element;\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t}();\r\n\r\n\t\tparams.selectElement.parentNode.insertBefore(dropdownElement, params.selectElement.nextElementSibling);\r\n\t\tparams.selectElement.parentNode.removeChild(params.selectElement);\r\n\t\tdropdownElement.append(ctaElement);\r\n\t\tdropdownElement.append(listboxElement);\r\n\t\tif (inputElement) dropdownElement.append(inputElement);\r\n\r\n\t\tif (!Object.keys(selectOptions).length) {\r\n\t\t\tctaElement.classList.add(emptyOptionsListCtaModifier);\r\n\t\t}\r\n\r\n\t} else if (params.dropdownElement) {\r\n\t\tdropdownElement = params.dropdownElement;\r\n\t\tdropdownId = dropdownElement.id;\r\n\t\tctaElement = dropdownElement.querySelector('.dropdown__cta');\r\n\t\tlistboxElement = dropdownElement.querySelector('.dropdown__options-list');\r\n\t\tinputElement = dropdownElement.querySelector('input');\r\n\t\tselectOptions = dropdownElement.dataset && dropdownElement.dataset.values ? JSON.parse(dropdownElement.dataset.values) : {};\r\n\t\tctaPlaceholderLabel = !!ctaElement ? ctaElement.innerHTML || '' : '';\r\n\t}\r\n\r\n\tfunction resetSelection() {\r\n\t\tselectedOptionId = null;\r\n\r\n\t\tif (inputElement) {\r\n\t\t\tinputElement.value = '';\r\n\r\n\t\t\tif (!inputElement.validity.valid && !dropdownElement.classList.contains(dropdownInvalidModifier)) {\r\n\t\t\t\tdropdownElement.classList.add(dropdownInvalidModifier);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlistboxElement.removeAttribute('aria-activedescendant');\r\n\r\n\t\tctaElement.innerHTML = ctaPlaceholderLabel;\r\n\t}\r\n\r\n\tfunction showListbox() {\r\n\t\tctaElement.setAttribute('aria-expanded', 'true');\r\n\r\n\t\tif (!ctaElement.classList.contains(activeCtaModifier)) {\r\n\t\t\tctaElement.classList.add(activeCtaModifier);\r\n\t\t}\r\n\r\n\t\tif (listboxElement.classList.contains(hiddenListboxModifier)) {\r\n\t\t\tlistboxElement.classList.remove(hiddenListboxModifier);\r\n\t\t}\r\n\r\n\t\tlistboxElement.focus();\r\n\r\n\t\tisDropdownActive = true;\r\n\t}\r\n\r\n\tfunction hideListbox() {\r\n\t\tctaElement.removeAttribute('aria-expanded');\r\n\r\n\t\tif (ctaElement.classList.contains(activeCtaModifier)) {\r\n\t\t\tctaElement.classList.remove(activeCtaModifier);\r\n\t\t}\r\n\r\n\t\tif (!listboxElement.classList.contains(hiddenListboxModifier)) {\r\n\t\t\tlistboxElement.classList.add(hiddenListboxModifier);\r\n\t\t}\r\n\r\n\t\tctaElement.focus();\r\n\r\n\t\tisDropdownActive = false;\r\n\t}\r\n\r\n\tfunction unSelectOption(element) {\r\n\t\tif (element && element.classList.contains(focusedListItemModifier)) {\r\n\t\t\telement.classList.remove(focusedListItemModifier);\r\n\t\t\tif (element.hasAttribute('aria-selected')) {\r\n\t\t\t\telement.setAttribute('aria-selected', 'true');\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresetSelection();\r\n\t}\r\n\r\n\tfunction selectOption(element) {\r\n\t\tif (element) {\r\n\t\t\tif (!element.classList.contains(focusedListItemModifier)) {\r\n\t\t\t\telement.classList.add(focusedListItemModifier);\r\n\t\t\t}\r\n\r\n\t\t\tif (element.id !== selectedOptionId) {\r\n\t\t\t\tif(selectedOptionId) {\r\n\t\t\t\t\tunSelectOption(document.getElementById(selectedOptionId));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tselectedOptionId = element.id;\r\n\t\t\t\telement.setAttribute('aria-selected', 'true');\r\n\t\t\t\tlistboxElement.setAttribute('aria-activedescendant', selectedOptionId);\r\n\r\n\t\t\t\tif (inputElement) {\r\n\t\t\t\t\tinputElement.value = selectOptions[selectedOptionId];\r\n\r\n\t\t\t\t\tif (!inputElement.validity.valid && !dropdownElement.classList.contains(dropdownInvalidModifier)) {\r\n\t\t\t\t\t\tdropdownElement.classList.add(dropdownInvalidModifier);\r\n\t\t\t\t\t} else if (inputElement.validity.valid && dropdownElement.classList.contains(dropdownInvalidModifier)) {\r\n\t\t\t\t\t\tdropdownElement.classList.remove(dropdownInvalidModifier);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tctaElement.innerText = element.innerText;\r\n\t\t\t}\r\n\r\n\t\t\tif (listboxElement.scrollHeight > listboxElement.clientHeight) {\r\n\t\t\t\tconst listboxScrollBottom = listboxElement.clientHeight + listboxElement.scrollTop;\r\n\t\t\t\tconst elementBottom = element.offsetTop + element.offsetHeight;\r\n\t\t\t\tif (elementBottom > listboxScrollBottom) {\r\n\t\t\t\t\tlistboxElement.scrollTop = elementBottom - listboxElement.clientHeight;\r\n\t\t\t\t} else if (element.offsetTop < listboxElement.scrollTop) {\r\n\t\t\t\t\tlistboxElement.scrollTop = element.offsetTop;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (params.onChange && typeof params.onChange === 'function') {\r\n\t\t\t\tparams.onChange(selectOptions[element.id]);\r\n\t\t\t}\r\n\t\t} else if(selectedOptionId) {\r\n\t\t\tunSelectOption(document.getElementById(selectedOptionId));\r\n\t\t}\r\n\t}\r\n\r\n\tfunction selectPreviousOption() {\r\n\t\tconst selectedOptionElement = selectedOptionId !== null ? document.getElementById(selectedOptionId) : null;\r\n\t\tconst previousOptionElement = selectedOptionElement ? selectedOptionElement.previousElementSibling : null;\r\n\r\n\t\tif (previousOptionElement && previousOptionElement.getAttribute('role') === 'option') {\r\n\t\t\tselectOption(previousOptionElement);\r\n\t\t} else {\r\n\t\t\tselectOption(listboxElement.querySelector('[role=option]'));\r\n\t\t}\r\n\t}\r\n\r\n\tfunction selectNextOption() {\r\n\t\tconst selectedOptionElement = selectedOptionId !== null ? document.getElementById(selectedOptionId) : null;\r\n\r\n\t\tif (!selectedOptionElement) {\r\n\t\t\tselectOption(listboxElement.querySelector('[role=option]'));\r\n\t\t} else {\r\n\t\t\tconst nextOptionElement = selectedOptionElement.nextElementSibling;\r\n\t\t\tif (nextOptionElement && nextOptionElement.getAttribute('role') === 'option') {\r\n\t\t\t\tselectOption(nextOptionElement);\r\n\t\t\t} else {\r\n\t\t\t\tselectOption(listboxElement.querySelector('[role=option]:last-child'));\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction keyDownInteractions(event) {\r\n\t\tconst key = event.which || event.keyCode;\r\n\r\n\t\tif (key) {\r\n\t\t\tswitch (key) {\r\n\t\t\t\tcase KEYCODE.UP:\r\n\t\t\t\tcase KEYCODE.DOWN:\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tshowListbox();\r\n\t\t\t\t\tif (key === KEYCODE.UP) selectPreviousOption();\r\n\t\t\t\t\tif (key === KEYCODE.DOWN) selectNextOption();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase KEYCODE.RETURN:\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\tif (isDropdownActive) {\r\n\t\t\t\t\t\thideListbox();\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (params.onEnter && typeof params.onEnter === 'function') {\r\n\t\t\t\t\t\t\tparams.onEnter(selectOptions[selectedOptionId]);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tshowListbox();\r\n\t\t\t\t\t}\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase KEYCODE.ESC:\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t\thideListbox();\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tctaElement.addEventListener('click', function (event) {\r\n\t\tevent.preventDefault();\r\n\t\tif (isDropdownActive) {\r\n\t\t\thideListbox();\t\t\t\r\n\t\t} else {\r\n\t\t\tshowListbox();\r\n\t\t}\r\n\t});\r\n\r\n\tlistboxElement.addEventListener('blur', function (event) {\r\n\t\tevent.preventDefault();\r\n\t\tif (event.relatedTarget === ctaElement) return;\r\n\t\thideListbox();\r\n\t});\r\n\r\n\tlistboxElement.addEventListener('click', function (event) {\r\n\t\tevent.preventDefault();\r\n\t\tif (event.target.getAttribute('role') === 'option') {\r\n\t\t\tselectOption(event.target);\r\n\t\t}\r\n\r\n\t\tif (isDropdownActive) {\r\n\t\t\thideListbox();\r\n\t\t}\r\n\r\n\t\tif (params.onEnter && typeof params.onEnter === 'function') {\r\n\t\t\tparams.onEnter(selectOptions[selectedOptionId]);\r\n\t\t}\r\n\t});\r\n\r\n\tctaElement.addEventListener('keydown', keyDownInteractions);\r\n\tlistboxElement.addEventListener('keydown', keyDownInteractions);\r\n\r\n\tfunction updateOptions(options) {\r\n\t\tif (!options.length) {\r\n\t\t\tif (!ctaElement.classList.contains(emptyOptionsListCtaModifier)) {\r\n\t\t\t\tctaElement.classList.add(emptyOptionsListCtaModifier);\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tif (ctaElement.classList.contains(emptyOptionsListCtaModifier)) {\r\n\t\t\t\tctaElement.classList.remove(emptyOptionsListCtaModifier);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tresetSelection();\r\n\r\n\t\tif (listboxElement.hasChildNodes()) {\r\n\t\t\twhile (listboxElement.firstChild) {\r\n\t\t\t\tlistboxElement.removeChild(listboxElement.firstChild);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tselectOptions = [];\r\n\r\n\t\tfor (let i = 0; i < options.length; i++) {\r\n\t\t\tconst itemElement = document.createElement('li');\r\n\t\t\titemElement.setAttribute('id', dropdownId + '__option-' + i);\r\n\t\t\titemElement.setAttribute('role', 'option');\r\n\t\t\titemElement.classList.add('dropdown__option');\r\n\t\t\titemElement.innerText = options[i].label;\r\n\r\n\t\t\tselectOptions[dropdownId + '__option-' + i] = options[i].value;\r\n\r\n\t\t\tif (options[i].selected) {\r\n\t\t\t\tselectOption(itemElement);\r\n\t\t\t}\r\n\r\n\t\t\tlistboxElement.append(itemElement);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction showSpinner() {\r\n\t\tif (!ctaElement.classList.contains(withSpinnerCtaModifier)) {\r\n\t\t\tctaElement.classList.add(withSpinnerCtaModifier);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction hideSpinner() {\r\n\t\tif (ctaElement.classList.contains(withSpinnerCtaModifier)) {\r\n\t\t\tctaElement.classList.remove(withSpinnerCtaModifier);\r\n\t\t}\r\n\t}\r\n\r\n\tfunction getSelectedOptionValue() {\r\n\t\treturn selectOptions[selectedOptionId];\r\n\t}\r\n\r\n\treturn {\r\n\t\tid: dropdownId,\r\n\t\tupdateOptions: updateOptions,\r\n\t\tselectOption: selectOption,\r\n\t\tshowSpinner: showSpinner,\r\n\t\thideSpinner: hideSpinner,\r\n\t\tgetSelectedOptionValue: getSelectedOptionValue\r\n\t}\r\n}","'use strict';\r\n\r\nconst Moment = require('moment');\r\n\r\nexport const isAdultPerson = function (dateOfBirthStr) {\r\n const moment = Moment(dateOfBirthStr);\r\n\r\n if (moment.isValid()) {\r\n const today = new Date();\r\n const dateOfBirth = moment.toDate();\r\n let age = today.getFullYear() - dateOfBirth.getFullYear();\r\n const additionalMonths = today.getMonth() - dateOfBirth.getMonth();\r\n\r\n if (additionalMonths < 0 || (additionalMonths === 0 && today.getDate() < dateOfBirth.getDate())) {\r\n age--;\r\n }\r\n\r\n return age >= 18;\r\n } else return false;\r\n}\r\n","'use strict';\r\n\r\nrequire('../utils/mathTruncPolyfill');\r\n\r\nconst Moment = require('moment');\r\n\r\nconst flatpickr = require('flatpickr').default;\r\nimport { French } from 'flatpickr/dist/l10n/fr';\r\n\r\nimport { ConditionallyDisplayedElement } from './conditionallyDisplayedElement';\r\nimport { Dropdown } from './dropdown';\r\n\r\nimport { executeRecaptcha } from '../utils/executeRecaptcha';\r\nimport { isAdultPerson } from '../utils/isAdultPerson';\r\n\r\nexport function Form(params) {\r\n const formElement = params.element;\r\n const useDefaultSubmit = params.useDefaultSubmit;\r\n const submitCTAElements = formElement.querySelectorAll('[type=submit]');\r\n const loadingCtaModifier = 'cta--loading';\r\n\r\n let dropdowns = [];\r\n\r\n\r\n function initDateInputs() {\r\n const inputElements = formElement.querySelectorAll('[type=date]:not([noinit])');\r\n const today = new Date();\r\n const todayFullYear = today.getFullYear();\r\n today.setFullYear(todayFullYear);\r\n const defaultMaxDate = new Date(today);\r\n\r\n for (let i = 0; i < inputElements.length; i++) {\r\n inputElements[i].setAttribute('type', 'text');\r\n\r\n const options = {\r\n disableMobile: true,\r\n locale: French,\r\n dateFormat: 'd/m/Y',\r\n allowInput: true\r\n };\r\n\r\n const moment = Moment(inputElements[i].value);\r\n if (moment.isValid()) {\r\n if (inputElements[i].name.indexOf('Birthdate') > -1) {\r\n if (!isAdultPerson(inputElements[i].value)) {\r\n options['defaultDate'] = defaultMaxDate;\r\n } else {\r\n options['defaultDate'] = moment.toDate();\r\n }\r\n } else {\r\n options['defaultDate'] = moment.toDate();\r\n }\r\n }\r\n\r\n const picker = flatpickr(inputElements[i], options);\r\n }\r\n }\r\n\r\n function ConstrainedNumberInputs(input) {\r\n const value = parseFloat(input.value);\r\n const min = !!input.min ? parseFloat(input.min) : null;\r\n const max = !!input.max ? parseFloat(input.max) : null;\r\n const step = !!input.step ? parseFloat(input.step) : null;\r\n\r\n if (typeof min === 'number' && value < min) {\r\n input.value = min;\r\n } else if (typeof max === 'number' && value > max) {\r\n input.value = max;\r\n } else if (value % step > 0) {\r\n input.value = Math.round(Math.trunc((value + value % step) / step) * step * 100) / 100;\r\n }\r\n }\r\n\r\n function initConstrainedNumberInputs() {\r\n const inputElements = formElement.querySelectorAll('[type=number][min]:not([noinit]), [type=number][max]:not([noinit]), [type=number][step]:not([noinit])');\r\n\r\n for (let i = 0; i < inputElements.length; i++) {\r\n inputElements[i].addEventListener('change', function () {\r\n ConstrainedNumberInputs(this);\r\n });\r\n }\r\n }\r\n\r\n function initFilesInputs() {\r\n const inputElements = formElement.querySelectorAll('[type=file]');\r\n\r\n for (let i = 0; i < inputElements.length; i++) {\r\n let nextFilesListElement = formElement.querySelector('[data-files-list-for=' + inputElements[i].id + ']');\r\n\r\n if (!nextFilesListElement) {\r\n let nextElement = inputElements[i].nextElementSibling;\r\n\r\n while (nextElement) {\r\n if (nextElement.nodeName === 'UL' && nextElement.hasAttribute('data-files-list')) {\r\n nextFilesListElement = nextElement;\r\n break;\r\n }\r\n nextElement = nextElement.nextElementSibling;\r\n }\r\n }\r\n\r\n if (nextFilesListElement) {\r\n inputElements[i].addEventListener('change', function (event) {\r\n\r\n while (nextFilesListElement.firstChild) {\r\n nextFilesListElement.removeChild(nextFilesListElement.firstChild);\r\n }\r\n\r\n for (let i = 0; i < this.files.length; i++) {\r\n const item = document.createElement('li');\r\n\r\n if (this.dataset.fileSizeLimit && this.files[i].size > parseFloat(this.dataset.fileSizeLimit) * 1048576) {\r\n item.classList.add('error-alert');\r\n item.innerHTML = '' + this.files[i].name + ' est trop volumineux (> aux ' + this.dataset.fileSizeLimit + ' Mo permis)';\r\n event.preventDefault();\r\n } else {\r\n item.innerHTML = '' + this.files[i].name + '';\r\n }\r\n\r\n nextFilesListElement.append(item);\r\n }\r\n });\r\n }\r\n }\r\n }\r\n\r\n function initDropdowns() {\r\n const dropdownElements = formElement.querySelectorAll('[data-dropdown]');\r\n\r\n for (let i = 0; i < dropdownElements.length; i++) {\r\n dropdowns.push(\r\n Dropdown(\r\n {\r\n selectElement: dropdownElements[i],\r\n labelId: dropdownElements[i].dataset.labelId || null\r\n }\r\n )\r\n );\r\n }\r\n }\r\n\r\n function initConditionalElements() {\r\n const conditionallyDisplayedElements = document.querySelectorAll('[data-display-if]');\r\n for (let i = 0; i < conditionallyDisplayedElements.length; i++) {\r\n ConditionallyDisplayedElement(conditionallyDisplayedElements[i]);\r\n }\r\n }\r\n\r\n function updateDropdownOptions(id, options) {\r\n const dropdown = dropdowns.filter(function(element) { return element.id == id; })[0];\r\n\r\n if (!!dropdown) {\r\n dropdown.updateOptions(options);\r\n }\r\n }\r\n\r\n function showDropdownSpinner(id) {\r\n const dropdown = dropdowns.filter(function(element) { return element.id == id; })[0];\r\n\r\n if (!!dropdown) {\r\n dropdown.showSpinner();\r\n }\r\n }\r\n\r\n function hideDropdownSpinner(id) {\r\n const dropdown = dropdowns.filter(function(element) { return element.id == id; })[0];\r\n\r\n if (!!dropdown) {\r\n dropdown.hideSpinner();\r\n }\r\n }\r\n\r\n initDateInputs();\r\n initConstrainedNumberInputs();\r\n initFilesInputs();\r\n initDropdowns();\r\n\r\n\r\n if (useDefaultSubmit == undefined || useDefaultSubmit === false) {\r\n const reCaptchaKeyInput = formElement.querySelector('[name=\"ReCaptchaKey\"]');\r\n let reCaptchaTokenInputElement = null;\r\n\r\n if (reCaptchaKeyInput) {\r\n reCaptchaTokenInputElement = document.createElement('input');\r\n reCaptchaTokenInputElement.setAttribute('type', 'hidden');\r\n reCaptchaTokenInputElement.setAttribute('name', 'ReCaptchaToken');\r\n formElement.insertBefore(reCaptchaTokenInputElement, submitCTAElements[0]);\r\n }\r\n\r\n formElement.addEventListener('submit', function (event) {\r\n event.preventDefault();\r\n\r\n if (formElement.classList.contains('form')) {\r\n formElement.classList.toggle('form--already-submitted');\r\n }\r\n\r\n if (reCaptchaKeyInput) {\r\n executeRecaptcha(\r\n reCaptchaKeyInput.value,\r\n function (token) {\r\n if (token.length) {\r\n reCaptchaTokenInputElement.setAttribute('value', token);\r\n if (params.submit) {\r\n params.submit(event);\r\n } else {\r\n showSubmitCTASpinner();\r\n formElement.submit();\r\n }\r\n }\r\n },\r\n function (message) {\r\n const errorAlertElement = document.createElement('p');\r\n errorAlertElement.classList.add('error-alert');\r\n errorAlertElement.innerHTML = message;\r\n formElement.insertBefore(errorAlertElement, submitCTAElements[0]);\r\n });\r\n } else if (params.submit) {\r\n params.submit(event);\r\n } else {\r\n showSubmitCTASpinner();\r\n formElement.submit();\r\n }\r\n });\r\n }\r\n\r\n function showSubmitCTASpinner() {\r\n for (let i = 0; i < submitCTAElements.length; i++) {\r\n const submitCTAElement = submitCTAElements[i];\r\n\r\n if (submitCTAElement.classList.contains('cta') && !submitCTAElement.classList.contains(loadingCtaModifier)) {\r\n submitCTAElement.classList.add(loadingCtaModifier);\r\n submitCTAElement.setAttribute('disabled', 'disabled');\r\n const loaderElement = document.createElement('span');\r\n loaderElement.classList.add('loader');\r\n submitCTAElement.append(loaderElement);\r\n }\r\n }\r\n }\r\n\r\n function hideSubmitCTASpinner() {\r\n for (let i = 0; i < submitCTAElements.length; i++) {\r\n const submitCTAElement = submitCTAElements[i];\r\n\r\n if (submitCTAElement.classList.contains('cta') && submitCTAElement.classList.contains(loadingCtaModifier)) {\r\n submitCTAElement.classList.remove(loadingCtaModifier);\r\n submitCTAElement.removeAttribute('disabled');\r\n const loaderElement = submitCTAElement.querySelector('.loader');\r\n submitCTAElement.removeChild(loaderElement);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n initConditionalElements: initConditionalElements,\r\n updateDropdownOptions: updateDropdownOptions,\r\n showDropdownSpinner: showDropdownSpinner,\r\n hideDropdownSpinner: hideDropdownSpinner,\r\n showSubmitCTASpinner: showSubmitCTASpinner,\r\n hideSubmitCTASpinner: hideSubmitCTASpinner\r\n }\r\n}\r\n","'use strict';\r\n\r\nexport function executeRecaptcha(reCaptchaKey, onSuccess, onFailed) {\r\n if (typeof grecaptcha === 'object' && reCaptchaKey !== '') {\r\n grecaptcha.ready(function () {\r\n grecaptcha.execute(reCaptchaKey, {\r\n action: 'form'\r\n }).then(function (token) {\r\n onSuccess(token);\r\n }).catch(error => onFailed(error.message));\r\n });\r\n }\r\n else\r\n {\r\n onFailed('Le script reCAPTCHA n’a pas pu être chargé.');\r\n }\r\n}\r\n","'use strict';\r\n\r\nimport { Form } from '@lf/mwuikit/src/scripts/objects/form';\r\n\r\n(function () {\r\n const formElement = document.getElementById('mini-scpi-simulator-form');\r\n\r\n if (formElement) {\r\n const form = Form({ element: formElement });\r\n\r\n const inputEvents = ['change', 'input'];\r\n const durationInputElement = formElement.querySelector('input[name=Duration]');\r\n const durationRangeElement = formElement.querySelector('input[name=DurationRange]');\r\n const investmentInputElement = formElement.querySelector('input[name=Investment]');\r\n investmentInputElement.type = \"text\";\r\n investmentInputElement.value = investmentInputElement.value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\r\n const investmentRangeElement = formElement.querySelector('input[name=InvestmentRange]');\r\n\r\n let investment = !!investmentInputElement ? investmentInputElement.value : 0;\r\n let duration = !!durationInputElement ? durationInputElement.value : 0;\r\n\r\n const dvmDataArray = JSON.parse(formElement.dataset.dvmValues);\r\n const moniwanOfferRate = formElement.dataset.moniwanOfferRate;\r\n\r\n const advantageAmountBinding = formElement.querySelector('[data-binding=\"advantage-amount\"]');\r\n const totalIncomeAmountBinding = formElement.querySelector('[data-binding=\"total-income-amount\"]');\r\n const durationBinding = formElement.querySelector('[data-binding=\"duration\"]');\r\n\r\n function calculateIncome(investment, duration) {\r\n let totalIncomeAmount = 0;\r\n let firstYearIncomeAmount = 0;\r\n\r\n let counter = 0;\r\n let yearCounter = new Date().getFullYear();\r\n let advantageAmount = investment * moniwanOfferRate;\r\n\r\n while (counter < duration) {\r\n const dvmData = dvmDataArray.filter(dvm => dvm.Year === yearCounter)[0];\r\n\r\n if (dvmData) {\r\n counter++;\r\n totalIncomeAmount += dvmData.Value / 100 * investment;\r\n\r\n if (counter == duration) {\r\n firstYearIncomeAmount = dvmData.Value / 100 * investment;\r\n }\r\n }\r\n\r\n yearCounter--;\r\n }\r\n\r\n advantageAmountBinding.innerHTML = advantageAmount.toLocaleString('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0, minimumFractionDigits: 0 });\r\n totalIncomeAmountBinding.innerHTML = totalIncomeAmount.toLocaleString('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 0, minimumFractionDigits: 0 });\r\n durationBinding.innerHTML = duration + (duration <= 1 ? ' an' : ' ans');\r\n }\r\n\r\n if (!!durationInputElement) {\r\n for (let i = 0; i < inputEvents.length; i++) {\r\n durationInputElement.addEventListener(inputEvents[i], function () {\r\n let newDuration = this.value;\r\n\r\n if (!!durationRangeElement) durationRangeElement.value = newDuration;\r\n\r\n if (newDuration !== duration) {\r\n duration = newDuration;\r\n calculateIncome(investment.toString().replace(/[\\s\\D]+/g, ''), duration);\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (!!durationRangeElement) {\r\n durationRangeElement.addEventListener('change', function () {\r\n const newDuration = parseFloat(this.value);\r\n\r\n if (!!durationInputElement) durationInputElement.value = newDuration;\r\n\r\n if (newDuration !== duration) {\r\n duration = newDuration;\r\n calculateIncome(investment.toString().replace(/[\\s\\D]+/g, ''), duration);\r\n }\r\n });\r\n }\r\n\r\n if (!!investmentInputElement) {\r\n for (let i = 0; i < inputEvents.length; i++) {\r\n investmentInputElement.addEventListener(inputEvents[i], function () {\r\n // Remove existing spaces and non-digit characters\r\n let newInvestment = this.value.replace(/[\\s\\D]+/g, '');\r\n // Add space as thousands separator\r\n const formattedValue = newInvestment.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ').split('').join('');\r\n\r\n if (!!investmentRangeElement) investmentRangeElement.value = newInvestment;\r\n\r\n if (newInvestment !== investment) {\r\n investment = newInvestment;\r\n calculateIncome(investment, duration);\r\n }\r\n this.value = formattedValue;\r\n });\r\n }\r\n }\r\n\r\n if (!!investmentRangeElement) {\r\n investmentRangeElement.addEventListener('change', function () {\r\n const newInvestment = parseFloat(this.value);\r\n const formattedValue = this.value.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ' ');\r\n if (!!investmentInputElement) investmentInputElement.value = formattedValue;\r\n\r\n if (newInvestment !== investment) {\r\n investment = newInvestment;\r\n calculateIncome(investment, duration);\r\n }\r\n });\r\n }\r\n }\r\n}());\r\n"],"names":["Math","trunc","x","isNaN","NaN","floor","ceil","HOOKS","defaults","_disable","allowInput","allowInvalidPreload","altFormat","altInput","altInputClass","animate","window","navigator","userAgent","indexOf","ariaDateFormat","autoFillDefaultTime","clickOpens","closeOnSelect","conjunction","dateFormat","defaultHour","defaultMinute","defaultSeconds","disable","disableMobile","enableSeconds","enableTime","errorHandler","err","console","warn","getWeek","givenDate","date","Date","getTime","setHours","setDate","getDate","getDay","week1","getFullYear","round","hourIncrement","ignoredFocusElements","inline","locale","minuteIncrement","mode","monthSelectorType","nextArrow","noCalendar","now","onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition","plugins","position","positionElement","undefined","prevArrow","shorthandCurrentMonth","showMonths","static","time_24hr","weekNumbers","wrap","english","weekdays","shorthand","longhand","months","daysInMonth","firstDayOfWeek","ordinal","nth","s","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","length","slice","bool","debounce","fn","wait","t","_this","this","args","arguments","clearTimeout","setTimeout","apply","arrayify","obj","Array","toggleClass","elem","className","classList","add","remove","createElement","tag","content","e","document","textContent","clearNode","node","firstChild","removeChild","findParent","condition","parentNode","createNumberInput","inputClassName","opts","wrapper","numInput","arrowUp","arrowDown","type","pattern","key","setAttribute","appendChild","getEventTarget","event","composedPath","target","error","doNothing","monthToStr","monthNumber","revFormat","D","F","dateObj","monthName","setMonth","G","hour","getHours","parseFloat","H","J","day","K","RegExp","test","M","shortMonth","S","seconds","setSeconds","U","_","unixSeconds","W","weekNum","weekNumber","parseInt","Y","year","setFullYear","Z","ISODate","d","h","i","minutes","setMinutes","j","l","m","month","n","u","unixMillSeconds","w","y","tokenRegex","formats","toISOString","options","getMonth","getSeconds","getMinutes","String","substring","createDateFormatter","_a","_b","config","_c","l10n","_d","isMobile","frmt","overrideLocale","formatDate","split","map","c","arr","join","createDateParser","givenFormat","timeless","customLocale","parsedDate","dateOrig","toFixed","format","datestr","trim","parseDate","matched","ops","matchIndex","regexStr","token","isBackSlash","escaped","match","exec","val","forEach","Error","compareDates","date1","date2","calculateSecondsSinceMidnight","hours","duration","getDefaultHours","minDate","minHour","minMinutes","minSeconds","maxDate","maxHr","maxMinutes","min","__assign","Object","assign","p","prototype","hasOwnProperty","call","__spreadArrays","il","r","k","a","jl","FlatpickrInstance","element","instanceConfig","self","flatpickr","defaultConfig","getClosestActiveElement","calendarContainer","getRootNode","activeElement","bindToInstance","bind","setCalendarWidth","requestAnimationFrame","style","visibility","display","daysContainer","daysWidth","days","offsetWidth","width","weekWrapper","removeProperty","updateTime","selectedDates","defaultDate","getMilliseconds","latestSelectedDateObj","preventDefault","isKeyDown","eventTarget","input","getAttribute","max","step","curValue","value","delta","which","newValue","isHourElem","hourElement","isMinuteElem","minuteElement","incrementNumInput","abs","timeWrapper","prevValue","_input","setHoursFromInputs","updateValue","_debouncedChange","secondElement","limitMinHours","minTime","minDateHasTime","limitMaxHours","maxTime","maxDateHasTime","minBound","maxBound","currentTime","result","secondsSinceMidnight","parseSeconds","setHoursFromDate","onYearInput","toString","changeYear","handler","ev","el","addEventListener","_handlers","push","removeEventListener","triggerChange","triggerEvent","jumpToDate","jumpDate","jumpTo","oldYear","currentYear","oldMonth","currentMonth","message","buildMonthSwitch","redraw","timeIncrement","contains","inputElem","createEvent","dispatchEvent","createDay","_dayNumber","dateIsEnabled","isEnabled","dayElement","$i","todayDateElem","tabIndex","isDateSelected","selectedDateElem","isDateInRange","insertAdjacentHTML","focusOnDayElem","targetNode","focus","onMouseOver","getFirstAvailableDay","startMonth","endMonth","children","startIndex","endIndex","focusOnDay","current","offset","dayFocused","isInView","body","startElem","givenMonth","loopDelta","numMonthDays","changeMonth","getNextAvailableDay","buildMonthDays","firstOfMonth","prevMonthDays","utils","getDaysInMonth","createDocumentFragment","isMultiMonth","prevMonthDayClass","nextMonthDayClass","dayNumber","dayIndex","dayNum","dayContainer","buildDays","frag","shouldBuildMonth","monthsDropdownContainer","innerHTML","selected","buildMonth","monthElement","container","monthNavFragment","selectedMonth","yearInput","tabindex","yearElement","getElementsByTagName","disabled","buildMonths","monthNav","prevMonthNav","yearElements","monthElements","nextMonthNav","buildWeekdays","weekdayContainer","updateWeekdays","splice","isOffset","_hidePrevMonthArrow","_hideNextMonthArrow","updateNavigationCurrentMonth","isCalendarElem","documentClick","isOpen","eventTarget_1","isCalendarElement","lostFocus","path","relatedTarget","isIgnored","some","timeContainer","close","clear","newYear","newYearNum","isNewYear","dateToCheck","enable","array","parsed","from","to","onBlur","isInput","valueChanged","trimEnd","getDateStr","allowKeydown","allowInlineKeydown","keyCode","blur","open","isTimeObj","focusAndClose","selectDate","delta_1","ctrlKey","stopPropagation","currentYearElement","elems","concat","pluginElements","filter","shiftKey","charAt","toLowerCase","cellClass","hoverDate","firstElementChild","initialDate","rangeStartDate","rangeEndDate","containsDisabled","minRange","maxRange","rContainer","querySelectorAll","dayElem","ts","ts1","ts2","timestamp","outOfRange","onResize","positionCalendar","minMaxDateSetter","inverseDateObj","removeAttribute","getInputElem","querySelector","setupLocale","l10ns","default","JSON","parse","stringify","dataset","customPositionElement","_positionElement","calendarHeight","reduce","acc","child","offsetHeight","calendarWidth","configPos","configPosVertical","configPosHorizontal","inputBounds","getBoundingClientRect","distanceFromBottom","innerHeight","bottom","showOnTop","top","pageYOffset","left","pageXOffset","isCenter","isRight","right","rightMost","centerMost","doc","editableSheet","styleSheets","sheet","cssRules","head","getDocumentStyleSheet","bodyWidth","centerLeft","centerIndex","centerStyle","insertRule","centerBefore","msMaxTouchPoints","selectedDate","shouldChangeMonth","selectedIndex","sort","b","single","range","loadedPlugins","_bind","_setHoursFromDate","_positionCalendar","triggerChangeEvent","toInitial","mobileInput","_initialDate","_createElement","destroy","lastChild","insertBefore","_type","click","wasOpen","select","set","option","CALLBACKS","setSelectedDate","toggle","updatePositionElement","inputDate","dates","parseDateRules","rule","data","hooks","name","initEvent","specificFormat","dObj","mobileFormatStr","onMonthNavClick","isPrevMonth","isNextMonth","boolOpts","userConfig","defineProperty","get","_enable","timeMode","defaultDateFormat","defaultAltFormat","_minDate","_maxDate","minMaxTimeSetter","_minTime","_maxTime","hook","pluginConf","parseConfig","nodeName","placeholder","required","nextSibling","setupInputs","preloadedDate","setupDates","yr","fragment","__hidePrevMonthArrow","__hideNextMonthArrow","innerContainer","buildWeeks","separator","hourInput","minuteInput","military2ampm","secondInput","title","buildTime","customAppend","appendTo","nodeType","build","evt","inputType","defaultValue","setupMobile","debouncedResize","ontouchstart","capture","selText","bindEvents","isSafari","init","_flatpickr","nodeList","nodes","HTMLElement","instances","HTMLCollection","NodeList","selector","Node","en","localize","setDefaults","jQuery","fp_incr","_i","TypeError","_loop_1","source","keys","args_1","exports","fp","French","fr","factory","moment","monthsStrictRegex","monthsShortStrictRegex","monthsRegex","monthsParse","defineLocale","monthsShort","monthsShortRegex","longMonthsParse","shortMonthsParse","weekdaysShort","weekdaysMin","weekdaysParseExact","longDateFormat","LT","LTS","L","LL","LLL","LLLL","calendar","sameDay","nextDay","nextWeek","lastDay","lastWeek","sameElse","relativeTime","future","past","ss","mm","hh","dd","ww","MM","yy","dayOfMonthOrdinalParse","period","week","dow","doy","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","code","resolve","module","hookCallback","setHookCallback","callback","isArray","isObject","hasOwnProp","isObjectEmpty","getOwnPropertyNames","isUndefined","isNumber","isDate","res","arrLen","extend","valueOf","createUTC","strict","createLocalOrUTC","utc","defaultParsingFlags","empty","unusedTokens","unusedInput","overflow","charsLeftOver","nullInput","invalidEra","invalidMonth","invalidFormat","userInvalidated","iso","parsedDateParts","era","meridiem","rfc2822","weekdayMismatch","getParsingFlags","_pf","isValid","flags","parsedParts","isNowValid","invalidWeekday","_strict","bigHour","isFrozen","_isValid","createInvalid","fun","len","momentProperties","updateInProgress","copyConfig","prop","momentPropertiesLen","_isAMomentObject","_f","_l","_tzm","_isUTC","_offset","_locale","Moment","updateOffset","isMoment","msg","suppressDeprecationWarnings","deprecate","firstTime","deprecationHandler","arg","argLen","stack","deprecations","deprecateSimple","isFunction","Function","_config","_dayOfMonthOrdinalParseLenient","_dayOfMonthOrdinalParse","_ordinalParse","mergeConfigs","parentConfig","childConfig","Locale","defaultCalendar","mom","output","_calendar","zeroFill","targetLength","forceSign","absNumber","zerosToFill","pow","substr","formattingTokens","localFormattingTokens","formatFunctions","formatTokenFunctions","addFormatToken","padded","func","localeData","removeFormattingTokens","replace","makeFormatFunction","formatMoment","expandFormat","invalidDate","replaceLongDateFormatTokens","lastIndex","defaultLongDateFormat","_longDateFormat","formatUpper","toUpperCase","tok","defaultInvalidDate","_invalidDate","defaultOrdinal","defaultDayOfMonthOrdinalParse","_ordinal","defaultRelativeTime","withoutSuffix","string","isFuture","_relativeTime","pastFuture","diff","aliases","weekday","E","isoweekdays","isoweekday","DDD","dayofyears","dayofyear","ms","milliseconds","millisecond","minute","Q","quarters","quarter","second","gg","weekyears","weekyear","GG","isoweekyears","isoweekyear","weeks","isoweeks","isoweek","years","normalizeUnits","units","normalizeObjectUnits","inputObject","normalizedProp","normalizedInput","priorities","isoWeekday","dayOfYear","weekYear","isoWeekYear","isoWeek","getPrioritizedUnits","unitsObj","unit","priority","regexes","match1","match2","match3","match4","match6","match1to2","match3to4","match5to6","match1to3","match1to4","match1to6","matchUnsigned","matchSigned","matchOffset","matchShortOffset","matchTimestamp","matchWord","match1to2NoLeadingZero","match1to2HasZero","addRegexToken","regex","strictRegex","isStrict","getParseRegexForToken","unescapeFormat","regexEscape","p1","p2","p3","p4","absFloor","toInt","argumentForCoercion","coercedNumber","isFinite","tokens","addParseToken","tokenLen","addWeekParseToken","_w","addTimeToArrayFromToken","isLeapYear","YEAR","MONTH","DATE","HOUR","MINUTE","SECOND","MILLISECOND","WEEK","WEEKDAY","daysInYear","parseTwoDigitYear","getSetYear","makeGetSet","getIsLeapYear","keepTime","set$1","isUTC","getUTCMilliseconds","getUTCSeconds","getUTCMinutes","getUTCHours","getUTCDate","getUTCDay","getUTCMonth","getUTCFullYear","setUTCMilliseconds","setMilliseconds","setUTCSeconds","setUTCMinutes","setUTCHours","setUTCDate","setUTCFullYear","stringGet","stringSet","prioritized","prioritizedLen","mod","modMonth","defaultLocaleMonths","defaultLocaleMonthsShort","MONTHS_IN_FORMAT","defaultMonthsShortRegex","defaultMonthsRegex","localeMonths","_months","isFormat","localeMonthsShort","_monthsShort","handleStrictParse","ii","llc","toLocaleLowerCase","_monthsParse","_longMonthsParse","_shortMonthsParse","localeMonthsParse","_monthsParseExact","setUTCMonth","getSetMonth","computeMonthsParse","_monthsShortStrictRegex","_monthsShortRegex","_monthsStrictRegex","_monthsRegex","cmpLenRev","shortP","longP","shortPieces","longPieces","mixedPieces","createDate","createUTCDate","UTC","firstWeekOffset","fwd","dayOfYearFromWeeks","resYear","resDayOfYear","weekOfYear","resWeek","weekOffset","weeksInYear","weekOffsetNext","localeWeek","_week","defaultLocaleWeek","localeFirstDayOfWeek","localeFirstDayOfYear","getSetWeek","getSetISOWeek","parseWeekday","weekdaysParse","parseIsoWeekday","shiftWeekdays","ws","weekdaysMinRegex","weekdaysShortRegex","weekdaysRegex","defaultLocaleWeekdays","defaultLocaleWeekdaysShort","defaultLocaleWeekdaysMin","defaultWeekdaysRegex","defaultWeekdaysShortRegex","defaultWeekdaysMinRegex","localeWeekdays","_weekdays","localeWeekdaysShort","_weekdaysShort","localeWeekdaysMin","_weekdaysMin","handleStrictParse$1","weekdayName","_weekdaysParse","_shortWeekdaysParse","_minWeekdaysParse","localeWeekdaysParse","_weekdaysParseExact","_fullWeekdaysParse","getSetDayOfWeek","getSetLocaleDayOfWeek","getSetISODayOfWeek","computeWeekdaysParse","_weekdaysStrictRegex","_weekdaysRegex","_weekdaysShortStrictRegex","_weekdaysShortRegex","_weekdaysMinStrictRegex","_weekdaysMinRegex","minp","shortp","longp","minPieces","hFormat","kFormat","lowercase","matchMeridiem","_meridiemParse","localeIsPM","kInput","_isPm","isPM","_meridiem","pos","pos1","pos2","defaultLocaleMeridiemParse","getSetHour","localeMeridiem","isLower","globalLocale","baseConfig","meridiemParse","locales","localeFamilies","commonPrefix","arr1","arr2","minl","normalizeLocale","chooseLocale","names","next","loadLocale","isLocaleNameSane","oldLocale","_abbr","getSetGlobalLocale","values","getLocale","abbr","parentLocale","updateLocale","tmpLocale","listLocales","checkOverflow","_overflowDayOfYear","_overflowWeeks","_overflowWeekday","extendedIsoRegex","basicIsoRegex","tzRegex","isoDates","isoTimes","aspNetJsonRegex","obsOffsets","UT","GMT","EDT","EST","CDT","CST","MDT","MST","PDT","PST","configFromISO","allowTime","timeFormat","tzFormat","isoDatesLen","isoTimesLen","configFromStringAndFormat","extractFromRFC2822Strings","yearStr","monthStr","dayStr","hourStr","minuteStr","secondStr","untruncateYear","preprocessRFC2822","checkWeekday","weekdayStr","parsedInput","calculateOffset","obsOffset","militaryOffset","numOffset","hm","configFromRFC2822","parsedArray","configFromString","createFromInputFallback","currentDateArray","nowValue","_useUTC","configFromArray","currentDate","expectedWeekday","yearToUse","dayOfYearFromWeekInfo","_dayOfYear","_nextDay","temp","weekdayOverflow","curWeek","createLocal","ISO_8601","RFC_2822","skipped","stringLength","totalParsedInputLength","meridiemFixWrap","erasConvertYear","isPm","meridiemHour","configFromStringAndArray","tempConfig","bestMoment","scoreToBeat","currentScore","validFormatFound","bestFormatIsValid","configfLen","score","configFromObject","dayOrDate","createFromConfig","prepareConfig","preparse","configFromInput","prototypeMin","other","prototypeMax","pickBy","moments","ordering","isDurationValid","unitHasDecimal","orderLen","isValid$1","createInvalid$1","createDuration","Duration","_milliseconds","_days","_data","_bubble","isDuration","absRound","compareArrays","array1","array2","dontConvert","lengthDiff","diffs","utcOffset","sign","offsetFromString","chunkOffset","matcher","parts","matches","cloneWithOffset","model","clone","setTime","local","getDateOffset","getTimezoneOffset","getSetOffset","keepLocalTime","keepMinutes","localAdjust","_changeInProgress","addSubtract","getSetZone","setOffsetToUTC","setOffsetToLocal","subtract","setOffsetToParsedOffset","tZone","hasAlignedHourOffset","isDaylightSavingTime","isDaylightSavingTimeShifted","_isDSTShifted","toArray","isLocal","isUtcOffset","isUtc","aspNetRegex","isoRegex","ret","diffRes","parseIso","momentsDifference","inp","positiveMomentsDifference","base","isAfter","isBefore","createAdder","direction","tmp","isAdding","invalid","isString","isMomentInput","isNumberOrStringArray","isMomentInputObject","property","objectTest","propertyTest","properties","propertyLen","arrayTest","dataTypeTest","item","isCalendarSpec","getCalendarFormat","myMoment","calendar$1","time","sod","startOf","calendarFormat","localInput","endOf","isBetween","inclusivity","localFrom","localTo","isSame","inputMs","isSameOrAfter","isSameOrBefore","asFloat","that","zoneDelta","monthDiff","wholeMonthDiff","anchor","keepOffset","toDate","inspect","prefix","datetime","suffix","zone","inputString","defaultFormatUtc","defaultFormat","postformat","humanize","fromNow","toNow","newLocaleData","lang","MS_PER_SECOND","MS_PER_MINUTE","MS_PER_HOUR","MS_PER_400_YEARS","mod$1","dividend","divisor","localStartOfDate","utcStartOfDate","startOfDate","unix","toObject","toJSON","isValid$2","parsingFlags","invalidAt","creationData","localeEras","eras","_eras","since","until","localeErasParse","eraName","narrow","localeErasConvertYear","dir","getEraName","getEraNarrow","getEraAbbr","getEraYear","erasNameRegex","computeErasParse","_erasNameRegex","_erasRegex","erasAbbrRegex","_erasAbbrRegex","erasNarrowRegex","_erasNarrowRegex","matchEraAbbr","matchEraName","matchEraNarrow","matchEraYearOrdinal","_eraYearOrdinalRegex","erasName","erasAbbr","erasNarrow","abbrPieces","namePieces","narrowPieces","addWeekYearFormatToken","getter","getSetWeekYear","getSetWeekYearHelper","getSetISOWeekYear","getISOWeeksInYear","getISOWeeksInISOWeekYear","getWeeksInYear","weekInfo","getWeeksInWeekYear","weeksTarget","setWeekAll","dayOfYearData","getSetQuarter","erasParse","eraYearOrdinalParse","getSetDayOfMonth","getSetDayOfYear","getSetMinute","getSetMillisecond","getSetSecond","parseMs","getZoneAbbr","getZoneName","proto","createUnix","createInZone","parseZone","preParsePostFormat","Symbol","for","eraNarrow","eraAbbr","eraYear","isoWeeks","weeksInWeekYear","isoWeeksInYear","isoWeeksInISOWeekYear","isDST","zoneAbbr","zoneName","isDSTShifted","proto$1","get$1","index","field","setter","listMonthsImpl","out","listWeekdaysImpl","localeSorted","shift","listMonths","listMonthsShort","listWeekdays","listWeekdaysShort","listWeekdaysMin","firstDayOfYear","langData","mathAbs","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","thresholds","substituteTimeAgo","relativeTime$1","posNegDuration","getSetRelativeTimeRounding","roundingFunction","getSetRelativeTimeThreshold","threshold","limit","argWithSuffix","argThresholds","withSuffix","th","abs$1","toISOString$1","totalSign","ymSign","daysSign","hmsSign","total","proto$2","toIsoString","version","relativeTimeRounding","relativeTimeThreshold","HTML5_FMT","DATETIME_LOCAL","DATETIME_LOCAL_SECONDS","DATETIME_LOCAL_MS","TIME","TIME_SECONDS","TIME_MS","isCallable","tryToString","$TypeError","argument","unicode","$String","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","fromIndex","O","includes","uncurryThis","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","specificCreate","boundFunction","create","every","find","findIndex","filterReject","fails","wellKnownSymbol","V8_VERSION","SPECIES","METHOD_NAME","constructor","foo","Boolean","method","isConstructor","$Array","originalArray","C","arraySpeciesConstructor","stringSlice","it","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","$Object","CORRECT_ARGUMENTS","tryGet","callee","hasOwn","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","exceptions","f","getOwnPropertyDescriptor","DESCRIPTORS","createPropertyDescriptor","object","bitmap","enumerable","configurable","writable","makeBuiltIn","defineGlobalProperty","simple","global","unsafe","nonConfigurable","nonWritable","globalThis","EXISTS","process","Deno","versions","v8","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","sham","regexpExec","RegExpPrototype","KEY","FORCED","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","re","nativeRegExpMethod","methods","nativeMethod","regexp","str","arg2","forceStringMethod","$exec","done","NATIVE_BIND","FunctionPrototype","Reflect","aCallable","getDescriptor","PROPER","CONFIGURABLE","uncurryThisWithBind","namespace","isNullOrUndefined","V","P","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","captures","namedCaptures","replacement","tailPos","symbols","ch","check","g","getBuiltIn","classof","propertyIsEnumerable","store","functionToString","inspectSource","has","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","state","metadata","facade","STATE","enforce","getterFor","documentAll","all","noop","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","called","feature","detection","normalize","POLYFILL","NATIVE","isPrototypeOf","USE_SYMBOL_AS_UID","$Symbol","toLength","CONFIGURABLE_FUNCTION_NAME","InternalStateModule","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","arity","activeXDocument","anObject","definePropertiesModule","enumBugKeys","html","documentCreateElement","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","NullProtoObjectViaActiveX","write","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","domain","src","contentWindow","Properties","V8_PROTOTYPE_DEFINE_BUG","objectKeys","defineProperties","props","IE8_DOM_DEFINE","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","propertyIsEnumerableModule","internalObjectKeys","getOwnPropertySymbols","$propertyIsEnumerable","NASHORN_BUG","pref","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","R","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","group","raw","groups","sticky","charsAdded","strCopy","multiline","hasIndices","ignoreCase","dotAll","unicodeSets","regExpFlags","$RegExp","MISSED_STICKY","uid","IS_PURE","SHARED","copyright","license","toIntegerOrInfinity","requireObjectCoercible","charCodeAt","CONVERT_TO_STRING","first","size","codeAt","symbol","integer","isSymbol","getMethod","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","random","NATIVE_SYMBOL","iterator","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","$","$filter","arrayMethodHasSpeciesSupport","arrayMethodIsStrict","nativeJoin","nativeKeys","PROPER_FUNCTION_NAME","$toString","getRegExpFlags","TO_STRING","nativeToString","NOT_GENERIC","INCORRECT_NAME","fixRegExpWellKnownSymbolLogic","advanceStringIndex","getSubstitution","regExpExec","REPLACE","stringIndexOf","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","maybeCallNative","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","rx","functionalReplace","fullUnicode","results","accumulatedResult","nextSourcePosition","replacerArgs","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","definition","nmd","paths","_newArrowCheck","ConditionallyDisplayedElement","displayIf","triggerSupportAttributeName","triggerSupportElement","observerConfig","attributes","childList","characterData","MutationObserver","mutations","attributeName","observe","KEYCODE","Dropdown","params","dropdownElement","ctaElement","listboxElement","inputElement","dropdownId","selectOptions","selectedOptionId","ctaPlaceholderLabel","dropdownInvalidModifier","hiddenListboxModifier","focusedListItemModifier","activeCtaModifier","withSpinnerCtaModifier","emptyOptionsListCtaModifier","isDropdownActive","selectElement","cloneNode","dropdownClass","labelId","selectedOptionElement","innerText","selectPlaceholderOptionElement","selectOptionElements","selectOptionElement","itemElement","append","hasAttribute","validity","valid","nextElementSibling","resetSelection","showListbox","hideListbox","unSelectOption","selectOption","getElementById","scrollHeight","clientHeight","listboxScrollBottom","scrollTop","elementBottom","offsetTop","keyDownInteractions","previousOptionElement","previousElementSibling","selectPreviousOption","nextOptionElement","selectNextOption","onEnter","updateOptions","hasChildNodes","label","showSpinner","hideSpinner","getSelectedOptionValue","isAdultPerson","dateOfBirthStr","today","dateOfBirth","age","additionalMonths","Form","formElement","useDefaultSubmit","submitCTAElements","loadingCtaModifier","dropdowns","ConstrainedNumberInputs","inputElements","todayFullYear","defaultMaxDate","initDateInputs","initConstrainedNumberInputs","nextFilesListElement","nextElement","files","fileSizeLimit","initFilesInputs","dropdownElements","initDropdowns","reCaptchaKeyInput","reCaptchaTokenInputElement","reCaptchaKey","onSuccess","onFailed","submit","showSubmitCTASpinner","errorAlertElement","grecaptcha","ready","execute","action","then","catch","submitCTAElement","loaderElement","initConditionalElements","conditionallyDisplayedElements","updateDropdownOptions","dropdown","showDropdownSpinner","hideDropdownSpinner","hideSubmitCTASpinner","calculateIncome","investment","totalIncomeAmount","counter","yearCounter","advantageAmount","moniwanOfferRate","dvmData","dvmDataArray","dvm","Year","Value","advantageAmountBinding","toLocaleString","currency","maximumFractionDigits","minimumFractionDigits","totalIncomeAmountBinding","durationBinding","inputEvents","durationInputElement","durationRangeElement","investmentInputElement","investmentRangeElement","dvmValues","newDuration","newInvestment","formattedValue"],"sourceRoot":""}