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 defineProperty = require('../internals/object-define-property').f;\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (target, TAG, STATIC) {\n if (target && !STATIC) target = target.prototype;\n if (target && !hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\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';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $RangeError = RangeError;\n\n// `String.prototype.repeat` method implementation\n// https://tc39.es/ecma262/#sec-string.prototype.repeat\nmodule.exports = function repeat(count) {\n var str = toString(requireObjectCoercible(this));\n var result = '';\n var n = toIntegerOrInfinity(count);\n if (n < 0 || n === Infinity) throw new $RangeError('Wrong number of repetitions');\n for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;\n return result;\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 call = require('../internals/function-call');\nvar getBuiltIn = require('../internals/get-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function () {\n var Symbol = getBuiltIn('Symbol');\n var SymbolPrototype = Symbol && Symbol.prototype;\n var valueOf = SymbolPrototype && SymbolPrototype.valueOf;\n var TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n if (SymbolPrototype && !SymbolPrototype[TO_PRIMITIVE]) {\n // `Symbol.prototype[@@toPrimitive]` method\n // https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\n // eslint-disable-next-line no-unused-vars -- required for .length\n defineBuiltIn(SymbolPrototype, TO_PRIMITIVE, function (hint) {\n return call(valueOf, this);\n }, { arity: 1 });\n }\n};\n","'use strict';\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\n/* eslint-disable es/no-symbol -- safe */\nmodule.exports = NATIVE_SYMBOL && !!Symbol['for'] && !!Symbol.keyFor;\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\n// `thisNumberValue` abstract operation\n// https://tc39.es/ecma262/#sec-thisnumbervalue\nmodule.exports = uncurryThis(1.0.valueOf);\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 path = require('../internals/path');\nvar hasOwn = require('../internals/has-own-property');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!hasOwn(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\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 from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\n/* eslint-disable es/no-array-prototype-indexof -- required for testing */\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar $indexOf = require('../internals/array-includes').indexOf;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeIndexOf = uncurryThis([].indexOf);\n\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / nativeIndexOf([1], 1, -0) < 0;\nvar FORCED = NEGATIVE_ZERO || !arrayMethodIsStrict('indexOf');\n\n// `Array.prototype.indexOf` method\n// https://tc39.es/ecma262/#sec-array.prototype.indexof\n$({ target: 'Array', proto: true, forced: FORCED }, {\n indexOf: function indexOf(searchElement /* , fromIndex = 0 */) {\n var fromIndex = arguments.length > 1 ? arguments[1] : undefined;\n return NEGATIVE_ZERO\n // convert -0 to +0\n ? nativeIndexOf(this, searchElement, fromIndex) || 0\n : $indexOf(this, searchElement, fromIndex);\n }\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = null;\n return createIterResultObject(undefined, true);\n }\n switch (state.kind) {\n case 'keys': return createIterResultObject(index, false);\n case 'values': return createIterResultObject(target[index], false);\n } return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\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 $map = require('../internals/array-iteration').map;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map');\n\n// `Array.prototype.map` method\n// https://tc39.es/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n map: function map(callbackfn /* , thisArg */) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar nativeSlice = require('../internals/array-slice');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = lengthOfArrayLike(O);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (isConstructor(Constructor) && (Constructor === $Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === $Array || Constructor === undefined) {\n return nativeSlice(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? $Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar FUNCTION_NAME_EXISTS = require('../internals/function-name').EXISTS;\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\n\nvar FunctionPrototype = Function.prototype;\nvar functionToString = uncurryThis(FunctionPrototype.toString);\nvar nameRE = /function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/;\nvar regExpExec = uncurryThis(nameRE.exec);\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !FUNCTION_NAME_EXISTS) {\n defineBuiltInAccessor(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return regExpExec(nameRE, functionToString(this))[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar apply = require('../internals/function-apply');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isSymbol = require('../internals/is-symbol');\nvar arraySlice = require('../internals/array-slice');\nvar getReplacerFunction = require('../internals/get-json-replacer-function');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nvar $String = String;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar exec = uncurryThis(/./.exec);\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar replace = uncurryThis(''.replace);\nvar numberToString = uncurryThis(1.0.toString);\n\nvar tester = /[\\uD800-\\uDFFF]/g;\nvar low = /^[\\uD800-\\uDBFF]$/;\nvar hi = /^[\\uDC00-\\uDFFF]$/;\n\nvar WRONG_SYMBOLS_CONVERSION = !NATIVE_SYMBOL || fails(function () {\n var symbol = getBuiltIn('Symbol')('stringify detection');\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) !== '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) !== '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) !== '{}';\n});\n\n// https://github.com/tc39/proposal-well-formed-stringify\nvar ILL_FORMED_UNICODE = fails(function () {\n return $stringify('\\uDF06\\uD834') !== '\"\\\\udf06\\\\ud834\"'\n || $stringify('\\uDEAD') !== '\"\\\\udead\"';\n});\n\nvar stringifyWithSymbolsFix = function (it, replacer) {\n var args = arraySlice(arguments);\n var $replacer = getReplacerFunction(replacer);\n if (!isCallable($replacer) && (it === undefined || isSymbol(it))) return; // IE8 returns string on undefined\n args[1] = function (key, value) {\n // some old implementations (like WebKit) could pass numbers as keys\n if (isCallable($replacer)) value = call($replacer, this, $String(key), value);\n if (!isSymbol(value)) return value;\n };\n return apply($stringify, null, args);\n};\n\nvar fixIllFormed = function (match, offset, string) {\n var prev = charAt(string, offset - 1);\n var next = charAt(string, offset + 1);\n if ((exec(low, match) && !exec(hi, next)) || (exec(hi, match) && !exec(low, prev))) {\n return '\\\\u' + numberToString(charCodeAt(match, 0), 16);\n } return match;\n};\n\nif ($stringify) {\n // `JSON.stringify` method\n // https://tc39.es/ecma262/#sec-json.stringify\n $({ target: 'JSON', stat: true, arity: 3, forced: WRONG_SYMBOLS_CONVERSION || ILL_FORMED_UNICODE }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = arraySlice(arguments);\n var result = apply(WRONG_SYMBOLS_CONVERSION ? stringifyWithSymbolsFix : $stringify, null, args);\n return ILL_FORMED_UNICODE && typeof result == 'string' ? replace(result, tester, fixIllFormed) : result;\n }\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar trunc = require('../internals/math-trunc');\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n$({ target: 'Math', stat: true }, {\n trunc: trunc\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar thisNumberValue = require('../internals/this-number-value');\nvar $repeat = require('../internals/string-repeat');\nvar fails = require('../internals/fails');\n\nvar $RangeError = RangeError;\nvar $String = String;\nvar floor = Math.floor;\nvar repeat = uncurryThis($repeat);\nvar stringSlice = uncurryThis(''.slice);\nvar nativeToFixed = uncurryThis(1.0.toFixed);\n\nvar pow = function (x, n, acc) {\n return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);\n};\n\nvar log = function (x) {\n var n = 0;\n var x2 = x;\n while (x2 >= 4096) {\n n += 12;\n x2 /= 4096;\n }\n while (x2 >= 2) {\n n += 1;\n x2 /= 2;\n } return n;\n};\n\nvar multiply = function (data, n, c) {\n var index = -1;\n var c2 = c;\n while (++index < 6) {\n c2 += n * data[index];\n data[index] = c2 % 1e7;\n c2 = floor(c2 / 1e7);\n }\n};\n\nvar divide = function (data, n) {\n var index = 6;\n var c = 0;\n while (--index >= 0) {\n c += data[index];\n data[index] = floor(c / n);\n c = (c % n) * 1e7;\n }\n};\n\nvar dataToString = function (data) {\n var index = 6;\n var s = '';\n while (--index >= 0) {\n if (s !== '' || index === 0 || data[index] !== 0) {\n var t = $String(data[index]);\n s = s === '' ? t : s + repeat('0', 7 - t.length) + t;\n }\n } return s;\n};\n\nvar FORCED = fails(function () {\n return nativeToFixed(0.00008, 3) !== '0.000' ||\n nativeToFixed(0.9, 0) !== '1' ||\n nativeToFixed(1.255, 2) !== '1.25' ||\n nativeToFixed(1000000000000000128.0, 0) !== '1000000000000000128';\n}) || !fails(function () {\n // V8 ~ Android 4.3-\n nativeToFixed({});\n});\n\n// `Number.prototype.toFixed` method\n// https://tc39.es/ecma262/#sec-number.prototype.tofixed\n$({ target: 'Number', proto: true, forced: FORCED }, {\n toFixed: function toFixed(fractionDigits) {\n var number = thisNumberValue(this);\n var fractDigits = toIntegerOrInfinity(fractionDigits);\n var data = [0, 0, 0, 0, 0, 0];\n var sign = '';\n var result = '0';\n var e, z, j, k;\n\n // TODO: ES2018 increased the maximum number of fraction digits to 100, need to improve the implementation\n if (fractDigits < 0 || fractDigits > 20) throw new $RangeError('Incorrect fraction digits');\n // eslint-disable-next-line no-self-compare -- NaN check\n if (number !== number) return 'NaN';\n if (number <= -1e21 || number >= 1e21) return $String(number);\n if (number < 0) {\n sign = '-';\n number = -number;\n }\n if (number > 1e-21) {\n e = log(number * pow(2, 69, 1)) - 69;\n z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);\n z *= 0x10000000000000;\n e = 52 - e;\n if (e > 0) {\n multiply(data, 0, z);\n j = fractDigits;\n while (j >= 7) {\n multiply(data, 1e7, 0);\n j -= 7;\n }\n multiply(data, pow(10, j, 1), 0);\n j = e - 1;\n while (j >= 23) {\n divide(data, 1 << 23);\n j -= 23;\n }\n divide(data, 1 << j);\n multiply(data, 1, 1);\n divide(data, 2);\n result = dataToString(data);\n } else {\n multiply(data, 0, z);\n multiply(data, 1 << -e, 0);\n result = dataToString(data) + repeat('0', fractDigits);\n }\n }\n if (fractDigits > 0) {\n k = result.length;\n result = sign + (k <= fractDigits\n ? '0.' + repeat('0', fractDigits - k) + result\n : stringSlice(result, 0, k - fractDigits) + '.' + stringSlice(result, k - fractDigits));\n } else {\n result = sign + result;\n } return result;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar toObject = require('../internals/to-object');\n\n// V8 ~ Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FORCED = !NATIVE_SYMBOL || fails(function () { getOwnPropertySymbolsModule.f(1); });\n\n// `Object.getOwnPropertySymbols` method\n// https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n$({ target: 'Object', stat: true, forced: FORCED }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n var $getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return $getOwnPropertySymbols ? $getOwnPropertySymbols(toObject(it)) : [];\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 charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar globalThis = require('../internals/global-this');\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\nvar defineSymbolToPrimitive = require('../internals/symbol-define-to-primitive');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\n\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\n\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = globalThis.Symbol;\nvar SymbolPrototype = $Symbol && $Symbol[PROTOTYPE];\nvar RangeError = globalThis.RangeError;\nvar TypeError = globalThis.TypeError;\nvar QObject = globalThis.QObject;\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar push = uncurryThis([].push);\n\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\n\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar fallbackDefineProperty = function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n};\n\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a !== 7;\n}) ? fallbackDefineProperty : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate(SymbolPrototype);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (hasOwn(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!hasOwn(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, nativeObjectCreate(null)));\n O[HIDDEN][key] = true;\n } else {\n if (hasOwn(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || call($propertyIsEnumerable, properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = call(nativePropertyIsEnumerable, this, P);\n if (this === ObjectPrototype && hasOwn(AllSymbols, P) && !hasOwn(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !hasOwn(this, P) || !hasOwn(AllSymbols, P) || hasOwn(this, HIDDEN) && this[HIDDEN][P]\n ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && hasOwn(AllSymbols, key) && !hasOwn(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && hasOwn(AllSymbols, key) && !(hasOwn(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!hasOwn(AllSymbols, key) && !hasOwn(hiddenKeys, key)) push(result, key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function (O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (hasOwn(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || hasOwn(ObjectPrototype, key))) {\n push(result, AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (isPrototypeOf(SymbolPrototype, this)) throw new TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n var $this = this === undefined ? globalThis : this;\n if ($this === ObjectPrototype) call(setter, ObjectPrototypeSymbols, value);\n if (hasOwn($this, HIDDEN) && hasOwn($this[HIDDEN], tag)) $this[HIDDEN][tag] = false;\n var descriptor = createPropertyDescriptor(1, value);\n try {\n setSymbolDescriptor($this, tag, descriptor);\n } catch (error) {\n if (!(error instanceof RangeError)) throw error;\n fallbackDefineProperty($this, tag, descriptor);\n }\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n SymbolPrototype = $Symbol[PROTOTYPE];\n\n defineBuiltIn(SymbolPrototype, 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n defineBuiltIn($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n definePropertiesModule.f = $defineProperties;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n defineBuiltInAccessor(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n defineBuiltIn(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames\n});\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\ndefineSymbolToPrimitive();\n\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar globalThis = require('../internals/global-this');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar toString = require('../internals/to-string');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = globalThis.Symbol;\nvar SymbolPrototype = NativeSymbol && NativeSymbol.prototype;\n\nif (DESCRIPTORS && isCallable(NativeSymbol) && (!('description' in SymbolPrototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : toString(arguments[0]);\n var result = isPrototypeOf(SymbolPrototype, this)\n // eslint-disable-next-line sonarjs/inconsistent-function-call -- ok\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n SymbolWrapper.prototype = SymbolPrototype;\n SymbolPrototype.constructor = SymbolWrapper;\n\n var NATIVE_SYMBOL = String(NativeSymbol('description detection')) === 'Symbol(description detection)';\n var thisSymbolValue = uncurryThis(SymbolPrototype.valueOf);\n var symbolDescriptiveString = uncurryThis(SymbolPrototype.toString);\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n var replace = uncurryThis(''.replace);\n var stringSlice = uncurryThis(''.slice);\n\n defineBuiltInAccessor(SymbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = thisSymbolValue(this);\n if (hasOwn(EmptyStringDescriptionStore, symbol)) return '';\n var string = symbolDescriptiveString(symbol);\n var desc = NATIVE_SYMBOL ? stringSlice(string, 7, -1) : replace(string, regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, constructor: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.for` method\n// https://tc39.es/ecma262/#sec-symbol.for\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n 'for': function (key) {\n var string = toString(key);\n if (hasOwn(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = getBuiltIn('Symbol')(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n }\n});\n","'use strict';\nvar defineWellKnownSymbol = require('../internals/well-known-symbol-define');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.symbol.constructor');\nrequire('../modules/es.symbol.for');\nrequire('../modules/es.symbol.key-for');\nrequire('../modules/es.json.stringify');\nrequire('../modules/es.object.get-own-property-symbols');\n","'use strict';\nvar $ = require('../internals/export');\nvar hasOwn = require('../internals/has-own-property');\nvar isSymbol = require('../internals/is-symbol');\nvar tryToString = require('../internals/try-to-string');\nvar shared = require('../internals/shared');\nvar NATIVE_SYMBOL_REGISTRY = require('../internals/symbol-registry-detection');\n\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\n\n// `Symbol.keyFor` method\n// https://tc39.es/ecma262/#sec-symbol.keyfor\n$({ target: 'Symbol', stat: true, forced: !NATIVE_SYMBOL_REGISTRY }, {\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw new TypeError(tryToString(sym) + ' is not a symbol');\n if (hasOwn(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n }\n});\n","'use strict';\nvar globalThis = require('../internals/global-this');\nvar DOMIterables = require('../internals/dom-iterables');\nvar DOMTokenListPrototype = require('../internals/dom-token-list-prototype');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nvar handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n setToStringTag(CollectionPrototype, COLLECTION_NAME, true);\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n};\n\nfor (var COLLECTION_NAME in DOMIterables) {\n handlePrototype(globalThis[COLLECTION_NAME] && globalThis[COLLECTION_NAME].prototype, COLLECTION_NAME);\n}\n\nhandlePrototype(DOMTokenListPrototype, 'DOMTokenList');\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 _typeof(o) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) {\n return typeof o;\n } : function (o) {\n return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o;\n }, _typeof(o);\n}\nexport { _typeof as default };","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 getMonabanqRates(loanAmount, onSuccess, onFailed) {\r\n const route = API_ENDPOINT + 'monabanqrate';\r\n const params = '?amount=' + loanAmount;\r\n const xmlhttp = new XMLHttpRequest();\r\n\r\n xmlhttp.onreadystatechange = function () {\r\n if (this.readyState !== 4) return;\r\n\r\n if (this.status === 200) {\r\n const response = JSON.parse(this.responseText);\r\n onSuccess(response);\r\n } else {\r\n onFailed();\r\n }\r\n };\r\n\r\n xmlhttp.open('GET', route + params, true);\r\n xmlhttp.setRequestHeader('Content-Type', 'application/json');\r\n xmlhttp.send(null);\r\n}\r\n","'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\nexport function Modal(params) {\r\n\r\n const element = (function () {\r\n let element = null;\r\n\r\n if (document.getElementsByClassName('modal').length > 0) {\r\n element = document.getElementsByClassName('modal')[0];\r\n const wrapper = element.getElementsByClassName('modal__wrapper')[0];\r\n\r\n if (!!wrapper) {\r\n if (!!params && params.isLarger && !wrapper.classList.contains('modal__wrapper--larger')) {\r\n wrapper.classList.add('modal__wrapper--larger');\r\n } else if (wrapper.classList.contains('modal__wrapper--larger')) {\r\n wrapper.classList.remove('modal__wrapper--larger');\r\n }\r\n\r\n if (!!params && params.isAlignCenter && !element.classList.contains('modal--vertically-centered')) {\r\n element.classList.add('modal--vertically-centered');\r\n } else if (element.classList.contains('modal--vertically-centered')) {\r\n element.classList.remove('modal--vertically-centered');\r\n }\r\n }\r\n } else {\r\n element = document.createElement('div');\r\n element.classList.add('modal');\r\n\r\n if (!!params && params.isAlignCenter) element.classList.add('modal--vertically-centered');\r\n const wrapperModifier = !!params && params.isLarger ? ' modal__wrapper--larger' : '';\r\n const closeSymbol = typeof CLOSEMODALSYMBOL !== 'undefined' ? CLOSEMODALSYMBOL : '✖';\r\n\r\n element.innerHTML = ' \\\r\n
\\\r\n
\\\r\n
';\r\n }\r\n\r\n return element;\r\n })();\r\n\r\n function updateStyles(params) {\r\n const wrapper = element.getElementsByClassName('modal__wrapper')[0];\r\n\r\n if (!!params && params.isLarger && !wrapper.classList.contains('modal__wrapper--larger')) {\r\n wrapper.classList.add('modal__wrapper--larger');\r\n } else if ((!params || !params.isLarger) && wrapper.classList.contains('modal__wrapper--larger')) {\r\n wrapper.classList.remove('modal__wrapper--larger');\r\n }\r\n\r\n if (!!params && params.isAlignCenter && !element.classList.contains('modal--vertically-centered')) {\r\n element.classList.add('modal--vertically-centered');\r\n } else if ((!params || !params.isAlignCenter) && element.classList.contains('modal--vertically-centered')) {\r\n element.classList.remove('modal--vertically-centered');\r\n }\r\n }\r\n\r\n function init() {\r\n const _this = this;\r\n document.body.appendChild(_this.element);\r\n _this.element.style.display = 'none';\r\n\r\n const modalCloseCTAElements = _this.element.querySelectorAll('.modal__close-cta');\r\n for (let i = 0; i < modalCloseCTAElements.length; ++i) {\r\n modalCloseCTAElements[i].addEventListener('click', function (event) {\r\n event.preventDefault();\r\n _this.hide();\r\n });\r\n }\r\n\r\n element.addEventListener('click', function (event) {\r\n if (event.target === _this.element) {\r\n _this.hide();\r\n }\r\n });\r\n }\r\n\r\n function clearContent(wrapperElement) {\r\n if (wrapperElement.hasChildNodes()) {\r\n while (wrapperElement.firstChild) {\r\n wrapperElement.removeChild(wrapperElement.firstChild);\r\n }\r\n }\r\n }\r\n\r\n function show(content, callback) {\r\n const _this = this;\r\n\r\n const modalContentWrapperElement = _this.element.querySelector('.modal__content');\r\n clearContent(modalContentWrapperElement); // TODO: avoid clearContent here\r\n\r\n const contentWrapperElement = document.createElement('div');\r\n contentWrapperElement.classList.add('post');\r\n contentWrapperElement.innerHTML = content;\r\n modalContentWrapperElement.appendChild(contentWrapperElement);\r\n\r\n if (callback && typeof callback === 'function') callback();\r\n\r\n const modalCloseCTAElements = _this.element.querySelectorAll('.modal__close-cta');\r\n for (let i = 0; i < modalCloseCTAElements.length; ++i) {\r\n modalCloseCTAElements[i].setAttribute('tabindex', '1');\r\n }\r\n\r\n _this.element.removeAttribute('style');\r\n _this.element.classList.add('modal--visible');\r\n\r\n window.setTimeout(function () {\r\n document.body.style.overflow = 'hidden';\r\n }, 500);\r\n }\r\n\r\n function hide() {\r\n const _this = this;\r\n\r\n _this.element.classList.remove('modal--visible');\r\n\r\n window.setTimeout(function () {\r\n _this.element.style.display = 'none';\r\n document.body.style.removeProperty('overflow');\r\n\r\n const modalCloseCTAElements = _this.element.querySelectorAll('.modal__close-cta');\r\n for (let i = 0; i < modalCloseCTAElements.length; ++i) {\r\n modalCloseCTAElements[i].setAttribute('tabindex', '0');\r\n }\r\n\r\n clearContent(_this.element.querySelector('.modal__content'));\r\n }, 500);\r\n }\r\n\r\n /* TODO: don't expose element and init */\r\n return {\r\n element: element,\r\n init: init,\r\n show: show,\r\n hide: hide,\r\n updateStyles: updateStyles\r\n }\r\n}\r\n","'use strict';\r\n\r\nexport function offset(el) {\r\n const rect = el.getBoundingClientRect(),\r\n scrollLeft = window.pageXOffset || document.documentElement.scrollLeft,\r\n scrollTop = window.pageYOffset || document.documentElement.scrollTop;\r\n return { top: rect.top + scrollTop, left: rect.left + scrollLeft }\r\n}\r\n","'use strict';\r\n\r\nimport { offset } from '../utils/offset';\r\nimport { id } from '../utils/id';\r\n\r\nexport function Tooltip(params) {\r\n const tooltipId = id();\r\n\r\n const element = (function () {\r\n const element = document.createElement('div');\r\n element.setAttribute('role', 'tooltip');\r\n element.setAttribute('id', tooltipId);\r\n element.classList.add('tooltip', 'post');\r\n element.style.display = 'none';\r\n if (!!params && params.zIndex) {\r\n element.style.zIndex = params.zIndex;\r\n }\r\n return element;\r\n })();\r\n\r\n function show() {\r\n updatePosition(this);\r\n this.element.style.display = 'block';\r\n this.ctaElement.classList.add('active');\r\n this.element.classList.add('tooltip--shown');\r\n\r\n const _this = this;\r\n setTimeout(function () {\r\n _this.isShown = true;\r\n }, 500);\r\n }\r\n\r\n function hide() {\r\n this.element.style.display = 'none';\r\n this.ctaElement.classList.remove('active');\r\n this.element.classList.remove('tooltip--shown');\r\n this.isShown = false;\r\n }\r\n\r\n function init(ctaElement) {\r\n this.ctaElement = ctaElement;\r\n this.ctaElement.setAttribute('data-tooltip-id', tooltipId);\r\n this.element.innerHTML = this.ctaElement.dataset.tooltipContent;\r\n updatePosition(this);\r\n document.body.append(this.element);\r\n\r\n const _this = this;\r\n _this.ctaElement.addEventListener('click', function (event) {\r\n event.stopPropagation();\r\n _this.show();\r\n });\r\n\r\n _this.ctaElement.addEventListener('focus', function (event) {\r\n event.stopPropagation();\r\n _this.show();\r\n });\r\n\r\n _this.ctaElement.addEventListener('touchstart', function (event) {\r\n event.stopPropagation();\r\n _this.show();\r\n });\r\n\r\n _this.ctaElement.addEventListener('focusout', function (event) {\r\n event.stopPropagation();\r\n _this.hide();\r\n });\r\n\r\n setTimeout(function () {\r\n updatePosition(_this);\r\n }, 1000);\r\n\r\n window.addEventListener('resize', function (event) {\r\n updatePosition(_this);\r\n });\r\n\r\n if (!!params && params.modal) {\r\n params.modal.addEventListener('scroll', function (event) {\r\n updatePosition(_this);\r\n });\r\n }\r\n }\r\n\r\n function updatePosition(_this) {\r\n if(typeof _this === 'undefined') {\r\n _this = this;\r\n }\r\n \r\n const leftPosition = (offset(_this.ctaElement).left + _this.ctaElement.clientWidth);\r\n _this.element.style.left = (leftPosition + 320 < window.innerWidth) ? leftPosition + 'px' : 'initial';\r\n _this.element.style.right = (leftPosition + 320 > window.innerWidth) ? '0px' : 'initial';\r\n _this.element.style.top = (offset(_this.ctaElement).top + _this.ctaElement.clientHeight) + 'px';\r\n }\r\n\r\n return {\r\n element: element,\r\n isShown: false,\r\n ctaElement: null,\r\n init: init,\r\n show: show,\r\n hide: hide,\r\n updatePosition: updatePosition\r\n }\r\n}\r\n","'use strict';\r\n\r\nfunction write(key, value, days) {\r\n const date = new Date();\r\n days = days || 365;\r\n date.setTime(+ date + (days * 86400000));\r\n window.document.cookie = key + \"=\" + value + \"; expires=\" + date.toGMTString() + \"; path=/\";\r\n}\r\n\r\nfunction getValue(key) {\r\n const match = document.cookie.match(new RegExp('(^| )' + key + '=([^;]+)'));\r\n if (match) return match[2];\r\n}\r\n\r\nexport const cookie = {\r\n write: write,\r\n getValue: getValue\r\n}\r\n","'use strict';\r\n\r\nconst moment = require('moment');\r\nrequire('@lf/mwuikit/src/scripts/utils/mathTruncPolyfill');\r\n\r\n\r\nfunction distribution(investment, productPricesArray) {\r\n const totalOfProducts = Object.keys(productPricesArray).length;\r\n let distributionArray = new Array();\r\n\r\n if (totalOfProducts > 0) {\r\n let remainingInvestment = investment;\r\n let cheaperProductPrice = null;\r\n let cheaperProductKey = '';\r\n\r\n /* Increment total of parts for each scpi to approch an equilibrated distribution */\r\n for (const key in productPricesArray) {\r\n const productPrice = productPricesArray[key];\r\n const remainingInvestmentForProduct = investment / totalOfProducts;\r\n\r\n distributionArray[key] = Math.floor(remainingInvestmentForProduct / productPrice);\r\n\r\n remainingInvestment -= distributionArray[key] * productPrice;\r\n\r\n if (cheaperProductPrice == null || cheaperProductPrice > productPrice) {\r\n cheaperProductPrice = productPrice;\r\n cheaperProductKey = key;\r\n }\r\n }\r\n\r\n /*Distribute the remaining value*/\r\n while (remainingInvestment - cheaperProductPrice > 0) {\r\n for (const key in productPricesArray) {\r\n const productPrice = productPricesArray[key];\r\n\r\n if (remainingInvestment - productPrice > 0) {\r\n distributionArray[key]++;\r\n remainingInvestment -= productPrice;\r\n }\r\n }\r\n }\r\n\r\n /*Add a cheaper product's item to display investment that barely exceeds the value of investment input*/\r\n if (remainingInvestment > 0) {\r\n distributionArray[cheaperProductKey]++;\r\n }\r\n }\r\n\r\n return distributionArray;\r\n}\r\n\r\nfunction totalCarbonFootprint(distributionArray, productCarbonFootprintsArray) {\r\n let total = 0;\r\n for (const key in distributionArray) {\r\n if (distributionArray[key] > 0) {\r\n total += distributionArray[key] * productCarbonFootprintsArray[key];\r\n }\r\n }\r\n return total;\r\n}\r\n\r\nfunction totalInvestment(distributionArray, productPricesArray) {\r\n let total = 0;\r\n for (const key in distributionArray) {\r\n if (distributionArray[key] > 0) {\r\n total += distributionArray[key] * productPricesArray[key];\r\n }\r\n }\r\n return total;\r\n}\r\n\r\nfunction loanPersonalContribution(investment, loanAmount) {\r\n const maxLoanAmount = monabanqLoanMaxAmount(investment);\r\n\r\n if (loanAmount > maxLoanAmount) {\r\n loanAmount = maxLoanAmount;\r\n }\r\n\r\n const delta = investment - loanAmount;\r\n return delta > 0 ? delta : 0;\r\n}\r\n\r\nfunction monabanqLoanMaxAmount(investment) {\r\n return Math.trunc((investment * .9) / 1000) * 1000;\r\n}\r\n\r\nfunction taeg(rate) {\r\n //TODO: understand and refacto TAEG conversion formula\r\n return Math.floor(((Math.pow((1 + (rate * 0.01) / 12), 12) - 1) / 0.01) * 100) / 100;\r\n}\r\n\r\nfunction monthly(rate, loanAmount, loanDuration) {\r\n //TODO: understand and refacto formula\r\n const i = rate / 1200;\r\n return loanAmount * (i / (1 - Math.pow(1 + i, -loanDuration)));\r\n}\r\n\r\nfunction getMonthly(rate, term, duration, leanAmount) {\r\n const n = term * duration;\r\n const i = rate / (term * 100);\r\n return leanAmount * (i / (1 - Math.pow(1 + i, -n)));\r\n}\r\n\r\nconst XIRR = function (values, dates, guess) {\r\n // Credits: algorithm inspired by Apache OpenOffice\r\n /* Based on\r\n * - EGM Mathematical Finance class by Enrique Garcia M. \r\n * - A Guide to the PMT, FV, IPMT and PPMT Functions by Kevin (aka MWVisa1)\r\n */\r\n // Calculates the resulting amount\r\n const irrResult = function (values, dates, rate) {\r\n const r = rate + 1;\r\n let result = values[0];\r\n for (let i = 1; i < values.length; i++) {\r\n result += values[i] /\r\n Math.pow(\r\n r,\r\n moment(dates[i]).diff(moment(dates[0]), \"days\") / 365\r\n );\r\n }\r\n return result;\r\n };\r\n\r\n // Calculates the first derivation\r\n const irrResultDeriv = function (values, dates, rate) {\r\n const r = rate + 1;\r\n let result = 0;\r\n for (let i = 1; i < values.length; i++) {\r\n const frac = moment(dates[i]).diff(moment(dates[0]), \"days\") / 365;\r\n result -= (frac * values[i]) / Math.pow(r, frac + 1);\r\n }\r\n return result;\r\n };\r\n\r\n // Check that values contains at least one positive value and one negative value\r\n let positive = false;\r\n let negative = false;\r\n for (let i = 0; i < values.length; i++) {\r\n if (values[i] > 0) positive = true;\r\n if (values[i] < 0) negative = true;\r\n }\r\n\r\n // Return error if values does not contain at least one positive value and one negative value\r\n if (!positive || !negative) return \"#NUM!\";\r\n\r\n // Initialize guess and resultRate\r\n guess = typeof guess === \"undefined\" ? 0.1 : guess;\r\n let resultRate = guess;\r\n\r\n // Set maximum epsilon for end of iteration\r\n const epsMax = 1e-10;\r\n\r\n // Set maximum number of iterations\r\n const iterMax = 50;\r\n\r\n // Implement Newton's method\r\n let newRate, epsRate, resultValue;\r\n let iteration = 0;\r\n let contLoop = true;\r\n do {\r\n resultValue = irrResult(values, dates, resultRate);\r\n newRate = resultRate -\r\n resultValue / irrResultDeriv(values, dates, resultRate);\r\n epsRate = Math.abs(newRate - resultRate);\r\n resultRate = newRate;\r\n contLoop = epsRate > epsMax && Math.abs(resultValue) > epsMax;\r\n } while (contLoop && ++iteration < iterMax);\r\n\r\n if (contLoop) return \"#NUM!\";\r\n\r\n // Return internal rate of return\r\n return resultRate;\r\n};\r\n\r\nfunction calcTaegMonabanq(monthly, amount, duration, fees, rate) {\r\n const arrayDate = [];\r\n const arrayMonthly = [];\r\n const arrayDateMonthly = [];\r\n const fraisMoinsEmprunt = -amount + fees;\r\n arrayMonthly.push(fraisMoinsEmprunt);\r\n let dateTemp = moment().date(1);\r\n let tempDate = dateTemp.toDate();\r\n arrayDate.push(tempDate);\r\n arrayDateMonthly.push({ Date: tempDate, Flow: fraisMoinsEmprunt });\r\n for (let index = 0; index < duration; index++) {\r\n dateTemp = dateTemp.add(1, \"M\");\r\n tempDate = dateTemp.toDate();\r\n arrayDate.push(tempDate);\r\n arrayMonthly.push(monthly);\r\n arrayDateMonthly.push({ Date: tempDate, Flow: monthly });\r\n }\r\n const xirr = XIRR(arrayMonthly, arrayDate, rate / 100);\r\n return Math.round(xirr * 10000) / 100;\r\n}\r\n\r\nexport const scpiSimulatorCalculations = {\r\n distribution: distribution,\r\n totalCarbonFootprint: totalCarbonFootprint,\r\n totalInvestment: totalInvestment,\r\n loanPersonalContribution: loanPersonalContribution,\r\n monabanqLoanMaxAmount: monabanqLoanMaxAmount,\r\n taeg: taeg,\r\n calcTaegMonabanq: calcTaegMonabanq,\r\n monthly: monthly,\r\n getMonthly: getMonthly\r\n}","'use strict';\r\n\r\n\r\nexport function initTagCoElement(tc_vars) {\r\n function serializeForm(form) {\r\n const obj = {};\r\n const formData = new FormData(form);\r\n for (let key of formData.keys()) {\r\n if (key != \"ReCaptchaKey\" && key != \"__RequestVerificationToken\") {\r\n obj[key] = formData.get(key);\r\n }\r\n }\r\n return obj;\r\n };\r\n\r\n\r\n let tags = document.getElementsByClassName('tagCoElement');\r\n if (tags) {\r\n for (let i = 0; i < tags.length; i++) {\r\n tags[i].addEventListener(\"click\", function () {\r\n try {\r\n const dataToSend = JSON.parse(event.target.dataset.tagInfo);\r\n dataToSend.page_name = tc_vars.page_name;\r\n if (('tagForm' in event.target.dataset) && ('tagDest' in event.target.dataset)) {\r\n const form = document.getElementById(event.target.dataset.tagForm);\r\n if (form) {\r\n dataToSend[event.target.dataset.tagDest] = JSON.stringify(serializeForm(form));\r\n }\r\n }\r\n console.log(dataToSend);\r\n tC.event.click(this, { dataToSend });\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n });\r\n }\r\n }\r\n}","'use strict';\r\n\r\nrequire('@lf/mwuikit/src/scripts/utils/closestPolyfill');\r\n\r\nimport { getMonabanqRates } from '../../api/getMonabanqRates';\r\nimport { simulateSCPIInvestmentResults } from '../../api/simulateSCPIInvestmentResults';\r\nimport { Form } from '@lf/mwuikit/src/scripts/objects/form';\r\nimport { Modal } from '@lf/mwuikit/src/scripts/objects/modal';\r\nimport { Tooltip } from '@lf/mwuikit/src/scripts/objects/tooltip';\r\nimport { convertedFormValuesToJSON } from '../../utils/convertedFormValuesToJSON';\r\nimport { cookie } from '@lf/mwuikit/src/scripts/utils/cookie';\r\nimport { scpiSimulatorCalculations } from '../../utils/scpiSimulatorCalculations';\r\nimport { initTagCoElement } from \"../../objects/tagCommander\";\r\nimport { getScpiSubscriptionAlert } from \"../../api/getScpiSubscriptionAlert\";\r\n\r\n\r\n(function () {\r\n const formElement = document.getElementById('scpi-simulator-form');\r\n let ctasExpandingAccordions = document.querySelectorAll('[data-cta-expanding-accordion]');\r\n\r\n if (formElement) {\r\n const form = Form({ element: formElement, submit: submit });\r\n form.initConditionalElements();\r\n\r\n const confirmAlertReadingInputElement = formElement.querySelector('input[name=ConfirmAlertReading]');\r\n const investmentInputElement = document.getElementById('investment');\r\n const productItemElements = formElement.querySelectorAll('[data-scpi]');\r\n const distributionCheckboxElements = formElement.querySelectorAll('input[data-enabled-SCPI]');\r\n const distributionInputElements = formElement.querySelectorAll('input[name^=\"Distribution\"]');\r\n let keysOfDisabledDistributionInputsArray = getKeysOfDisabledDistributionInputs();\r\n let isAutomaticDistributionDisabled = false;\r\n\r\n const monabanqLoanAmountInputElement = formElement.querySelector('input[name=MonabanqLoanAmount]');\r\n const monabanqLoanDurationSelectElement = formElement.querySelector('select[name=MonabanqLoanDuration]');\r\n const monabanqLoanPersonalContributionInputElement = document.getElementById('monabanq-loan-personal-contribution');\r\n const monabanqLoanTAEGInputElement = formElement.querySelector('input[name=MonabanqLoanTAEG]');\r\n const monabanqLoanRateInputElement = formElement.querySelector('input[name=MonabanqLoanRate]');\r\n const monabanqLoanBookingFeesInputElement = formElement.querySelector('input[name=MonabanqLoanBookingFees]');\r\n const monabanqLoanWarrantyFeesInputElement = formElement.querySelector('input[name=MonabanqLoanWarrantyFees]');\r\n const monabanqLoanMonthlyInputElement = formElement.querySelector('input[name=MonabanqLoanMonthly]');\r\n const creditInstitutionLoanDurationInputElement = formElement.querySelector('input[name=CreditInstitutionLoanAmount]');\r\n const setMaxValueToMonabanqLoanAmountCTAElement = document.getElementById('set-max-value-to-monabanq-loan-amount-cta');\r\n const setMaxValueToCreditInstitutionLoanAmountCTAElement = document.getElementById('set-max-value-to-credit-institution-loan-amount-cta');\r\n\r\n const totalOfProducts = productItemElements.length;\r\n let productPricesArray = new Array(totalOfProducts);\r\n let productCarbonFootprintsArray = new Array(totalOfProducts);\r\n let productsDataArray = new Array(totalOfProducts);\r\n let distributionArray = [];\r\n let selectionLength = 0;\r\n const selectionLimit = formElement.dataset.selectionLimit;\r\n\r\n let investment = 0;\r\n let totalInvestment = 0.00; // for calculated amount\r\n let totalCarbonFootprint = 0.00;\r\n\r\n let monabanqLoanAmount = 0;\r\n let monabanqLoanDuration = 0;\r\n let monabanqLoanRate = null;\r\n let monabanqLoanRatesObjectsForAmount = [];\r\n let monabanqLoanBookingFees = 500;\r\n let monabanqLoanWarrantyFeesArray = [500, 800, 1000];\r\n let monabanqLoanWarrantyFees = 0;\r\n let monabanqLoanMinAmount = 25000;\r\n\r\n window.monabanqLoanAccordion = null;\r\n window.creditInstitutionAccordion = null;\r\n const modal = Modal({ isLarger: true });\r\n\r\n function initCtasExpandingAccordions() {\r\n for (let i = 0; i < ctasExpandingAccordions.length; i++) {\r\n const ctaExpandingAccordion = ctasExpandingAccordions[i];\r\n ctaExpandingAccordion.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n\r\n modal.hide();\r\n\r\n document.dispatchEvent(new CustomEvent('openAccordion', {\r\n detail: {\r\n ctaElement: document.getElementById(ctaExpandingAccordion.dataset.ctaExpandingAccordion)\r\n }\r\n }));\r\n });\r\n }\r\n }\r\n\r\n function updateBindingsInRows(distributionArray, productPricesArray, productCarbonFootprintsArray, totalInvestment) {\r\n if (productItemElements.length) {\r\n let productItemElementsCopy = Array.from(productItemElements);\r\n\r\n for (const key in distributionArray) {\r\n const distributionInputElement = formElement.querySelector('input[name=\"Distribution[\\'' + key + '\\']\"]');\r\n\r\n if (distributionInputElement) {\r\n distributionInputElement.value = distributionArray[key] > 0 && investment > 0 ? distributionArray[key] : 0;\r\n\r\n for (let i = 0; i < productItemElementsCopy.length; i++) {\r\n\r\n if (productItemElementsCopy[i].contains(distributionInputElement)) {\r\n const priceBinding = productItemElementsCopy[i].querySelector('[data-binding=\"price\"]');\r\n const price = (distributionArray[key] * productPricesArray[key]);\r\n if (priceBinding) {\r\n priceBinding.innerHTML = (distributionArray[key] * productPricesArray[key]).toLocaleString('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 2, minimumFractionDigits: 0 });\r\n }\r\n\r\n const percentageBinding = productItemElementsCopy[i].querySelector('[data-binding=\"distribution-percentage\"]');\r\n if (percentageBinding) {\r\n const percentage = totalInvestment > 0 ? price * 100 / totalInvestment : 100 / totalOfProducts;\r\n percentageBinding.innerHTML = percentage.toLocaleString('fr-FR', { maximumFractionDigits: 2, minimumFractionDigits: 0 }) + ' %';\r\n }\r\n\r\n const carbonFootprintBinding = productItemElementsCopy[i].querySelector('[data-binding=\"carbon-footprint\"]');\r\n if (carbonFootprintBinding) {\r\n const carbonFootprint = distributionArray[key] * productCarbonFootprintsArray[key];\r\n carbonFootprintBinding.innerHTML = carbonFootprint.toLocaleString('fr-FR', { maximumFractionDigits: 2, minimumFractionDigits: 2 }) + ' kg';\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n function updateTotalsBindings(totalInvestment, totalCarbonFootprint) {\r\n const totalInvestmentBinding = formElement.querySelector('[data-binding=\"total-investment\"]');\r\n if (totalInvestmentBinding) {\r\n totalInvestmentBinding.innerHTML = totalInvestment.toLocaleString('fr-FR', { style: 'currency', currency: 'EUR', maximumFractionDigits: 2, minimumFractionDigits: 0 });\r\n }\r\n\r\n const totalCarbonFootprintBinding = formElement.querySelector('[data-binding=\"total-carbon-footprint\"]');\r\n if (totalCarbonFootprintBinding) {\r\n totalCarbonFootprintBinding.innerHTML = totalCarbonFootprint.toLocaleString('fr-FR', { maximumFractionDigits: 2, minimumFractionDigits: 2 }) + ' kg';\r\n }\r\n }\r\n\r\n function fillMonabanqTAEGAndMonthlyInputs(rate, monabanqLoanAmount, monabanqLoanDuration) {\r\n if (monabanqLoanWarrantyFeesInputElement) {\r\n monabanqLoanWarrantyFees = monabanqLoanWarrantyFeesArray[Math.min(selectionLength - 1, 2)];\r\n monabanqLoanWarrantyFeesInputElement.value = monabanqLoanWarrantyFees;\r\n }\r\n\r\n if ((monabanqLoanTAEGInputElement || monabanqLoanMonthlyInputElement) && rate && monabanqLoanAmount && monabanqLoanDuration) {\r\n const monthly = scpiSimulatorCalculations.monthly(rate, monabanqLoanAmount, monabanqLoanDuration);\r\n const taeg = scpiSimulatorCalculations.calcTaegMonabanq(monthly, monabanqLoanAmount, monabanqLoanDuration, monabanqLoanWarrantyFees + monabanqLoanBookingFees, rate);\r\n\r\n if (monabanqLoanRateInputElement) {\r\n monabanqLoanRateInputElement.value = rate.toFixed(2);\r\n }\r\n\r\n if (monabanqLoanTAEGInputElement) {\r\n monabanqLoanTAEGInputElement.value = taeg.toFixed(2);\r\n }\r\n\r\n if (monabanqLoanMonthlyInputElement) {\r\n monabanqLoanMonthlyInputElement.value = monthly.toFixed(2);\r\n }\r\n } else {\r\n if (monabanqLoanTAEGInputElement) {\r\n monabanqLoanTAEGInputElement.value = '';\r\n }\r\n\r\n if (monabanqLoanMonthlyInputElement) {\r\n monabanqLoanMonthlyInputElement.value = '';\r\n }\r\n }\r\n }\r\n\r\n function toggleCheckboxesState(checkboxElements) {\r\n const notCheckedCheckboxElements = new Array();\r\n const disabledCheckboxElements = new Array();\r\n\r\n const checkedCheckboxElements = Array.from(checkboxElements).filter(function (element) {\r\n if (element.checked) {\r\n const parentProductItemElement = element.closest('[data-scpi]');\r\n if (parentProductItemElement && parentProductItemElement.classList.contains('disabled')) {\r\n parentProductItemElement.classList.remove('disabled');\r\n }\r\n return true;\r\n } else {\r\n notCheckedCheckboxElements.push(element);\r\n if (element.disabled) disabledCheckboxElements.push(element);\r\n return false;\r\n }\r\n });\r\n\r\n selectionLength = checkedCheckboxElements.length;\r\n\r\n if (selectionLength >= selectionLimit) {\r\n for (let i = 0; i < notCheckedCheckboxElements.length; i++) {\r\n notCheckedCheckboxElements[i].disabled = true;\r\n const parentProductItemElement = notCheckedCheckboxElements[i].closest('[data-scpi]');\r\n if (parentProductItemElement && !parentProductItemElement.classList.contains('disabled')) {\r\n parentProductItemElement.classList.add('disabled');\r\n }\r\n }\r\n } else if (disabledCheckboxElements.length > 0) {\r\n for (let i = 0; i < disabledCheckboxElements.length; i++) {\r\n disabledCheckboxElements[i].disabled = false;\r\n const parentProductItemElement = disabledCheckboxElements[i].closest('[data-scpi]');\r\n if (parentProductItemElement && parentProductItemElement.classList.contains('disabled')) {\r\n parentProductItemElement.classList.remove('disabled');\r\n }\r\n }\r\n }\r\n }\r\n\r\n function getKeysOfDisabledDistributionInputs() {\r\n const disabledDistributionInputElements = formElement.querySelectorAll('input[name^=\"Distribution\"]:disabled');\r\n return Array.prototype.map.call(disabledDistributionInputElements, function (item) { return item.id });\r\n }\r\n\r\n function getSelectedProductsPricesArray(productPricesArray, keysOfDisabledDistributionInputsArray) {\r\n const selectedProductsPricesArray = new Array();\r\n for (const key in productPricesArray) {\r\n if (keysOfDisabledDistributionInputsArray.indexOf(key) < 0) {\r\n selectedProductsPricesArray[key] = productPricesArray[key];\r\n }\r\n }\r\n\r\n return selectedProductsPricesArray;\r\n }\r\n\r\n function updateLoanInputs(totalInvestment, monabanqLoanAmount) {\r\n if (monabanqLoanWarrantyFeesInputElement) {\r\n monabanqLoanWarrantyFees = monabanqLoanWarrantyFeesArray[Math.min(selectionLength - 1, 2)];\r\n monabanqLoanWarrantyFeesInputElement.value = monabanqLoanWarrantyFees;\r\n }\r\n\r\n if (monabanqLoanAmountInputElement) {\r\n const monabanqLoanMaxAmount = scpiSimulatorCalculations.monabanqLoanMaxAmount(totalInvestment);\r\n\r\n if (monabanqLoanMaxAmount > monabanqLoanMinAmount) {\r\n if (monabanqLoanAmountInputElement.disabled) {\r\n monabanqLoanAmountInputElement.disabled = false;\r\n\r\n if (setMaxValueToMonabanqLoanAmountCTAElement) {\r\n setMaxValueToMonabanqLoanAmountCTAElement.removeAttribute('disabled');\r\n setMaxValueToMonabanqLoanAmountCTAElement.setAttribute('tabindex', '0');\r\n }\r\n }\r\n\r\n if (monabanqLoanDurationSelectElement && monabanqLoanDurationSelectElement.disabled) {\r\n monabanqLoanDurationSelectElement.disabled = false;\r\n }\r\n\r\n monabanqLoanAmountInputElement.max = monabanqLoanMaxAmount;\r\n } else {\r\n monabanqLoanAmountInputElement.value = '';\r\n monabanqLoanAmount = 0;\r\n\r\n if (!monabanqLoanAmountInputElement.disabled) {\r\n monabanqLoanAmountInputElement.disabled = true;\r\n\r\n if (setMaxValueToMonabanqLoanAmountCTAElement) {\r\n setMaxValueToMonabanqLoanAmountCTAElement.setAttribute('disabled', 'true');\r\n setMaxValueToMonabanqLoanAmountCTAElement.setAttribute('tabindex', '-1');\r\n }\r\n }\r\n\r\n if (monabanqLoanDurationSelectElement) {\r\n monabanqLoanDurationSelectElement.value = '';\r\n\r\n if (!monabanqLoanDurationSelectElement.disabled) {\r\n monabanqLoanDurationSelectElement.disabled = true;\r\n }\r\n }\r\n\r\n fillMonabanqTAEGAndMonthlyInputs(null, null, null);\r\n }\r\n }\r\n\r\n if (creditInstitutionLoanDurationInputElement) {\r\n creditInstitutionLoanDurationInputElement.max = totalInvestment;\r\n }\r\n\r\n if (monabanqLoanPersonalContributionInputElement) {\r\n monabanqLoanPersonalContributionInputElement.value = scpiSimulatorCalculations.loanPersonalContribution(totalInvestment, monabanqLoanAmount);\r\n }\r\n }\r\n\r\n for (let i = 0; i < totalOfProducts; i++) {\r\n const data = JSON.parse(productItemElements[i].dataset.scpi);\r\n productsDataArray[i] = data;\r\n productPricesArray[data.slug] = data.sharePrice;\r\n productCarbonFootprintsArray[data.slug] = data.carbonFootprint;\r\n if (productItemElements[i].querySelector(\"[data-enabled-scpi]:checked\"))\r\n selectionLength++;\r\n }\r\n\r\n if (monabanqLoanDurationSelectElement) {\r\n monabanqLoanDuration = monabanqLoanDurationSelectElement.value;\r\n monabanqLoanBookingFeesInputElement.value = monabanqLoanBookingFees;\r\n monabanqLoanWarrantyFees = monabanqLoanWarrantyFeesArray[Math.min(selectionLength - 1, 2)];\r\n monabanqLoanWarrantyFeesInputElement.value = monabanqLoanWarrantyFees;\r\n\r\n monabanqLoanDurationSelectElement.addEventListener('change', function () {\r\n monabanqLoanDuration = this.value;\r\n\r\n if (monabanqLoanRatesObjectsForAmount.length) {\r\n const filteredRatesObjects = monabanqLoanRatesObjectsForAmount.filter(element => element.duration == monabanqLoanDuration);\r\n monabanqLoanRate = filteredRatesObjects.length ? filteredRatesObjects[0].rate : null;\r\n fillMonabanqTAEGAndMonthlyInputs(monabanqLoanRate, monabanqLoanAmount, monabanqLoanDuration);\r\n }\r\n });\r\n }\r\n\r\n if (monabanqLoanAmountInputElement) {\r\n monabanqLoanAmount = monabanqLoanAmountInputElement.value;\r\n let typingTimeout = null;\r\n\r\n function updateLoanInfo(timeout) {\r\n clearTimeout(typingTimeout);\r\n typingTimeout = setTimeout(function () {\r\n\r\n const value = parseFloat(monabanqLoanAmountInputElement.value);\r\n const min = !!monabanqLoanAmountInputElement.min ? parseFloat(monabanqLoanAmountInputElement.min) : null;\r\n const max = !!monabanqLoanAmountInputElement.max ? parseFloat(monabanqLoanAmountInputElement.max) : null;\r\n const step = !!monabanqLoanAmountInputElement.step ? parseFloat(monabanqLoanAmountInputElement.step) : null;\r\n\r\n if (typeof min === 'number' && value < min) {\r\n monabanqLoanAmountInputElement.value = min;\r\n } else if (typeof max === 'number' && value > max) {\r\n monabanqLoanAmountInputElement.value = max;\r\n } else if (value % step > 0) {\r\n monabanqLoanAmountInputElement.value = Math.round(Math.trunc((value + value % step) / step) * step * 100) / 100;\r\n }\r\n monabanqLoanAmount = monabanqLoanAmountInputElement.value;\r\n\r\n fillMonabanqTAEGAndMonthlyInputs(monabanqLoanRate, monabanqLoanAmount, monabanqLoanDuration);\r\n\r\n if (monabanqLoanDurationSelectElement) {\r\n\r\n getMonabanqRates(\r\n monabanqLoanAmount,\r\n function (ratesObjects) {\r\n monabanqLoanRatesObjectsForAmount = ratesObjects;\r\n\r\n let lastOptionElement;\r\n while (lastOptionElement = monabanqLoanDurationSelectElement.lastChild) {\r\n monabanqLoanDurationSelectElement.removeChild(lastOptionElement);\r\n }\r\n\r\n for (let i = 0; i < ratesObjects.length; i++) {\r\n const optionElement = document.createElement('option');\r\n optionElement.value = ratesObjects[i].duration;\r\n optionElement.innerHTML = (ratesObjects[i].duration / 12) + ' ans';\r\n monabanqLoanDurationSelectElement.append(optionElement);\r\n }\r\n\r\n const filteredRatesObjects = ratesObjects.filter(element => element.duration == monabanqLoanDuration);\r\n monabanqLoanRate = filteredRatesObjects.length ? filteredRatesObjects[0].rate : null;\r\n fillMonabanqTAEGAndMonthlyInputs(monabanqLoanRate, monabanqLoanAmount, monabanqLoanDuration);\r\n },\r\n function (response) {\r\n console.log('error');\r\n }\r\n );\r\n }\r\n\r\n if (monabanqLoanPersonalContributionInputElement) {\r\n monabanqLoanPersonalContributionInputElement.value = scpiSimulatorCalculations.loanPersonalContribution(totalInvestment, monabanqLoanAmount);\r\n }\r\n }, timeout);\r\n }\r\n\r\n monabanqLoanAmountInputElement.addEventListener('keyup', function () {\r\n updateLoanInfo(500);\r\n });\r\n\r\n monabanqLoanAmountInputElement.addEventListener('change', function () {\r\n updateLoanInfo(0);\r\n });\r\n\r\n if (setMaxValueToMonabanqLoanAmountCTAElement) {\r\n setMaxValueToMonabanqLoanAmountCTAElement.addEventListener('click', function () {\r\n if (!monabanqLoanAmountInputElement.disabled) {\r\n monabanqLoanAmountInputElement.value = monabanqLoanAmountInputElement.max;\r\n\r\n monabanqLoanAmount = monabanqLoanAmountInputElement.value;\r\n getMonabanqRates(\r\n monabanqLoanAmount,\r\n function (ratesObjects) {\r\n monabanqLoanRatesObjectsForAmount = ratesObjects;\r\n\r\n let lastOptionElement;\r\n while (lastOptionElement = monabanqLoanDurationSelectElement.lastChild) {\r\n monabanqLoanDurationSelectElement.removeChild(lastOptionElement);\r\n }\r\n\r\n for (let i = 0; i < ratesObjects.length; i++) {\r\n const optionElement = document.createElement('option');\r\n optionElement.value = ratesObjects[i].duration;\r\n optionElement.innerHTML = (ratesObjects[i].duration / 12) + ' ans';\r\n monabanqLoanDurationSelectElement.append(optionElement);\r\n }\r\n\r\n const filteredRatesObjects = ratesObjects.filter(element => element.duration == monabanqLoanDuration);\r\n monabanqLoanRate = filteredRatesObjects.length ? filteredRatesObjects[0].rate : null;\r\n fillMonabanqTAEGAndMonthlyInputs(monabanqLoanRate, monabanqLoanAmount, monabanqLoanDuration);\r\n if (monabanqLoanPersonalContributionInputElement) {\r\n monabanqLoanPersonalContributionInputElement.value = scpiSimulatorCalculations.loanPersonalContribution(totalInvestment, monabanqLoanAmount);\r\n }\r\n },\r\n function (response) {\r\n console.log('error');\r\n }\r\n );\r\n }\r\n });\r\n }\r\n }\r\n\r\n if (creditInstitutionLoanDurationInputElement && setMaxValueToCreditInstitutionLoanAmountCTAElement) {\r\n setMaxValueToCreditInstitutionLoanAmountCTAElement.addEventListener('click', function () {\r\n creditInstitutionLoanDurationInputElement.value = creditInstitutionLoanDurationInputElement.max;\r\n });\r\n }\r\n\r\n if (investmentInputElement) {\r\n investment = investmentInputElement.value;\r\n\r\n const selectedProductsPricesArray = getSelectedProductsPricesArray(productPricesArray, keysOfDisabledDistributionInputsArray);\r\n distributionArray = scpiSimulatorCalculations.distribution(investment, selectedProductsPricesArray);\r\n totalInvestment = scpiSimulatorCalculations.totalInvestment(distributionArray, productPricesArray);\r\n\r\n investmentInputElement.addEventListener('input', function () {\r\n investment = this.value;\r\n totalCarbonFootprint = 0;\r\n\r\n const selectedProductsPricesArray = getSelectedProductsPricesArray(productPricesArray, keysOfDisabledDistributionInputsArray);\r\n distributionArray = scpiSimulatorCalculations.distribution(investment, selectedProductsPricesArray);\r\n\r\n totalCarbonFootprint = scpiSimulatorCalculations.totalCarbonFootprint(distributionArray, productCarbonFootprintsArray);\r\n totalInvestment = scpiSimulatorCalculations.totalInvestment(distributionArray, productPricesArray);\r\n\r\n updateBindingsInRows(distributionArray, productPricesArray, productCarbonFootprintsArray, totalInvestment);\r\n updateTotalsBindings(totalInvestment, totalCarbonFootprint);\r\n updateLoanInputs(totalInvestment, monabanqLoanAmount);\r\n\r\n isAutomaticDistributionDisabled = false;\r\n });\r\n }\r\n\r\n for (let i = 0; i < distributionInputElements.length; i++) {\r\n distributionInputElements[i].addEventListener('input', function () {\r\n const currentInputKey = this.id;\r\n const currentProductDistribution = parseInt(this.value > 0 ? this.value : 0);\r\n\r\n distributionArray[currentInputKey] = currentProductDistribution;\r\n\r\n totalCarbonFootprint = scpiSimulatorCalculations.totalCarbonFootprint(distributionArray, productCarbonFootprintsArray);\r\n totalInvestment = scpiSimulatorCalculations.totalInvestment(distributionArray, productPricesArray);\r\n\r\n updateBindingsInRows(distributionArray, productPricesArray, productCarbonFootprintsArray, totalInvestment);\r\n updateTotalsBindings(totalInvestment, totalCarbonFootprint);\r\n updateLoanInputs(totalInvestment, monabanqLoanAmount);\r\n\r\n isAutomaticDistributionDisabled = true;\r\n });\r\n }\r\n\r\n for (let i = 0; i < distributionCheckboxElements.length; i++) {\r\n distributionCheckboxElements[i].addEventListener('change', function () {\r\n const currentInputParentProductItemElement = this.closest('[data-scpi]');\r\n const currentDistributionInputElement = currentInputParentProductItemElement.querySelector('input[name^=\"Distribution\"]');\r\n\r\n currentDistributionInputElement.disabled = !this.checked;\r\n\r\n keysOfDisabledDistributionInputsArray = getKeysOfDisabledDistributionInputs();\r\n\r\n if (!isAutomaticDistributionDisabled) {\r\n const selectedProductsPricesArray = getSelectedProductsPricesArray(productPricesArray, keysOfDisabledDistributionInputsArray);\r\n distributionArray = scpiSimulatorCalculations.distribution(investment, selectedProductsPricesArray);\r\n }\r\n\r\n for (let i = 0; i < keysOfDisabledDistributionInputsArray.length; i++) {\r\n distributionArray[keysOfDisabledDistributionInputsArray[i]] = 0;\r\n }\r\n\r\n totalCarbonFootprint = scpiSimulatorCalculations.totalCarbonFootprint(distributionArray, productCarbonFootprintsArray);\r\n totalInvestment = scpiSimulatorCalculations.totalInvestment(distributionArray, productPricesArray);\r\n\r\n toggleCheckboxesState(distributionCheckboxElements);\r\n updateBindingsInRows(distributionArray, productPricesArray, productCarbonFootprintsArray, totalInvestment);\r\n updateTotalsBindings(totalInvestment, totalCarbonFootprint);\r\n updateLoanInputs(totalInvestment, monabanqLoanAmount);\r\n });\r\n }\r\n\r\n function openAccordion() {\r\n document.dispatchEvent(new CustomEvent('openAccordion', {\r\n detail: {\r\n ctaElement: document.getElementById('alert-accordion-cta')\r\n }\r\n }));\r\n }\r\n\r\n if (confirmAlertReadingInputElement) {\r\n confirmAlertReadingInputElement.addEventListener('change', function () {\r\n if (this.checked && cookie.getValue('isSCPISimulatorAlertRead') !== 'true') {\r\n openAccordion();\r\n }\r\n });\r\n }\r\n\r\n modal.init();\r\n\r\n initCtasExpandingAccordions();\r\n\r\n function submit(submitEvent) {\r\n const formData = convertedFormValuesToJSON(submitEvent.srcElement);\r\n\r\n form.showSubmitCTASpinner();\r\n\r\n for (let i = 0; i < distributionInputElements.length; i++) {\r\n distributionArray[distributionInputElements[i].id] = distributionInputElements[i].value;\r\n }\r\n\r\n const data = {\r\n Distribution: Object.keys(distributionArray).map(function (key) { if (distributionArray[key] > 0) return { Slug: key, Value: distributionArray[key] } }),\r\n Duration: formData.Duration,\r\n NetSalary1: formData.NetSalary1,\r\n NetSalary2: formData.NetSalary2,\r\n PropertyIncome: formData.PropertyIncome,\r\n OtherIncome: formData.OtherIncome,\r\n TotalOfFamilyIncomeSplits: formData.TotalOfFamilyIncomeSplits,\r\n IsSingleParentFamily: formData.IsSingleParentFamily,\r\n Hypothesis: formData.Hypothesis\r\n };\r\n\r\n if (typeof window.monabanqLoanAccordion !== undefined || typeof window.creditInstitutionAccordion !== undefined) {\r\n if (window.monabanqLoanAccordion === true) {\r\n data['WithMonabanqLoan'] = true;\r\n data['MonabanqLoanAmount'] = formData.MonabanqLoanAmount;\r\n data['MonabanqLoanDuration'] = formData.MonabanqLoanDuration;\r\n data['MonabanqLoanRate'] = formData.MonabanqLoanRate;\r\n data['MonabanqLoanCharges'] = formData.MonabanqLoanBookingFees;\r\n data['MonabanqLoanGuarantee'] = formData.MonabanqLoanWarrantyFees;\r\n } else if (window.creditInstitutionAccordion === true) {\r\n data['WithCreditInstitutionLoan'] = true;\r\n data['CreditInstitutionLoanAmount'] = formData.CreditInstitutionLoanAmount;\r\n data['CreditInstitutionInterestRate'] = formData.CreditInstitutionInterestRate;\r\n data['CreditInstitutionLoanDuration'] = formData.CreditInstitutionLoanDuration;\r\n data['CreditInstitutionLoanType'] = formData.CreditInstitutionLoanType;\r\n }\r\n }\r\n\r\n simulateSCPIInvestmentResults(\r\n data,\r\n function (response) {\r\n modal.updateStyles({ isLarger: true, isAlignCenter: false });\r\n\r\n modal.show(\r\n response + `\r\n \r\n `,\r\n function () {\r\n ctasExpandingAccordions = document.querySelectorAll('[data-cta-expanding-accordion]');\r\n initCtasExpandingAccordions();\r\n\r\n const tooltipCTAElements = modal.element.querySelectorAll('[data-tooltip-content]');\r\n let tooltips = [];\r\n\r\n if (tooltipCTAElements.length > 0) {\r\n for (let i = 0; i < tooltipCTAElements.length; i++) {\r\n const tooltip = Tooltip({\r\n modal: modal.element,\r\n zIndex: 1006\r\n });\r\n tooltip.init(tooltipCTAElements[i]);\r\n tooltips.push(tooltip);\r\n }\r\n\r\n modal.element.addEventListener('click', function (event) {\r\n event.stopPropagation();\r\n for (let i = 0; i < tooltips.length; i++) {\r\n const tooltip = tooltips[i];\r\n if (tooltip.isShown) {\r\n if (tooltip.ctaElement != event.target && tooltip.element != event.target && !tooltip.element.contains(event.target)) {\r\n tooltip.hide();\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n );\r\n\r\n form.hideSubmitCTASpinner();\r\n if (typeof (tc_vars) !== 'undefined') {\r\n initTagCoElement(tc_vars);\r\n }\r\n\r\n try {\r\n tC.event.simulationScpi(this, { \"simulation_value\": totalInvestment });\r\n } catch(exception) {\r\n console.log(exception);\r\n }\r\n \r\n let matomoData = document.querySelector('div[data-name=\"matomo-push\"]');\r\n if (matomoData) {\r\n let pushData = matomoData.dataset.push;\r\n\r\n window._mtm = window._mtm || [];\r\n window._mtm.push(JSON.parse(pushData));\r\n matomoData.outerHTML = \"\";\r\n }\r\n\r\n function displaySubscriptionAlertModal(e) {\r\n let modal = Modal({ isAlignCenter: true });\r\n modal.init();\r\n modal.show(`Souhaitez-vous confirmer le lancement d'une nouvelle souscription ?
\r\n \t Vous avez déjà une souscription en cours, sachez que le démarrage d'une nouvelle opération annulera la précédente.
\r\n \t \r\n \r\n \r\n \t \r\n
`, () => {\r\n\r\n const confirmElement = document.getElementById(\"confirm\");\r\n const closeButton = document.getElementById(\"close\");\r\n\r\n confirmElement.addEventListener('click', function () {\r\n window.location = e.target.href;\r\n });\r\n\r\n closeButton.addEventListener('click', function (event) {\r\n event.preventDefault();\r\n modal.hide();\r\n });\r\n });\r\n }\r\n\r\n let subscribe = document.getElementById('subscribe');\r\n subscribe.addEventListener('click', (e) => {\r\n e.preventDefault();\r\n\r\n getScpiSubscriptionAlert(\r\n function (response) {\r\n if (response) {\r\n displaySubscriptionAlertModal(e);\r\n } else {\r\n window.location = e.target.href;\r\n }\r\n },\r\n function () {\r\n\r\n }\r\n );\r\n });\r\n },\r\n function (messages) {\r\n modal.updateStyles({ isLarger: false, isAlignCenter: true });\r\n\r\n if (messages.length) {\r\n modal.show('' + messages.join('
') + '
');\r\n } else {\r\n modal.show(`Une erreur s’est produite.
`);\r\n }\r\n\r\n form.hideSubmitCTASpinner();\r\n }\r\n );\r\n }\r\n }\r\n\r\n if (!window.setAlertAccordionExpansion) {\r\n window.setAlertAccordionExpansion = function () {\r\n if (cookie.getValue('isSCPISimulatorAlertRead') !== 'true') {\r\n cookie.write('isSCPISimulatorAlertRead', 'true', 24);\r\n }\r\n }\r\n }\r\n\r\n if (!window.setMonabanqLoanAccordionCollapse) {\r\n window.setMonabanqLoanAccordionCollapse = function () {\r\n const conditionAttributeName = 'data-monabanq-loan-accordion-is-expanded';\r\n document.querySelector('[' + conditionAttributeName + ']').setAttribute(conditionAttributeName, 'false');\r\n window.monabanqLoanAccordion = false;\r\n }\r\n }\r\n\r\n if (!window.setCreditInstitutionLoanAccordionCollapse) {\r\n window.setCreditInstitutionLoanAccordionCollapse = function () {\r\n const conditionAttributeName = 'data-credit-institution-loan-accordion-is-expanded';\r\n document.querySelector('[' + conditionAttributeName + ']').setAttribute(conditionAttributeName, 'false');\r\n window.creditInstitutionAccordion = false;\r\n }\r\n }\r\n\r\n if (!window.setMonabanqLoanAccordionExpansion) {\r\n window.setMonabanqLoanAccordionExpansion = function () {\r\n const conditionAttributeName = 'data-monabanq-loan-accordion-is-expanded';\r\n document.querySelector('[' + conditionAttributeName + ']').setAttribute(conditionAttributeName, 'true');\r\n window.monabanqLoanAccordion = true;\r\n }\r\n }\r\n\r\n if (!window.setCreditInstitutionLoanAccordionExpansion) {\r\n window.setCreditInstitutionLoanAccordionExpansion = function () {\r\n const conditionAttributeName = 'data-credit-institution-loan-accordion-is-expanded';\r\n document.querySelector('[' + conditionAttributeName + ']').setAttribute(conditionAttributeName, 'true');\r\n window.creditInstitutionAccordion = true;\r\n }\r\n }\r\n\r\n if (!window.setFiscalImpactAccordionExpansion) {\r\n window.setFiscalImpactAccordionExpansion = function () {\r\n const conditionAttributeName = 'data-fiscal-impact-accordion-is-expanded';\r\n document.querySelector('[' + conditionAttributeName + ']').setAttribute(conditionAttributeName, 'true');\r\n }\r\n }\r\n\r\n if (!window.setFiscalImpactAccordionCollapse) {\r\n window.setFiscalImpactAccordionCollapse = function () {\r\n const conditionAttributeName = 'data-fiscal-impact-accordion-is-expanded';\r\n document.querySelector('[' + conditionAttributeName + ']').setAttribute(conditionAttributeName, 'false');\r\n }\r\n }\r\n\r\n const hypothesisRadioInputElements = formElement.querySelectorAll('[name=\"Hypothesis\"]');\r\n const negativeHypothesisIsSelectedSupportElement = formElement.querySelector('[data-negative-hypothesis-is-selected]');\r\n const neutralHypothesisIsSelectedSupportElement = formElement.querySelector('[data-neutral-hypothesis-is-selected]');\r\n const positiveHypothesisIsSelectedSupportElement = formElement.querySelector('[data-positive-hypothesis-is-selected]');\r\n\r\n if (negativeHypothesisIsSelectedSupportElement && neutralHypothesisIsSelectedSupportElement && positiveHypothesisIsSelectedSupportElement) {\r\n for (let i = 0; i < hypothesisRadioInputElements.length; i++) {\r\n hypothesisRadioInputElements[i].addEventListener('change', function (event) {\r\n negativeHypothesisIsSelectedSupportElement.dataset.negativeHypothesisIsSelected = this.value < 0;\r\n neutralHypothesisIsSelectedSupportElement.dataset.neutralHypothesisIsSelected = this.value == 0;\r\n positiveHypothesisIsSelectedSupportElement.dataset.positiveHypothesisIsSelected = this.value == 1;\r\n });\r\n }\r\n }\r\n}());\r\n","'use strict';\r\n\r\nexport const convertedFormValuesToJSON = function (form) {\r\n\r\n function convertInputValues(elements) {\r\n if (elements.length <= 0)\r\n return;\r\n\r\n for (let i = 0; i < elements.length; ++i) {\r\n const element = elements[i];\r\n const name = element.name;\r\n const value = element.value;\r\n\r\n if (name && value) {\r\n if (element.type === 'radio' && !element.checked) continue;\r\n if (element.type === 'checkbox') {\r\n obj[name] = element.checked;\r\n } else {\r\n obj[name] = value;\r\n }\r\n }\r\n }\r\n }\r\n\r\n let obj = {};\r\n const inputs = form.getElementsByTagName('input');\r\n const selects = form.getElementsByTagName('select');\r\n const textAreas = form.getElementsByTagName('textarea');\r\n\r\n convertInputValues(inputs);\r\n convertInputValues(selects);\r\n convertInputValues(textAreas);\r\n\r\n return obj;\r\n};\r\n","'use strict';\r\n\r\nexport function simulateSCPIInvestmentResults(data, onSuccess, onFailed) {\r\n const route = API_ENDPOINT + 'simulateur-scpi/results';\r\n\r\n const body = JSON.stringify(data);\r\n const xmlhttp = new XMLHttpRequest();\r\n\r\n xmlhttp.onreadystatechange = function () {\r\n if (this.readyState !== 4) return;\r\n\r\n if (this.status === 200) {\r\n const response = JSON.parse(this.responseText);\r\n\r\n if (response.value.success === true) {\r\n onSuccess(response.value.body.result);\r\n } else {\r\n onFailed(response.value.messages);\r\n }\r\n\r\n } else {\r\n onFailed();\r\n }\r\n };\r\n\r\n xmlhttp.open('POST', route, true);\r\n xmlhttp.setRequestHeader('Content-Type', 'application/json');\r\n xmlhttp.send(body);\r\n}\r\n","'use strict';\r\n\r\nexport function getScpiSubscriptionAlert(onSuccess, onFailed) {\r\n const route = API_ENDPOINT + 'afficher-alerte-scpi';\r\n const xmlhttp = new XMLHttpRequest();\r\n\r\n xmlhttp.onreadystatechange = function () {\r\n if (this.readyState !== 4) return;\r\n\r\n if (this.status === 200) {\r\n const response = JSON.parse(this.responseText);\r\n onSuccess(response);\r\n } else {\r\n onFailed();\r\n }\r\n };\r\n\r\n xmlhttp.open('POST', route, true);\r\n xmlhttp.setRequestHeader('Content-Type', 'application/json');\r\n xmlhttp.send(null);\r\n}\r\n"],"names":["Element","prototype","matches","msMatchesSelector","webkitMatchesSelector","closest","s","el","this","parentElement","parentNode","nodeType","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","rangeSeparator","weekAbbreviation","scrollTitle","toggleTitle","amPM","yearAriaLabel","monthAriaLabel","hourAriaLabel","minuteAriaLabel","pad","number","length","slice","bool","debounce","fn","wait","t","_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","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","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","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","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","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","isPossiblePrototype","$String","wellKnownSymbol","create","UNSCOPABLES","ArrayPrototype","configurable","callWithSafeIterationClosing","isArrayIteratorMethod","isConstructor","lengthOfArrayLike","createProperty","getIterator","getIteratorMethod","$Array","arrayLike","O","IS_CONSTRUCTOR","argumentsLength","mapfn","mapping","iterator","iteratorMethod","done","toIndexedObject","toAbsoluteIndex","createMethod","IS_INCLUDES","$this","fromIndex","includes","uncurryThis","IndexedObject","arraySpeciesCreate","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","callbackfn","specificCreate","boundFunction","every","find","findIndex","filterReject","fails","V8_VERSION","SPECIES","METHOD_NAME","constructor","foo","Boolean","method","originalArray","C","arraySpeciesConstructor","anObject","iteratorClose","ENTRIES","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","object","stringSlice","it","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","$Object","CORRECT_ARGUMENTS","tryGet","callee","hasOwn","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","exceptions","f","getOwnPropertyDescriptor","getPrototypeOf","DESCRIPTORS","createPropertyDescriptor","bitmap","enumerable","writable","makeBuiltIn","descriptor","defineGlobalProperty","simple","global","unsafe","nonConfigurable","nonWritable","globalThis","EXISTS","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","documentCreateElement","DOMTokenListPrototype","process","Deno","versions","v8","createNonEnumerableProperty","defineBuiltIn","copyConstructorProperties","isForced","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","forced","sham","NATIVE_BIND","FunctionPrototype","Reflect","aCallable","getDescriptor","PROPER","CONFIGURABLE","uncurryThisWithBind","namespace","classof","getMethod","isNullOrUndefined","Iterators","usingIterator","replacer","rawLength","keysLength","root","V","P","check","g","getBuiltIn","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","replacement","feature","detection","normalize","POLYFILL","NATIVE","isPrototypeOf","USE_SYMBOL_AS_UID","$Symbol","kind","innerResult","innerError","IteratorPrototype","setToStringTag","returnThis","IteratorConstructor","NAME","ENUMERABLE_NEXT","$","IS_PURE","FunctionName","createIteratorConstructor","setPrototypeOf","IteratorsCore","PROPER_FUNCTION_NAME","CONFIGURABLE_FUNCTION_NAME","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","entries","PrototypeOfArrayIteratorPrototype","arrayIterator","toLength","InternalStateModule","enforceInternalState","getInternalState","CONFIGURABLE_LENGTH","TEMPLATE","arity","activeXDocument","definePropertiesModule","enumBugKeys","html","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","$getOwnPropertyNames","arraySlice","windowNames","getWindowNames","internalObjectKeys","getOwnPropertySymbols","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","$propertyIsEnumerable","NASHORN_BUG","uncurryThisAccessor","requireObjectCoercible","aPossiblePrototype","CORRECT_SETTER","__proto__","pref","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","group","re","str","raw","groups","sticky","charsAdded","strCopy","multiline","hasIndices","ignoreCase","dotAll","unicode","unicodeSets","regExpFlags","RegExpPrototype","R","$RegExp","MISSED_STICKY","TAG","uid","SHARED","copyright","license","toIntegerOrInfinity","charCodeAt","CONVERT_TO_STRING","first","size","codeAt","$RangeError","RangeError","count","Infinity","symbol","SymbolPrototype","TO_PRIMITIVE","hint","NATIVE_SYMBOL","keyFor","integer","isSymbol","ordinaryToPrimitive","exoticToPrim","toPrimitive","postfix","random","wrappedWellKnownSymbolModule","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","$filter","arrayMethodHasSpeciesSupport","checkCorrectnessOfIteration","iterable","$indexOf","arrayMethodIsStrict","nativeIndexOf","NEGATIVE_ZERO","searchElement","addToUnscopables","defineIterator","createIterResultObject","ARRAY_ITERATOR","setInternalState","iterated","Arguments","nativeJoin","$map","nativeSlice","HAS_SPECIES_SUPPORT","start","end","Constructor","fin","FUNCTION_NAME_EXISTS","defineBuiltInAccessor","nameRE","regExpExec","getReplacerFunction","$stringify","numberToString","tester","low","hi","WRONG_SYMBOLS_CONVERSION","ILL_FORMED_UNICODE","stringifyWithSymbolsFix","$replacer","fixIllFormed","prev","space","thisNumberValue","$repeat","repeat","nativeToFixed","multiply","c2","divide","dataToString","fractionDigits","z","fractDigits","x2","log","$getOwnPropertySymbols","nativeKeys","$toString","getRegExpFlags","TO_STRING","nativeToString","NOT_GENERIC","INCORRECT_NAME","STRING_ITERATOR","point","nativeObjectCreate","getOwnPropertyNamesExternal","defineWellKnownSymbol","defineSymbolToPrimitive","$forEach","HIDDEN","SYMBOL","QObject","nativeGetOwnPropertyDescriptor","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","USE_SETTER","findChild","fallbackDefineProperty","ObjectPrototypeDescriptor","setSymbolDescriptor","description","$defineProperties","IS_OBJECT_PROTOTYPE","useSetter","useSimple","NativeSymbol","EmptyStringDescriptionStore","SymbolWrapper","thisSymbolValue","symbolDescriptiveString","regexp","desc","NATIVE_SYMBOL_REGISTRY","StringToSymbolRegistry","SymbolToStringRegistry","sym","DOMIterables","ArrayIteratorMethods","ArrayValues","handlePrototype","CollectionPrototype","COLLECTION_NAME","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","definition","nmd","paths","_typeof","_newArrowCheck","getMonabanqRates","loanAmount","onSuccess","onFailed","params","xmlhttp","XMLHttpRequest","onreadystatechange","readyState","status","response","responseText","API_ENDPOINT","setRequestHeader","send","ConditionallyDisplayedElement","displayIf","triggerSupportAttributeName","triggerSupportElement","observerConfig","attributes","childList","characterData","MutationObserver","mutations","attributeName","observe","KEYCODE","Dropdown","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","submit","showSubmitCTASpinner","errorAlertElement","grecaptcha","ready","execute","action","then","catch","submitCTAElement","loaderElement","initConditionalElements","conditionallyDisplayedElements","updateDropdownOptions","dropdown","showDropdownSpinner","hideDropdownSpinner","hideSubmitCTASpinner","Modal","getElementsByClassName","isLarger","isAlignCenter","wrapperModifier","closeSymbol","CLOSEMODALSYMBOL","clearContent","wrapperElement","modalCloseCTAElements","hide","show","modalContentWrapperElement","contentWrapperElement","updateStyles","rect","scrollLeft","documentElement","Tooltip","tooltipId","updatePosition","leftPosition","clientWidth","innerWidth","zIndex","isShown","tooltipContent","modal","cookie","toGMTString","getValue","require","monabanqLoanMaxAmount","investment","scpiSimulatorCalculations","distribution","productPricesArray","totalOfProducts","distributionArray","remainingInvestment","cheaperProductPrice","cheaperProductKey","productPrice","remainingInvestmentForProduct","totalCarbonFootprint","productCarbonFootprintsArray","totalInvestment","loanPersonalContribution","maxLoanAmount","taeg","rate","calcTaegMonabanq","monthly","amount","fees","arrayDate","arrayMonthly","arrayDateMonthly","fraisMoinsEmprunt","dateTemp","tempDate","Flow","xirr","guess","irrResult","irrResultDeriv","frac","positive","negative","newRate","epsRate","resultValue","resultRate","iteration","contLoop","XIRR","loanDuration","getMonthly","term","leanAmount","_createForOfIteratorHelper","_arrayLikeToArray","_unsupportedIterableToArray","_n","return","ctasExpandingAccordions","initCtasExpandingAccordions","_loop","ctaExpandingAccordion","CustomEvent","detail","updateBindingsInRows","productItemElements","productItemElementsCopy","distributionInputElement","priceBinding","price","toLocaleString","currency","maximumFractionDigits","minimumFractionDigits","percentageBinding","percentage","carbonFootprintBinding","carbonFootprint","updateTotalsBindings","totalInvestmentBinding","totalCarbonFootprintBinding","fillMonabanqTAEGAndMonthlyInputs","monabanqLoanAmount","monabanqLoanDuration","monabanqLoanWarrantyFeesInputElement","monabanqLoanWarrantyFees","monabanqLoanWarrantyFeesArray","selectionLength","monabanqLoanTAEGInputElement","monabanqLoanMonthlyInputElement","monabanqLoanBookingFees","monabanqLoanRateInputElement","toggleCheckboxesState","checkboxElements","notCheckedCheckboxElements","disabledCheckboxElements","checkedCheckboxElements","checked","parentProductItemElement","selectionLimit","getKeysOfDisabledDistributionInputs","disabledDistributionInputElements","getSelectedProductsPricesArray","keysOfDisabledDistributionInputsArray","selectedProductsPricesArray","updateLoanInputs","monabanqLoanAmountInputElement","monabanqLoanMinAmount","setMaxValueToMonabanqLoanAmountCTAElement","monabanqLoanDurationSelectElement","creditInstitutionLoanDurationInputElement","monabanqLoanPersonalContributionInputElement","form","submitEvent","formData","convertInputValues","elements","inputs","selects","textAreas","convertedFormValuesToJSON","srcElement","distributionInputElements","Distribution","Slug","Value","NetSalary1","NetSalary2","PropertyIncome","OtherIncome","TotalOfFamilyIncomeSplits","IsSingleParentFamily","Hypothesis","monabanqLoanAccordion","creditInstitutionAccordion","MonabanqLoanAmount","MonabanqLoanDuration","MonabanqLoanRate","MonabanqLoanBookingFees","MonabanqLoanWarrantyFees","CreditInstitutionLoanAmount","CreditInstitutionInterestRate","CreditInstitutionLoanDuration","CreditInstitutionLoanType","success","messages","simulateSCPIInvestmentResults","_this5","tooltipCTAElements","tooltips","tooltip","tc_vars","serializeForm","_step","FormData","_iterator","tags","dataToSend","tagInfo","page_name","tagForm","tagDest","tC","initTagCoElement","simulationScpi","exception","matomoData","pushData","_mtm","outerHTML","_this4","confirmElement","closeButton","location","href","displaySubscriptionAlertModal","confirmAlertReadingInputElement","investmentInputElement","distributionCheckboxElements","isAutomaticDistributionDisabled","monabanqLoanBookingFeesInputElement","setMaxValueToCreditInstitutionLoanAmountCTAElement","productsDataArray","monabanqLoanRate","monabanqLoanRatesObjectsForAmount","scpi","slug","sharePrice","filteredRatesObjects","updateLoanInfo","timeout","typingTimeout","ratesObjects","lastOptionElement","_this2","optionElement","_this3","currentInputKey","currentProductDistribution","setAlertAccordionExpansion","setMonabanqLoanAccordionCollapse","conditionAttributeName","setCreditInstitutionLoanAccordionCollapse","setMonabanqLoanAccordionExpansion","setCreditInstitutionLoanAccordionExpansion","setFiscalImpactAccordionExpansion","setFiscalImpactAccordionCollapse","hypothesisRadioInputElements","negativeHypothesisIsSelectedSupportElement","neutralHypothesisIsSelectedSupportElement","positiveHypothesisIsSelectedSupportElement","negativeHypothesisIsSelected","neutralHypothesisIsSelected","positiveHypothesisIsSelected"],"sourceRoot":""}