{
  "version": 3,
  "sources": ["webpack:///webpack/universalModuleDefinition", "webpack:///node_modules/core-js/internals/a-callable.js", "webpack:///node_modules/core-js/internals/a-possible-prototype.js", "webpack:///node_modules/core-js/internals/advance-string-index.js", "webpack:///node_modules/core-js/internals/an-instance.js", "webpack:///node_modules/core-js/internals/an-object.js", "webpack:///node_modules/core-js/internals/array-includes.js", "webpack:///node_modules/core-js/internals/array-iteration.js", "webpack:///node_modules/core-js/internals/array-method-has-species-support.js", "webpack:///node_modules/core-js/internals/array-method-is-strict.js", "webpack:///node_modules/core-js/internals/array-set-length.js", "webpack:///node_modules/core-js/internals/array-species-constructor.js", "webpack:///node_modules/core-js/internals/array-species-create.js", "webpack:///node_modules/core-js/internals/call-with-safe-iteration-closing.js", "webpack:///node_modules/core-js/internals/classof-raw.js", "webpack:///node_modules/core-js/internals/classof.js", "webpack:///node_modules/core-js/internals/copy-constructor-properties.js", "webpack:///node_modules/core-js/internals/correct-prototype-getter.js", "webpack:///node_modules/core-js/internals/create-iter-result-object.js", "webpack:///node_modules/core-js/internals/create-non-enumerable-property.js", "webpack:///node_modules/core-js/internals/create-property-descriptor.js", "webpack:///node_modules/core-js/internals/create-property.js", "webpack:///node_modules/core-js/internals/define-built-in-accessor.js", "webpack:///node_modules/core-js/internals/define-built-in.js", "webpack:///node_modules/core-js/internals/define-built-ins.js", "webpack:///node_modules/core-js/internals/define-global-property.js", "webpack:///node_modules/core-js/internals/descriptors.js", "webpack:///node_modules/core-js/internals/document-create-element.js", "webpack:///node_modules/core-js/internals/does-not-exceed-safe-integer.js", "webpack:///node_modules/core-js/internals/engine-user-agent.js", "webpack:///node_modules/core-js/internals/engine-v8-version.js", "webpack:///node_modules/core-js/internals/enum-bug-keys.js", "webpack:///node_modules/core-js/internals/error-stack-clear.js", "webpack:///node_modules/core-js/internals/error-stack-install.js", "webpack:///node_modules/core-js/internals/error-stack-installable.js", "webpack:///node_modules/core-js/internals/export.js", "webpack:///node_modules/core-js/internals/fails.js", "webpack:///node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js", "webpack:///node_modules/core-js/internals/function-apply.js", "webpack:///node_modules/core-js/internals/function-bind-context.js", "webpack:///node_modules/core-js/internals/function-bind-native.js", "webpack:///node_modules/core-js/internals/function-call.js", "webpack:///node_modules/core-js/internals/function-name.js", "webpack:///node_modules/core-js/internals/function-uncurry-this-accessor.js", "webpack:///node_modules/core-js/internals/function-uncurry-this-clause.js", "webpack:///node_modules/core-js/internals/function-uncurry-this.js", "webpack:///node_modules/core-js/internals/get-built-in.js", "webpack:///node_modules/core-js/internals/get-iterator-direct.js", "webpack:///node_modules/core-js/internals/get-method.js", "webpack:///node_modules/core-js/internals/global.js", "webpack:///node_modules/core-js/internals/has-own-property.js", "webpack:///node_modules/core-js/internals/hidden-keys.js", "webpack:///node_modules/core-js/internals/html.js", "webpack:///node_modules/core-js/internals/ie8-dom-define.js", "webpack:///node_modules/core-js/internals/indexed-object.js", "webpack:///node_modules/core-js/internals/inherit-if-required.js", "webpack:///node_modules/core-js/internals/inspect-source.js", "webpack:///node_modules/core-js/internals/install-error-cause.js", "webpack:///node_modules/core-js/internals/internal-state.js", "webpack:///node_modules/core-js/internals/is-array.js", "webpack:///node_modules/core-js/internals/is-callable.js", "webpack:///node_modules/core-js/internals/is-constructor.js", "webpack:///node_modules/core-js/internals/is-forced.js", "webpack:///node_modules/core-js/internals/is-null-or-undefined.js", "webpack:///node_modules/core-js/internals/is-object.js", "webpack:///node_modules/core-js/internals/is-possible-prototype.js", "webpack:///node_modules/core-js/internals/is-pure.js", "webpack:///node_modules/core-js/internals/is-symbol.js", "webpack:///node_modules/core-js/internals/iterator-close.js", "webpack:///node_modules/core-js/internals/iterator-create-proxy.js", "webpack:///node_modules/core-js/internals/iterator-map.js", "webpack:///node_modules/core-js/internals/iterators-core.js", "webpack:///node_modules/core-js/internals/length-of-array-like.js", "webpack:///node_modules/core-js/internals/make-built-in.js", "webpack:///node_modules/core-js/internals/math-trunc.js", "webpack:///node_modules/core-js/internals/normalize-string-argument.js", "webpack:///node_modules/core-js/internals/object-assign.js", "webpack:///node_modules/core-js/internals/object-create.js", "webpack:///node_modules/core-js/internals/object-define-properties.js", "webpack:///node_modules/core-js/internals/object-define-property.js", "webpack:///node_modules/core-js/internals/object-get-own-property-descriptor.js", "webpack:///node_modules/core-js/internals/object-get-own-property-names.js", "webpack:///node_modules/core-js/internals/object-get-own-property-symbols.js", "webpack:///node_modules/core-js/internals/object-get-prototype-of.js", "webpack:///node_modules/core-js/internals/object-is-prototype-of.js", "webpack:///node_modules/core-js/internals/object-keys-internal.js", "webpack:///node_modules/core-js/internals/object-keys.js", "webpack:///node_modules/core-js/internals/object-property-is-enumerable.js", "webpack:///node_modules/core-js/internals/object-set-prototype-of.js", "webpack:///node_modules/core-js/internals/object-to-string.js", "webpack:///node_modules/core-js/internals/ordinary-to-primitive.js", "webpack:///node_modules/core-js/internals/own-keys.js", "webpack:///node_modules/core-js/internals/proxy-accessor.js", "webpack:///node_modules/core-js/internals/regexp-exec-abstract.js", "webpack:///node_modules/core-js/internals/regexp-exec.js", "webpack:///node_modules/core-js/internals/regexp-flags.js", "webpack:///node_modules/core-js/internals/regexp-sticky-helpers.js", "webpack:///node_modules/core-js/internals/regexp-unsupported-dot-all.js", "webpack:///node_modules/core-js/internals/regexp-unsupported-ncg.js", "webpack:///node_modules/core-js/internals/require-object-coercible.js", "webpack:///node_modules/core-js/internals/shared-key.js", "webpack:///node_modules/core-js/internals/shared-store.js", "webpack:///node_modules/core-js/internals/shared.js", "webpack:///node_modules/core-js/internals/string-multibyte.js", "webpack:///node_modules/core-js/internals/symbol-constructor-detection.js", "webpack:///node_modules/core-js/internals/to-absolute-index.js", "webpack:///node_modules/core-js/internals/to-indexed-object.js", "webpack:///node_modules/core-js/internals/to-integer-or-infinity.js", "webpack:///node_modules/core-js/internals/to-length.js", "webpack:///node_modules/core-js/internals/to-object.js", "webpack:///node_modules/core-js/internals/to-primitive.js", "webpack:///node_modules/core-js/internals/to-property-key.js", "webpack:///node_modules/core-js/internals/to-string-tag-support.js", "webpack:///node_modules/core-js/internals/to-string.js", "webpack:///node_modules/core-js/internals/try-to-string.js", "webpack:///node_modules/core-js/internals/uid.js", "webpack:///node_modules/core-js/internals/use-symbol-as-uid.js", "webpack:///node_modules/core-js/internals/v8-prototype-define-bug.js", "webpack:///node_modules/core-js/internals/weak-map-basic-detection.js", "webpack:///node_modules/core-js/internals/well-known-symbol.js", "webpack:///node_modules/core-js/internals/wrap-error-constructor-with-cause.js", "webpack:///node_modules/core-js/modules/es.array.concat.js", "webpack:///node_modules/core-js/modules/es.array.filter.js", "webpack:///node_modules/core-js/modules/es.array.join.js", "webpack:///node_modules/core-js/modules/es.array.map.js", "webpack:///node_modules/core-js/modules/es.array.push.js", "webpack:///node_modules/core-js/modules/es.error.cause.js", "webpack:///node_modules/core-js/modules/es.function.name.js", "webpack:///node_modules/core-js/modules/es.object.assign.js", "webpack:///node_modules/core-js/modules/es.object.to-string.js", "webpack:///node_modules/core-js/modules/es.regexp.exec.js", "webpack:///node_modules/core-js/modules/es.string.match.js", "webpack:///node_modules/core-js/modules/esnext.iterator.constructor.js", "webpack:///node_modules/core-js/modules/esnext.iterator.filter.js", "webpack:///node_modules/core-js/modules/esnext.iterator.map.js", "webpack:///webpack/bootstrap", "webpack:///webpack/runtime/define%20property%20getters", "webpack:///webpack/runtime/global", "webpack:///webpack/runtime/hasOwnProperty%20shorthand", "webpack:///node_modules/preact/dist/preact.mjs", "webpack:///status.js", "webpack:///dropdown-arrow-down.js", "webpack:///autocomplete.js", "webpack:///wrapper.js", "../../../node_modules/lodash.debounce/index.js", "../../../node_modules/govuk-frontend/src/govuk/common/index.mjs", "../../../node_modules/govuk-frontend/src/govuk/errors/index.mjs", "../../../node_modules/govuk-frontend/src/govuk/component.mjs", "../../../node_modules/govuk-frontend/src/govuk/common/configuration.mjs", "../../../node_modules/govuk-frontend/src/govuk/i18n.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/accordion/accordion.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/button/button.mjs", "../../../node_modules/govuk-frontend/src/govuk/common/closest-attribute-value.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/character-count/character-count.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/checkboxes/checkboxes.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/error-summary/error-summary.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/exit-this-page/exit-this-page.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/file-upload/file-upload.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/header/header.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/notification-banner/notification-banner.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/password-input/password-input.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/radios/radios.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/service-navigation/service-navigation.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/skip-link/skip-link.mjs", "../../../node_modules/govuk-frontend/src/govuk/components/tabs/tabs.mjs", "../../../node_modules/govuk-frontend/src/govuk/init.mjs", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/controllers/autocomplete_controller.js", "../../javascript/utils/request_helper.js", "../../javascript/controllers/filter_search_controller.js", "../../javascript/controllers/filter_controller.js", "../../javascript/controllers/index.js", "../../javascript/application.js"],
  "sourcesContent": ["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"accessibleAutocomplete\"] = factory();\n\telse\n\t\troot[\"accessibleAutocomplete\"] = factory();\n})(self, function() {\nreturn ", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n  if (isCallable(argument)) return argument;\n  throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n", "'use strict';\nvar isPossiblePrototype = require('../internals/is-possible-prototype');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n  if (isPossiblePrototype(argument)) return argument;\n  throw new $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n", "'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\n\n// `AdvanceStringIndex` abstract operation\n// https://tc39.es/ecma262/#sec-advancestringindex\nmodule.exports = function (S, index, unicode) {\n  return index + (unicode ? charAt(S, index).length : 1);\n};\n", "'use strict';\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n  if (isPrototypeOf(Prototype, it)) return it;\n  throw new $TypeError('Incorrect invocation');\n};\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n  if (isObject(argument)) return argument;\n  throw new $TypeError($String(argument) + ' is not an object');\n};\n", "'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIndexedObject($this);\n    var length = lengthOfArrayLike(O);\n    if (length === 0) return !IS_INCLUDES && -1;\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare -- NaN check\n    if (IS_INCLUDES && el !== el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare -- NaN check\n      if (value !== value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) {\n      if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.includes` method\n  // https://tc39.es/ecma262/#sec-array.prototype.includes\n  includes: createMethod(true),\n  // `Array.prototype.indexOf` method\n  // https://tc39.es/ecma262/#sec-array.prototype.indexof\n  indexOf: createMethod(false)\n};\n", "'use strict';\nvar bind = require('../internals/function-bind-context');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = uncurryThis([].push);\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n  var IS_MAP = TYPE === 1;\n  var IS_FILTER = TYPE === 2;\n  var IS_SOME = TYPE === 3;\n  var IS_EVERY = TYPE === 4;\n  var IS_FIND_INDEX = TYPE === 6;\n  var IS_FILTER_REJECT = TYPE === 7;\n  var NO_HOLES = TYPE === 5 || IS_FIND_INDEX;\n  return function ($this, callbackfn, that, specificCreate) {\n    var O = toObject($this);\n    var self = IndexedObject(O);\n    var length = lengthOfArrayLike(self);\n    var boundFunction = bind(callbackfn, that);\n    var index = 0;\n    var create = specificCreate || arraySpeciesCreate;\n    var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n    var value, result;\n    for (;length > index; index++) if (NO_HOLES || index in self) {\n      value = self[index];\n      result = boundFunction(value, index, O);\n      if (TYPE) {\n        if (IS_MAP) target[index] = result; // map\n        else if (result) switch (TYPE) {\n          case 3: return true;              // some\n          case 5: return value;             // find\n          case 6: return index;             // findIndex\n          case 2: push(target, value);      // filter\n        } else switch (TYPE) {\n          case 4: return false;             // every\n          case 7: push(target, value);      // filterReject\n        }\n      }\n    }\n    return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n  };\n};\n\nmodule.exports = {\n  // `Array.prototype.forEach` method\n  // https://tc39.es/ecma262/#sec-array.prototype.foreach\n  forEach: createMethod(0),\n  // `Array.prototype.map` method\n  // https://tc39.es/ecma262/#sec-array.prototype.map\n  map: createMethod(1),\n  // `Array.prototype.filter` method\n  // https://tc39.es/ecma262/#sec-array.prototype.filter\n  filter: createMethod(2),\n  // `Array.prototype.some` method\n  // https://tc39.es/ecma262/#sec-array.prototype.some\n  some: createMethod(3),\n  // `Array.prototype.every` method\n  // https://tc39.es/ecma262/#sec-array.prototype.every\n  every: createMethod(4),\n  // `Array.prototype.find` method\n  // https://tc39.es/ecma262/#sec-array.prototype.find\n  find: createMethod(5),\n  // `Array.prototype.findIndex` method\n  // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n  findIndex: createMethod(6),\n  // `Array.prototype.filterReject` method\n  // https://github.com/tc39/proposal-array-filtering\n  filterReject: createMethod(7)\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n  // We can't use this feature detection in V8 since it causes\n  // deoptimization and serious performance degradation\n  // https://github.com/zloirock/core-js/issues/677\n  return V8_VERSION >= 51 || !fails(function () {\n    var array = [];\n    var constructor = array.constructor = {};\n    constructor[SPECIES] = function () {\n      return { foo: 1 };\n    };\n    return array[METHOD_NAME](Boolean).foo !== 1;\n  });\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n  var method = [][METHOD_NAME];\n  return !!method && fails(function () {\n    // eslint-disable-next-line no-useless-call -- required for testing\n    method.call(null, argument || function () { return 1; }, 1);\n  });\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar isArray = require('../internals/is-array');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Safari < 13 does not throw an error in this case\nvar SILENT_ON_NON_WRITABLE_LENGTH_SET = DESCRIPTORS && !function () {\n  // makes no sense without proper strict mode support\n  if (this !== undefined) return true;\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).length = 1;\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n}();\n\nmodule.exports = SILENT_ON_NON_WRITABLE_LENGTH_SET ? function (O, length) {\n  if (isArray(O) && !getOwnPropertyDescriptor(O, 'length').writable) {\n    throw new $TypeError('Cannot set read only .length');\n  } return O.length = length;\n} : function (O, length) {\n  return O.length = length;\n};\n", "'use strict';\nvar isArray = require('../internals/is-array');\nvar isConstructor = require('../internals/is-constructor');\nvar isObject = require('../internals/is-object');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\nvar $Array = Array;\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n  var C;\n  if (isArray(originalArray)) {\n    C = originalArray.constructor;\n    // cross-realm fallback\n    if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;\n    else if (isObject(C)) {\n      C = C[SPECIES];\n      if (C === null) C = undefined;\n    }\n  } return C === undefined ? $Array : C;\n};\n", "'use strict';\nvar arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n  return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n", "'use strict';\nvar anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n  try {\n    return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n  } catch (error) {\n    iteratorClose(iterator, 'throw', error);\n  }\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n  return stringSlice(toString(it), 8, -1);\n};\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) === 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n  var O, tag, result;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n    // builtinTag case\n    : CORRECT_ARGUMENTS ? classofRaw(O)\n    // ES3 arguments fallback\n    : (result = classofRaw(O)) === 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n  var keys = ownKeys(source);\n  var defineProperty = definePropertyModule.f;\n  var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n  for (var i = 0; i < keys.length; i++) {\n    var key = keys[i];\n    if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n      defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n    }\n  }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  function F() { /* empty */ }\n  F.prototype.constructor = null;\n  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n  return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n", "'use strict';\n// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n  return { value: value, done: done };\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n  return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n", "'use strict';\nmodule.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n  if (DESCRIPTORS) definePropertyModule.f(object, key, createPropertyDescriptor(0, value));\n  else object[key] = value;\n};\n", "'use strict';\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n  if (descriptor.get) makeBuiltIn(descriptor.get, name, { getter: true });\n  if (descriptor.set) makeBuiltIn(descriptor.set, name, { setter: true });\n  return defineProperty.f(target, name, descriptor);\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n  if (!options) options = {};\n  var simple = options.enumerable;\n  var name = options.name !== undefined ? options.name : key;\n  if (isCallable(value)) makeBuiltIn(value, name, options);\n  if (options.global) {\n    if (simple) O[key] = value;\n    else defineGlobalProperty(key, value);\n  } else {\n    try {\n      if (!options.unsafe) delete O[key];\n      else if (O[key]) simple = true;\n    } catch (error) { /* empty */ }\n    if (simple) O[key] = value;\n    else definePropertyModule.f(O, key, {\n      value: value,\n      enumerable: false,\n      configurable: !options.nonConfigurable,\n      writable: !options.nonWritable\n    });\n  } return O;\n};\n", "'use strict';\nvar defineBuiltIn = require('../internals/define-built-in');\n\nmodule.exports = function (target, src, options) {\n  for (var key in src) defineBuiltIn(target, key, src[key], options);\n  return target;\n};\n", "'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n  try {\n    defineProperty(global, key, { value: value, configurable: true, writable: true });\n  } catch (error) {\n    global[key] = value;\n  } return value;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n  return EXISTS ? document.createElement(it) : {};\n};\n", "'use strict';\nvar $TypeError = TypeError;\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991\n\nmodule.exports = function (it) {\n  if (it > MAX_SAFE_INTEGER) throw $TypeError('Maximum allowed index exceeded');\n  return it;\n};\n", "'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n", "'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n  match = v8.split('.');\n  // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n  // but their correct versions are not interesting for us\n  version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n  match = userAgent.match(/Edge\\/(\\d+)/);\n  if (!match || match[1] >= 74) {\n    match = userAgent.match(/Chrome\\/(\\d+)/);\n    if (match) version = +match[1];\n  }\n}\n\nmodule.exports = version;\n", "'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n  'constructor',\n  'hasOwnProperty',\n  'isPrototypeOf',\n  'propertyIsEnumerable',\n  'toLocaleString',\n  'toString',\n  'valueOf'\n];\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String(new $Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n  if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n    while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n  } return stack;\n};\n", "'use strict';\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\n// non-standard V8\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n  if (ERROR_STACK_INSTALLABLE) {\n    if (captureStackTrace) captureStackTrace(error, C);\n    else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n  }\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n  var error = new Error('a');\n  if (!('stack' in error)) return true;\n  // eslint-disable-next-line es/no-object-defineproperty -- safe\n  Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n  return error.stack !== 7;\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n  options.target         - name of the target object\n  options.global         - target is the global object\n  options.stat           - export as static methods of target\n  options.proto          - export as prototype methods of target\n  options.real           - real prototype method for the `pure` version\n  options.forced         - export even if the native feature is available\n  options.bind           - bind methods to the target, required for the `pure` version\n  options.wrap           - wrap constructors to preventing global pollution, required for the `pure` version\n  options.unsafe         - use the simple assignment of property instead of delete + defineProperty\n  options.sham           - add a flag to not completely full polyfills\n  options.enumerable     - export as enumerable property\n  options.dontCallGetSet - prevent calling a getter on target\n  options.name           - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n  var TARGET = options.target;\n  var GLOBAL = options.global;\n  var STATIC = options.stat;\n  var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n  if (GLOBAL) {\n    target = global;\n  } else if (STATIC) {\n    target = global[TARGET] || defineGlobalProperty(TARGET, {});\n  } else {\n    target = global[TARGET] && global[TARGET].prototype;\n  }\n  if (target) for (key in source) {\n    sourceProperty = source[key];\n    if (options.dontCallGetSet) {\n      descriptor = getOwnPropertyDescriptor(target, key);\n      targetProperty = descriptor && descriptor.value;\n    } else targetProperty = target[key];\n    FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n    // contained in target\n    if (!FORCED && targetProperty !== undefined) {\n      if (typeof sourceProperty == typeof targetProperty) continue;\n      copyConstructorProperties(sourceProperty, targetProperty);\n    }\n    // add a flag to not completely full polyfills\n    if (options.sham || (targetProperty && targetProperty.sham)) {\n      createNonEnumerableProperty(sourceProperty, 'sham', true);\n    }\n    defineBuiltIn(target, key, sourceProperty, options);\n  }\n};\n", "'use strict';\nmodule.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (error) {\n    return true;\n  }\n};\n", "'use strict';\n// TODO: Remove from `core-js@4` since it's moved to entry points\nrequire('../modules/es.regexp.exec');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar regexpExec = require('../internals/regexp-exec');\nvar fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nvar SPECIES = wellKnownSymbol('species');\nvar RegExpPrototype = RegExp.prototype;\n\nmodule.exports = function (KEY, exec, FORCED, SHAM) {\n  var SYMBOL = wellKnownSymbol(KEY);\n\n  var DELEGATES_TO_SYMBOL = !fails(function () {\n    // String methods call symbol-named RegExp methods\n    var O = {};\n    O[SYMBOL] = function () { return 7; };\n    return ''[KEY](O) !== 7;\n  });\n\n  var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n    // Symbol-named RegExp methods call .exec\n    var execCalled = false;\n    var re = /a/;\n\n    if (KEY === 'split') {\n      // We can't use real regex here since it causes deoptimization\n      // and serious performance degradation in V8\n      // https://github.com/zloirock/core-js/issues/306\n      re = {};\n      // RegExp[@@split] doesn't call the regex's exec method, but first creates\n      // a new one. We need to return the patched regex when creating the new one.\n      re.constructor = {};\n      re.constructor[SPECIES] = function () { return re; };\n      re.flags = '';\n      re[SYMBOL] = /./[SYMBOL];\n    }\n\n    re.exec = function () {\n      execCalled = true;\n      return null;\n    };\n\n    re[SYMBOL]('');\n    return !execCalled;\n  });\n\n  if (\n    !DELEGATES_TO_SYMBOL ||\n    !DELEGATES_TO_EXEC ||\n    FORCED\n  ) {\n    var nativeRegExpMethod = /./[SYMBOL];\n    var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n      var $exec = regexp.exec;\n      if ($exec === regexpExec || $exec === RegExpPrototype.exec) {\n        if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n          // The native String method already delegates to @@method (this\n          // polyfilled function), leasing to infinite recursion.\n          // We avoid it by directly calling the native @@method method.\n          return { done: true, value: call(nativeRegExpMethod, regexp, str, arg2) };\n        }\n        return { done: true, value: call(nativeMethod, str, regexp, arg2) };\n      }\n      return { done: false };\n    });\n\n    defineBuiltIn(String.prototype, KEY, methods[0]);\n    defineBuiltIn(RegExpPrototype, SYMBOL, methods[1]);\n  }\n\n  if (SHAM) createNonEnumerableProperty(RegExpPrototype[SYMBOL], 'sham', true);\n};\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n  return call.apply(apply, arguments);\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n  aCallable(fn);\n  return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n", "'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n  // eslint-disable-next-line es/no-function-prototype-bind -- safe\n  var test = (function () { /* empty */ }).bind();\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n  return call.apply(call, arguments);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n  EXISTS: EXISTS,\n  PROPER: PROPER,\n  CONFIGURABLE: CONFIGURABLE\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n  try {\n    // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n    return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n  } catch (error) { /* empty */ }\n};\n", "'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n  // Nashorn bug:\n  //   https://github.com/zloirock/core-js/issues/1128\n  //   https://github.com/zloirock/core-js/issues/1130\n  if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n", "'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n  return function () {\n    return call.apply(fn, arguments);\n  };\n};\n", "'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n  return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n  return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n", "'use strict';\n// `GetIteratorDirect(obj)` abstract operation\n// https://tc39.es/proposal-iterator-helpers/#sec-getiteratordirect\nmodule.exports = function (obj) {\n  return {\n    iterator: obj,\n    next: obj.next,\n    done: false\n  };\n};\n", "'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n  var func = V[P];\n  return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n", "'use strict';\nvar check = function (it) {\n  return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n  // eslint-disable-next-line es/no-global-this -- safe\n  check(typeof globalThis == 'object' && globalThis) ||\n  check(typeof window == 'object' && window) ||\n  // eslint-disable-next-line no-restricted-globals -- safe\n  check(typeof self == 'object' && self) ||\n  check(typeof global == 'object' && global) ||\n  check(typeof this == 'object' && this) ||\n  // eslint-disable-next-line no-new-func -- fallback\n  (function () { return this; })() || Function('return this')();\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n  return hasOwnProperty(toObject(it), key);\n};\n", "'use strict';\nmodule.exports = {};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(createElement('div'), 'a', {\n    get: function () { return 7; }\n  }).a !== 7;\n});\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n  // eslint-disable-next-line no-prototype-builtins -- safe\n  return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n  return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\n\n// makes subclassing work correct for wrapped built-ins\nmodule.exports = function ($this, dummy, Wrapper) {\n  var NewTarget, NewTargetPrototype;\n  if (\n    // it can work only with native `setPrototypeOf`\n    setPrototypeOf &&\n    // we haven't completely correct pre-ES6 way for getting `new.target`, so use this\n    isCallable(NewTarget = dummy.constructor) &&\n    NewTarget !== Wrapper &&\n    isObject(NewTargetPrototype = NewTarget.prototype) &&\n    NewTargetPrototype !== Wrapper.prototype\n  ) setPrototypeOf($this, NewTargetPrototype);\n  return $this;\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n  store.inspectSource = function (it) {\n    return functionToString(it);\n  };\n}\n\nmodule.exports = store.inspectSource;\n", "'use strict';\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n  if (isObject(options) && 'cause' in options) {\n    createNonEnumerableProperty(O, 'cause', options.cause);\n  }\n};\n", "'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n  return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n  return function (it) {\n    var state;\n    if (!isObject(it) || (state = get(it)).type !== TYPE) {\n      throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n    } return state;\n  };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n  var store = shared.state || (shared.state = new WeakMap());\n  /* eslint-disable no-self-assign -- prototype methods protection */\n  store.get = store.get;\n  store.has = store.has;\n  store.set = store.set;\n  /* eslint-enable no-self-assign -- prototype methods protection */\n  set = function (it, metadata) {\n    if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    store.set(it, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return store.get(it) || {};\n  };\n  has = function (it) {\n    return store.has(it);\n  };\n} else {\n  var STATE = sharedKey('state');\n  hiddenKeys[STATE] = true;\n  set = function (it, metadata) {\n    if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n    metadata.facade = it;\n    createNonEnumerableProperty(it, STATE, metadata);\n    return metadata;\n  };\n  get = function (it) {\n    return hasOwn(it, STATE) ? it[STATE] : {};\n  };\n  has = function (it) {\n    return hasOwn(it, STATE);\n  };\n}\n\nmodule.exports = {\n  set: set,\n  get: get,\n  has: has,\n  enforce: enforce,\n  getterFor: getterFor\n};\n", "'use strict';\nvar classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(argument) {\n  return classof(argument) === 'Array';\n};\n", "'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n  return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n  return typeof argument == 'function';\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.test(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  try {\n    construct(noop, [], argument);\n    return true;\n  } catch (error) {\n    return false;\n  }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n  if (!isCallable(argument)) return false;\n  switch (classof(argument)) {\n    case 'AsyncFunction':\n    case 'GeneratorFunction':\n    case 'AsyncGeneratorFunction': return false;\n  }\n  try {\n    // we can't check .prototype since constructors produced by .bind haven't it\n    // `Function#toString` throws on some built-it function in some legacy engines\n    // (for example, `DOMQuad` and similar in FF41-)\n    return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n  } catch (error) {\n    return true;\n  }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n  var called;\n  return isConstructorModern(isConstructorModern.call)\n    || !isConstructorModern(Object)\n    || !isConstructorModern(function () { called = true; })\n    || called;\n}) ? isConstructorLegacy : isConstructorModern;\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n  var value = data[normalize(feature)];\n  return value === POLYFILL ? true\n    : value === NATIVE ? false\n    : isCallable(detection) ? fails(detection)\n    : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n  return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n", "'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n  return it === null || it === undefined;\n};\n", "'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n  return typeof it == 'object' ? it !== null : isCallable(it);\n};\n", "'use strict';\nvar isObject = require('../internals/is-object');\n\nmodule.exports = function (argument) {\n  return isObject(argument) || argument === null;\n};\n", "'use strict';\nmodule.exports = false;\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n  return typeof it == 'symbol';\n} : function (it) {\n  var $Symbol = getBuiltIn('Symbol');\n  return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n  var innerResult, innerError;\n  anObject(iterator);\n  try {\n    innerResult = getMethod(iterator, 'return');\n    if (!innerResult) {\n      if (kind === 'throw') throw value;\n      return value;\n    }\n    innerResult = call(innerResult, iterator);\n  } catch (error) {\n    innerError = true;\n    innerResult = error;\n  }\n  if (kind === 'throw') throw value;\n  if (innerError) throw innerResult;\n  anObject(innerResult);\n  return value;\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIns = require('../internals/define-built-ins');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar InternalStateModule = require('../internals/internal-state');\nvar getMethod = require('../internals/get-method');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ITERATOR_HELPER = 'IteratorHelper';\nvar WRAP_FOR_VALID_ITERATOR = 'WrapForValidIterator';\nvar setInternalState = InternalStateModule.set;\n\nvar createIteratorProxyPrototype = function (IS_ITERATOR) {\n  var getInternalState = InternalStateModule.getterFor(IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER);\n\n  return defineBuiltIns(create(IteratorPrototype), {\n    next: function next() {\n      var state = getInternalState(this);\n      // for simplification:\n      //   for `%WrapForValidIteratorPrototype%.next` our `nextHandler` returns `IterResultObject`\n      //   for `%IteratorHelperPrototype%.next` - just a value\n      if (IS_ITERATOR) return state.nextHandler();\n      try {\n        var result = state.done ? undefined : state.nextHandler();\n        return createIterResultObject(result, state.done);\n      } catch (error) {\n        state.done = true;\n        throw error;\n      }\n    },\n    'return': function () {\n      var state = getInternalState(this);\n      var iterator = state.iterator;\n      state.done = true;\n      if (IS_ITERATOR) {\n        var returnMethod = getMethod(iterator, 'return');\n        return returnMethod ? call(returnMethod, iterator) : createIterResultObject(undefined, true);\n      }\n      if (state.inner) try {\n        iteratorClose(state.inner.iterator, 'normal');\n      } catch (error) {\n        return iteratorClose(iterator, 'throw', error);\n      }\n      iteratorClose(iterator, 'normal');\n      return createIterResultObject(undefined, true);\n    }\n  });\n};\n\nvar WrapForValidIteratorPrototype = createIteratorProxyPrototype(true);\nvar IteratorHelperPrototype = createIteratorProxyPrototype(false);\n\ncreateNonEnumerableProperty(IteratorHelperPrototype, TO_STRING_TAG, 'Iterator Helper');\n\nmodule.exports = function (nextHandler, IS_ITERATOR) {\n  var IteratorProxy = function Iterator(record, state) {\n    if (state) {\n      state.iterator = record.iterator;\n      state.next = record.next;\n    } else state = record;\n    state.type = IS_ITERATOR ? WRAP_FOR_VALID_ITERATOR : ITERATOR_HELPER;\n    state.nextHandler = nextHandler;\n    state.counter = 0;\n    state.done = false;\n    setInternalState(this, state);\n  };\n\n  IteratorProxy.prototype = IS_ITERATOR ? WrapForValidIteratorPrototype : IteratorHelperPrototype;\n\n  return IteratorProxy;\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var result = anObject(call(this.next, iterator));\n  var done = this.done = !!result.done;\n  if (!done) return callWithSafeIterationClosing(iterator, this.mapper, [result.value, this.counter++], true);\n});\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\nmodule.exports = function map(mapper) {\n  anObject(this);\n  aCallable(mapper);\n  return new IteratorProxy(getIteratorDirect(this), {\n    mapper: mapper\n  });\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n  arrayIterator = [].keys();\n  // Safari 8 has buggy iterators w/o `next`\n  if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n  else {\n    PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n    if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n  }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n  var test = {};\n  // FF44- legacy iterators case\n  return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n  defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n    return this;\n  });\n}\n\nmodule.exports = {\n  IteratorPrototype: IteratorPrototype,\n  BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n", "'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n  return toLength(obj.length);\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n  return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n  if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n    name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n  }\n  if (options && options.getter) name = 'get ' + name;\n  if (options && options.setter) name = 'set ' + name;\n  if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n    if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n    else value.name = name;\n  }\n  if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n    defineProperty(value, 'length', { value: options.arity });\n  }\n  try {\n    if (options && hasOwn(options, 'constructor') && options.constructor) {\n      if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n    // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n    } else if (value.prototype) value.prototype = undefined;\n  } catch (error) { /* empty */ }\n  var state = enforceInternalState(value);\n  if (!hasOwn(state, 'source')) {\n    state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n  } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n  return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n", "'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n  var n = +x;\n  return (n > 0 ? floor : ceil)(n);\n};\n", "'use strict';\nvar toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n  return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar call = require('../internals/function-call');\nvar fails = require('../internals/fails');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar toObject = require('../internals/to-object');\nvar IndexedObject = require('../internals/indexed-object');\n\n// eslint-disable-next-line es/no-object-assign -- safe\nvar $assign = Object.assign;\n// eslint-disable-next-line es/no-object-defineproperty -- required for testing\nvar defineProperty = Object.defineProperty;\nvar concat = uncurryThis([].concat);\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\nmodule.exports = !$assign || fails(function () {\n  // should have correct order of operations (Edge bug)\n  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {\n    enumerable: true,\n    get: function () {\n      defineProperty(this, 'b', {\n        value: 3,\n        enumerable: false\n      });\n    }\n  }), { b: 2 })).b !== 1) return true;\n  // should work with symbols and should have deterministic property order (V8 bug)\n  var A = {};\n  var B = {};\n  // eslint-disable-next-line es/no-symbol -- safe\n  var symbol = Symbol('assign detection');\n  var alphabet = 'abcdefghijklmnopqrst';\n  A[symbol] = 7;\n  alphabet.split('').forEach(function (chr) { B[chr] = chr; });\n  return $assign({}, A)[symbol] !== 7 || objectKeys($assign({}, B)).join('') !== alphabet;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`\n  var T = toObject(target);\n  var argumentsLength = arguments.length;\n  var index = 1;\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  var propertyIsEnumerable = propertyIsEnumerableModule.f;\n  while (argumentsLength > index) {\n    var S = IndexedObject(arguments[index++]);\n    var keys = getOwnPropertySymbols ? concat(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);\n    var length = keys.length;\n    var j = 0;\n    var key;\n    while (length > j) {\n      key = keys[j++];\n      if (!DESCRIPTORS || call(propertyIsEnumerable, S, key)) T[key] = S[key];\n    }\n  } return T;\n} : $assign;\n", "'use strict';\n/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n  return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n  activeXDocument.write(scriptTag(''));\n  activeXDocument.close();\n  var temp = activeXDocument.parentWindow.Object;\n  activeXDocument = null; // avoid memory leak\n  return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = documentCreateElement('iframe');\n  var JS = 'java' + SCRIPT + ':';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  html.appendChild(iframe);\n  // https://github.com/zloirock/core-js/issues/475\n  iframe.src = String(JS);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(scriptTag('document.F=Object'));\n  iframeDocument.close();\n  return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n  try {\n    activeXDocument = new ActiveXObject('htmlfile');\n  } catch (error) { /* ignore */ }\n  NullProtoObject = typeof document != 'undefined'\n    ? document.domain && activeXDocument\n      ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n      : NullProtoObjectViaIFrame()\n    : NullProtoObjectViaActiveX(activeXDocument); // WSH\n  var length = enumBugKeys.length;\n  while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n  return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    EmptyConstructor[PROTOTYPE] = anObject(O);\n    result = new EmptyConstructor();\n    EmptyConstructor[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = NullProtoObject();\n  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var props = toIndexedObject(Properties);\n  var keys = objectKeys(Properties);\n  var length = keys.length;\n  var index = 0;\n  var key;\n  while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n  return O;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n    var current = $getOwnPropertyDescriptor(O, P);\n    if (current && current[WRITABLE]) {\n      O[P] = Attributes.value;\n      Attributes = {\n        configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n        enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n        writable: false\n      };\n    }\n  } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPropertyKey(P);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return $defineProperty(O, P, Attributes);\n  } catch (error) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n  O = toIndexedObject(O);\n  P = toPropertyKey(P);\n  if (IE8_DOM_DEFINE) try {\n    return $getOwnPropertyDescriptor(O, P);\n  } catch (error) { /* empty */ }\n  if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n", "'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n  return internalObjectKeys(O, hiddenKeys);\n};\n", "'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n", "'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n  var object = toObject(O);\n  if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n  var constructor = object.constructor;\n  if (isCallable(constructor) && object instanceof constructor) {\n    return constructor.prototype;\n  } return object instanceof $Object ? ObjectPrototype : null;\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n  var O = toIndexedObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (hasOwn(O, key = names[i++])) {\n    ~indexOf(result, key) || push(result, key);\n  }\n  return result;\n};\n", "'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n  return internalObjectKeys(O, enumBugKeys);\n};\n", "'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n  var descriptor = getOwnPropertyDescriptor(this, V);\n  return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n", "'use strict';\n/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n  var CORRECT_SETTER = false;\n  var test = {};\n  var setter;\n  try {\n    setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n    setter(test, []);\n    CORRECT_SETTER = test instanceof Array;\n  } catch (error) { /* empty */ }\n  return function setPrototypeOf(O, proto) {\n    anObject(O);\n    aPossiblePrototype(proto);\n    if (CORRECT_SETTER) setter(O, proto);\n    else O.__proto__ = proto;\n    return O;\n  };\n}() : undefined);\n", "'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n  return '[object ' + classof(this) + ']';\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n  var fn, val;\n  if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n  if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n  throw new $TypeError(\"Can't convert object to primitive value\");\n};\n", "'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n  var keys = getOwnPropertyNamesModule.f(anObject(it));\n  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n  return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n", "'use strict';\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (Target, Source, key) {\n  key in Target || defineProperty(Target, key, {\n    configurable: true,\n    get: function () { return Source[key]; },\n    set: function (it) { Source[key] = it; }\n  });\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof-raw');\nvar regexpExec = require('../internals/regexp-exec');\n\nvar $TypeError = TypeError;\n\n// `RegExpExec` abstract operation\n// https://tc39.es/ecma262/#sec-regexpexec\nmodule.exports = function (R, S) {\n  var exec = R.exec;\n  if (isCallable(exec)) {\n    var result = call(exec, R, S);\n    if (result !== null) anObject(result);\n    return result;\n  }\n  if (classof(R) === 'RegExp') return call(regexpExec, R, S);\n  throw new $TypeError('RegExp#exec called on incompatible receiver');\n};\n", "'use strict';\n/* eslint-disable regexp/no-empty-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */\n/* eslint-disable regexp/no-useless-quantifier -- testing */\nvar call = require('../internals/function-call');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toString = require('../internals/to-string');\nvar regexpFlags = require('../internals/regexp-flags');\nvar stickyHelpers = require('../internals/regexp-sticky-helpers');\nvar shared = require('../internals/shared');\nvar create = require('../internals/object-create');\nvar getInternalState = require('../internals/internal-state').get;\nvar UNSUPPORTED_DOT_ALL = require('../internals/regexp-unsupported-dot-all');\nvar UNSUPPORTED_NCG = require('../internals/regexp-unsupported-ncg');\n\nvar nativeReplace = shared('native-string-replace', String.prototype.replace);\nvar nativeExec = RegExp.prototype.exec;\nvar patchedExec = nativeExec;\nvar charAt = uncurryThis(''.charAt);\nvar indexOf = uncurryThis(''.indexOf);\nvar replace = uncurryThis(''.replace);\nvar stringSlice = uncurryThis(''.slice);\n\nvar UPDATES_LAST_INDEX_WRONG = (function () {\n  var re1 = /a/;\n  var re2 = /b*/g;\n  call(nativeExec, re1, 'a');\n  call(nativeExec, re2, 'a');\n  return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n})();\n\nvar UNSUPPORTED_Y = stickyHelpers.BROKEN_CARET;\n\n// nonparticipating capturing group, copied from es5-shim's String#split patch.\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\n\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y || UNSUPPORTED_DOT_ALL || UNSUPPORTED_NCG;\n\nif (PATCH) {\n  patchedExec = function exec(string) {\n    var re = this;\n    var state = getInternalState(re);\n    var str = toString(string);\n    var raw = state.raw;\n    var result, reCopy, lastIndex, match, i, object, group;\n\n    if (raw) {\n      raw.lastIndex = re.lastIndex;\n      result = call(patchedExec, raw, str);\n      re.lastIndex = raw.lastIndex;\n      return result;\n    }\n\n    var groups = state.groups;\n    var sticky = UNSUPPORTED_Y && re.sticky;\n    var flags = call(regexpFlags, re);\n    var source = re.source;\n    var charsAdded = 0;\n    var strCopy = str;\n\n    if (sticky) {\n      flags = replace(flags, 'y', '');\n      if (indexOf(flags, 'g') === -1) {\n        flags += 'g';\n      }\n\n      strCopy = stringSlice(str, re.lastIndex);\n      // Support anchored sticky behavior.\n      if (re.lastIndex > 0 && (!re.multiline || re.multiline && charAt(str, re.lastIndex - 1) !== '\\n')) {\n        source = '(?: ' + source + ')';\n        strCopy = ' ' + strCopy;\n        charsAdded++;\n      }\n      // ^(? + rx + ) is needed, in combination with some str slicing, to\n      // simulate the 'y' flag.\n      reCopy = new RegExp('^(?:' + source + ')', flags);\n    }\n\n    if (NPCG_INCLUDED) {\n      reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n    }\n    if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n\n    match = call(nativeExec, sticky ? reCopy : re, strCopy);\n\n    if (sticky) {\n      if (match) {\n        match.input = stringSlice(match.input, charsAdded);\n        match[0] = stringSlice(match[0], charsAdded);\n        match.index = re.lastIndex;\n        re.lastIndex += match[0].length;\n      } else re.lastIndex = 0;\n    } else if (UPDATES_LAST_INDEX_WRONG && match) {\n      re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n    }\n    if (NPCG_INCLUDED && match && match.length > 1) {\n      // Fix browsers whose `exec` methods don't consistently return `undefined`\n      // for NPCG, like IE8. NOTE: This doesn't work for /(.?)?/\n      call(nativeReplace, match[0], reCopy, function () {\n        for (i = 1; i < arguments.length - 2; i++) {\n          if (arguments[i] === undefined) match[i] = undefined;\n        }\n      });\n    }\n\n    if (match && groups) {\n      match.groups = object = create(null);\n      for (i = 0; i < groups.length; i++) {\n        group = groups[i];\n        object[group[0]] = match[group[1]];\n      }\n    }\n\n    return match;\n  };\n}\n\nmodule.exports = patchedExec;\n", "'use strict';\nvar anObject = require('../internals/an-object');\n\n// `RegExp.prototype.flags` getter implementation\n// https://tc39.es/ecma262/#sec-get-regexp.prototype.flags\nmodule.exports = function () {\n  var that = anObject(this);\n  var result = '';\n  if (that.hasIndices) result += 'd';\n  if (that.global) result += 'g';\n  if (that.ignoreCase) result += 'i';\n  if (that.multiline) result += 'm';\n  if (that.dotAll) result += 's';\n  if (that.unicode) result += 'u';\n  if (that.unicodeSets) result += 'v';\n  if (that.sticky) result += 'y';\n  return result;\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nvar UNSUPPORTED_Y = fails(function () {\n  var re = $RegExp('a', 'y');\n  re.lastIndex = 2;\n  return re.exec('abcd') !== null;\n});\n\n// UC Browser bug\n// https://github.com/zloirock/core-js/issues/1008\nvar MISSED_STICKY = UNSUPPORTED_Y || fails(function () {\n  return !$RegExp('a', 'y').sticky;\n});\n\nvar BROKEN_CARET = UNSUPPORTED_Y || fails(function () {\n  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n  var re = $RegExp('^r', 'gy');\n  re.lastIndex = 2;\n  return re.exec('str') !== null;\n});\n\nmodule.exports = {\n  BROKEN_CARET: BROKEN_CARET,\n  MISSED_STICKY: MISSED_STICKY,\n  UNSUPPORTED_Y: UNSUPPORTED_Y\n};\n", "'use strict';\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('.', 's');\n  return !(re.dotAll && re.test('\\n') && re.flags === 's');\n});\n", "'use strict';\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\n// babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError\nvar $RegExp = global.RegExp;\n\nmodule.exports = fails(function () {\n  var re = $RegExp('(?<a>b)', 'g');\n  return re.exec('b').groups.a !== 'b' ||\n    'b'.replace(re, '$<a>c') !== 'bc';\n});\n", "'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n  if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n  return it;\n};\n", "'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n  return keys[key] || (keys[key] = uid(key));\n};\n", "'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global');\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.36.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.36.0/LICENSE',\n  source: 'https://github.com/zloirock/core-js'\n});\n", "'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n  return store[key] || (store[key] = value || {});\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n  return function ($this, pos) {\n    var S = toString(requireObjectCoercible($this));\n    var position = toIntegerOrInfinity(pos);\n    var size = S.length;\n    var first, second;\n    if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n    first = charCodeAt(S, position);\n    return first < 0xD800 || first > 0xDBFF || position + 1 === size\n      || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n        ? CONVERT_TO_STRING\n          ? charAt(S, position)\n          : first\n        : CONVERT_TO_STRING\n          ? stringSlice(S, position, position + 2)\n          : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n  };\n};\n\nmodule.exports = {\n  // `String.prototype.codePointAt` method\n  // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n  codeAt: createMethod(false),\n  // `String.prototype.at` method\n  // https://github.com/mathiasbynens/String.prototype.at\n  charAt: createMethod(true)\n};\n", "'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n  var symbol = Symbol('symbol detection');\n  // Chrome 38 Symbol has incorrect toString conversion\n  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n  // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n  // of course, fail.\n  return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n    // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n    !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n  var integer = toIntegerOrInfinity(index);\n  return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n", "'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n  return IndexedObject(requireObjectCoercible(it));\n};\n", "'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n  var number = +argument;\n  // eslint-disable-next-line no-self-compare -- NaN check\n  return number !== number || number === 0 ? 0 : trunc(number);\n};\n", "'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n  var len = toIntegerOrInfinity(argument);\n  return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n", "'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n  return $Object(requireObjectCoercible(argument));\n};\n", "'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n  if (!isObject(input) || isSymbol(input)) return input;\n  var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n  var result;\n  if (exoticToPrim) {\n    if (pref === undefined) pref = 'default';\n    result = call(exoticToPrim, input, pref);\n    if (!isObject(result) || isSymbol(result)) return result;\n    throw new $TypeError(\"Can't convert object to primitive value\");\n  }\n  if (pref === undefined) pref = 'number';\n  return ordinaryToPrimitive(input, pref);\n};\n", "'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n  var key = toPrimitive(argument, 'string');\n  return isSymbol(key) ? key : key + '';\n};\n", "'use strict';\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n", "'use strict';\nvar classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n  if (classof(argument) === 'Symbol') throw new TypeError('Cannot convert a Symbol value to a string');\n  return $String(argument);\n};\n", "'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n  try {\n    return $String(argument);\n  } catch (error) {\n    return 'Object';\n  }\n};\n", "'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n", "'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n  && !Symbol.sham\n  && typeof Symbol.iterator == 'symbol';\n", "'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n  // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n  return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n    value: 42,\n    writable: false\n  }).prototype !== 42;\n});\n", "'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n", "'use strict';\nvar global = require('../internals/global');\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 = global.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 getBuiltIn = require('../internals/get-built-in');\nvar hasOwn = require('../internals/has-own-property');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar proxyAccessor = require('../internals/proxy-accessor');\nvar inheritIfRequired = require('../internals/inherit-if-required');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nmodule.exports = function (FULL_NAME, wrapper, FORCED, IS_AGGREGATE_ERROR) {\n  var STACK_TRACE_LIMIT = 'stackTraceLimit';\n  var OPTIONS_POSITION = IS_AGGREGATE_ERROR ? 2 : 1;\n  var path = FULL_NAME.split('.');\n  var ERROR_NAME = path[path.length - 1];\n  var OriginalError = getBuiltIn.apply(null, path);\n\n  if (!OriginalError) return;\n\n  var OriginalErrorPrototype = OriginalError.prototype;\n\n  // V8 9.3- bug https://bugs.chromium.org/p/v8/issues/detail?id=12006\n  if (!IS_PURE && hasOwn(OriginalErrorPrototype, 'cause')) delete OriginalErrorPrototype.cause;\n\n  if (!FORCED) return OriginalError;\n\n  var BaseError = getBuiltIn('Error');\n\n  var WrappedError = wrapper(function (a, b) {\n    var message = normalizeStringArgument(IS_AGGREGATE_ERROR ? b : a, undefined);\n    var result = IS_AGGREGATE_ERROR ? new OriginalError(a) : new OriginalError();\n    if (message !== undefined) createNonEnumerableProperty(result, 'message', message);\n    installErrorStack(result, WrappedError, result.stack, 2);\n    if (this && isPrototypeOf(OriginalErrorPrototype, this)) inheritIfRequired(result, this, WrappedError);\n    if (arguments.length > OPTIONS_POSITION) installErrorCause(result, arguments[OPTIONS_POSITION]);\n    return result;\n  });\n\n  WrappedError.prototype = OriginalErrorPrototype;\n\n  if (ERROR_NAME !== 'Error') {\n    if (setPrototypeOf) setPrototypeOf(WrappedError, BaseError);\n    else copyConstructorProperties(WrappedError, BaseError, { name: true });\n  } else if (DESCRIPTORS && STACK_TRACE_LIMIT in OriginalError) {\n    proxyAccessor(WrappedError, OriginalError, STACK_TRACE_LIMIT);\n    proxyAccessor(WrappedError, OriginalError, 'prepareStackTrace');\n  }\n\n  copyConstructorProperties(WrappedError, OriginalError);\n\n  if (!IS_PURE) try {\n    // Safari 13- bug: WebAssembly errors does not have a proper `.name`\n    if (OriginalErrorPrototype.name !== ERROR_NAME) {\n      createNonEnumerableProperty(OriginalErrorPrototype, 'name', ERROR_NAME);\n    }\n    OriginalErrorPrototype.constructor = WrappedError;\n  } catch (error) { /* empty */ }\n\n  return WrappedError;\n};\n", "'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n  var array = [];\n  array[IS_CONCAT_SPREADABLE] = false;\n  return array.concat()[0] !== array;\n});\n\nvar isConcatSpreadable = function (O) {\n  if (!isObject(O)) return false;\n  var spreadable = O[IS_CONCAT_SPREADABLE];\n  return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !arrayMethodHasSpeciesSupport('concat');\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  concat: function concat(arg) {\n    var O = toObject(this);\n    var A = arraySpeciesCreate(O, 0);\n    var n = 0;\n    var i, k, length, len, E;\n    for (i = -1, length = arguments.length; i < length; i++) {\n      E = i === -1 ? O : arguments[i];\n      if (isConcatSpreadable(E)) {\n        len = lengthOfArrayLike(E);\n        doesNotExceedSafeInteger(n + len);\n        for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n      } else {\n        doesNotExceedSafeInteger(n + 1);\n        createProperty(A, n++, E);\n      }\n    }\n    A.length = n;\n    return A;\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n  filter: function filter(callbackfn /* , thisArg */) {\n    return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = uncurryThis([].join);\n\nvar ES3_STRINGS = IndexedObject !== Object;\nvar FORCED = ES3_STRINGS || !arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.es/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: FORCED }, {\n  join: function join(separator) {\n    return nativeJoin(toIndexedObject(this), separator === undefined ? ',' : separator);\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar $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 toObject = require('../internals/to-object');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar setArrayLength = require('../internals/array-set-length');\nvar doesNotExceedSafeInteger = require('../internals/does-not-exceed-safe-integer');\nvar fails = require('../internals/fails');\n\nvar INCORRECT_TO_LENGTH = fails(function () {\n  return [].push.call({ length: 0x100000000 }, 1) !== 4294967297;\n});\n\n// V8 <= 121 and Safari <= 15.4; FF < 23 throws InternalError\n// https://bugs.chromium.org/p/v8/issues/detail?id=12681\nvar properErrorOnNonWritableLength = function () {\n  try {\n    // eslint-disable-next-line es/no-object-defineproperty -- safe\n    Object.defineProperty([], 'length', { writable: false }).push();\n  } catch (error) {\n    return error instanceof TypeError;\n  }\n};\n\nvar FORCED = INCORRECT_TO_LENGTH || !properErrorOnNonWritableLength();\n\n// `Array.prototype.push` method\n// https://tc39.es/ecma262/#sec-array.prototype.push\n$({ target: 'Array', proto: true, arity: 1, forced: FORCED }, {\n  // eslint-disable-next-line no-unused-vars -- required for `.length`\n  push: function push(item) {\n    var O = toObject(this);\n    var len = lengthOfArrayLike(O);\n    var argCount = arguments.length;\n    doesNotExceedSafeInteger(len + argCount);\n    for (var i = 0; i < argCount; i++) {\n      O[len] = arguments[i];\n      len++;\n    }\n    setArrayLength(O, len);\n    return len;\n  }\n});\n", "'use strict';\n/* eslint-disable no-unused-vars -- required for functions `.length` */\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar wrapErrorConstructorWithCause = require('../internals/wrap-error-constructor-with-cause');\n\nvar WEB_ASSEMBLY = 'WebAssembly';\nvar WebAssembly = global[WEB_ASSEMBLY];\n\n// eslint-disable-next-line es/no-error-cause -- feature detection\nvar FORCED = new Error('e', { cause: 7 }).cause !== 7;\n\nvar exportGlobalErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  var O = {};\n  O[ERROR_NAME] = wrapErrorConstructorWithCause(ERROR_NAME, wrapper, FORCED);\n  $({ global: true, constructor: true, arity: 1, forced: FORCED }, O);\n};\n\nvar exportWebAssemblyErrorCauseWrapper = function (ERROR_NAME, wrapper) {\n  if (WebAssembly && WebAssembly[ERROR_NAME]) {\n    var O = {};\n    O[ERROR_NAME] = wrapErrorConstructorWithCause(WEB_ASSEMBLY + '.' + ERROR_NAME, wrapper, FORCED);\n    $({ target: WEB_ASSEMBLY, stat: true, constructor: true, arity: 1, forced: FORCED }, O);\n  }\n};\n\n// https://tc39.es/ecma262/#sec-nativeerror\nexportGlobalErrorCauseWrapper('Error', function (init) {\n  return function Error(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('EvalError', function (init) {\n  return function EvalError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('RangeError', function (init) {\n  return function RangeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('ReferenceError', function (init) {\n  return function ReferenceError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('SyntaxError', function (init) {\n  return function SyntaxError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('TypeError', function (init) {\n  return function TypeError(message) { return apply(init, this, arguments); };\n});\nexportGlobalErrorCauseWrapper('URIError', function (init) {\n  return function URIError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('CompileError', function (init) {\n  return function CompileError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('LinkError', function (init) {\n  return function LinkError(message) { return apply(init, this, arguments); };\n});\nexportWebAssemblyErrorCauseWrapper('RuntimeError', function (init) {\n  return function RuntimeError(message) { return apply(init, this, arguments); };\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 assign = require('../internals/object-assign');\n\n// `Object.assign` method\n// https://tc39.es/ecma262/#sec-object.assign\n// eslint-disable-next-line es/no-object-assign -- required for testing\n$({ target: 'Object', stat: true, arity: 2, forced: Object.assign !== assign }, {\n  assign: assign\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 call = require('../internals/function-call');\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar toLength = require('../internals/to-length');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar getMethod = require('../internals/get-method');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\n// @@match logic\nfixRegExpWellKnownSymbolLogic('match', function (MATCH, nativeMatch, maybeCallNative) {\n  return [\n    // `String.prototype.match` method\n    // https://tc39.es/ecma262/#sec-string.prototype.match\n    function match(regexp) {\n      var O = requireObjectCoercible(this);\n      var matcher = isNullOrUndefined(regexp) ? undefined : getMethod(regexp, MATCH);\n      return matcher ? call(matcher, regexp, O) : new RegExp(regexp)[MATCH](toString(O));\n    },\n    // `RegExp.prototype[@@match]` method\n    // https://tc39.es/ecma262/#sec-regexp.prototype-@@match\n    function (string) {\n      var rx = anObject(this);\n      var S = toString(string);\n      var res = maybeCallNative(nativeMatch, rx, S);\n\n      if (res.done) return res.value;\n\n      if (!rx.global) return regExpExec(rx, S);\n\n      var fullUnicode = rx.unicode;\n      rx.lastIndex = 0;\n      var A = [];\n      var n = 0;\n      var result;\n      while ((result = regExpExec(rx, S)) !== null) {\n        var matchStr = toString(result[0]);\n        A[n] = matchStr;\n        if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n        n++;\n      }\n      return n === 0 ? null : A;\n    }\n  ];\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar anInstance = require('../internals/an-instance');\nvar anObject = require('../internals/an-object');\nvar isCallable = require('../internals/is-callable');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar createProperty = require('../internals/create-property');\nvar fails = require('../internals/fails');\nvar hasOwn = require('../internals/has-own-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IS_PURE = require('../internals/is-pure');\n\nvar CONSTRUCTOR = 'constructor';\nvar ITERATOR = 'Iterator';\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nvar $TypeError = TypeError;\nvar NativeIterator = global[ITERATOR];\n\n// FF56- have non-standard global helper `Iterator`\nvar FORCED = IS_PURE\n  || !isCallable(NativeIterator)\n  || NativeIterator.prototype !== IteratorPrototype\n  // FF44- non-standard `Iterator` passes previous tests\n  || !fails(function () { NativeIterator({}); });\n\nvar IteratorConstructor = function Iterator() {\n  anInstance(this, IteratorPrototype);\n  if (getPrototypeOf(this) === IteratorPrototype) throw new $TypeError('Abstract class Iterator not directly constructable');\n};\n\nvar defineIteratorPrototypeAccessor = function (key, value) {\n  if (DESCRIPTORS) {\n    defineBuiltInAccessor(IteratorPrototype, key, {\n      configurable: true,\n      get: function () {\n        return value;\n      },\n      set: function (replacement) {\n        anObject(this);\n        if (this === IteratorPrototype) throw new $TypeError(\"You can't redefine this property\");\n        if (hasOwn(this, key)) this[key] = replacement;\n        else createProperty(this, key, replacement);\n      }\n    });\n  } else IteratorPrototype[key] = value;\n};\n\nif (!hasOwn(IteratorPrototype, TO_STRING_TAG)) defineIteratorPrototypeAccessor(TO_STRING_TAG, ITERATOR);\n\nif (FORCED || !hasOwn(IteratorPrototype, CONSTRUCTOR) || IteratorPrototype[CONSTRUCTOR] === Object) {\n  defineIteratorPrototypeAccessor(CONSTRUCTOR, IteratorConstructor);\n}\n\nIteratorConstructor.prototype = IteratorPrototype;\n\n// `Iterator` constructor\n// https://github.com/tc39/proposal-iterator-helpers\n$({ global: true, constructor: true, forced: FORCED }, {\n  Iterator: IteratorConstructor\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar getIteratorDirect = require('../internals/get-iterator-direct');\nvar createIteratorProxy = require('../internals/iterator-create-proxy');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar IS_PURE = require('../internals/is-pure');\n\nvar IteratorProxy = createIteratorProxy(function () {\n  var iterator = this.iterator;\n  var predicate = this.predicate;\n  var next = this.next;\n  var result, done, value;\n  while (true) {\n    result = anObject(call(next, iterator));\n    done = this.done = !!result.done;\n    if (done) return;\n    value = result.value;\n    if (callWithSafeIterationClosing(iterator, predicate, [value, this.counter++], true)) return value;\n  }\n});\n\n// `Iterator.prototype.filter` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  filter: function filter(predicate) {\n    anObject(this);\n    aCallable(predicate);\n    return new IteratorProxy(getIteratorDirect(this), {\n      predicate: predicate\n    });\n  }\n});\n", "'use strict';\nvar $ = require('../internals/export');\nvar map = require('../internals/iterator-map');\nvar IS_PURE = require('../internals/is-pure');\n\n// `Iterator.prototype.map` method\n// https://github.com/tc39/proposal-iterator-helpers\n$({ target: 'Iterator', proto: true, real: true, forced: IS_PURE }, {\n  map: map\n});\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\t// no module.id needed\n\t\t// no module.loaded needed\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// 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); }", "var VNode = function VNode() {};\n\nvar options = {};\n\nvar stack = [];\n\nvar EMPTY_CHILDREN = [];\n\nfunction h(nodeName, attributes) {\n\tvar children = EMPTY_CHILDREN,\n\t    lastSimple,\n\t    child,\n\t    simple,\n\t    i;\n\tfor (i = arguments.length; i-- > 2;) {\n\t\tstack.push(arguments[i]);\n\t}\n\tif (attributes && attributes.children != null) {\n\t\tif (!stack.length) stack.push(attributes.children);\n\t\tdelete attributes.children;\n\t}\n\twhile (stack.length) {\n\t\tif ((child = stack.pop()) && child.pop !== undefined) {\n\t\t\tfor (i = child.length; i--;) {\n\t\t\t\tstack.push(child[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tif (typeof child === 'boolean') child = null;\n\n\t\t\tif (simple = typeof nodeName !== 'function') {\n\t\t\t\tif (child == null) child = '';else if (typeof child === 'number') child = String(child);else if (typeof child !== 'string') simple = false;\n\t\t\t}\n\n\t\t\tif (simple && lastSimple) {\n\t\t\t\tchildren[children.length - 1] += child;\n\t\t\t} else if (children === EMPTY_CHILDREN) {\n\t\t\t\tchildren = [child];\n\t\t\t} else {\n\t\t\t\tchildren.push(child);\n\t\t\t}\n\n\t\t\tlastSimple = simple;\n\t\t}\n\t}\n\n\tvar p = new VNode();\n\tp.nodeName = nodeName;\n\tp.children = children;\n\tp.attributes = attributes == null ? undefined : attributes;\n\tp.key = attributes == null ? undefined : attributes.key;\n\n\tif (options.vnode !== undefined) options.vnode(p);\n\n\treturn p;\n}\n\nfunction extend(obj, props) {\n  for (var i in props) {\n    obj[i] = props[i];\n  }return obj;\n}\n\nfunction applyRef(ref, value) {\n  if (ref) {\n    if (typeof ref == 'function') ref(value);else ref.current = value;\n  }\n}\n\nvar defer = typeof Promise == 'function' ? Promise.resolve().then.bind(Promise.resolve()) : setTimeout;\n\nfunction cloneElement(vnode, props) {\n  return h(vnode.nodeName, extend(extend({}, vnode.attributes), props), arguments.length > 2 ? [].slice.call(arguments, 2) : vnode.children);\n}\n\nvar IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n\nvar items = [];\n\nfunction enqueueRender(component) {\n\tif (!component._dirty && (component._dirty = true) && items.push(component) == 1) {\n\t\t(options.debounceRendering || defer)(rerender);\n\t}\n}\n\nfunction rerender() {\n\tvar p;\n\twhile (p = items.pop()) {\n\t\tif (p._dirty) renderComponent(p);\n\t}\n}\n\nfunction isSameNodeType(node, vnode, hydrating) {\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\treturn node.splitText !== undefined;\n\t}\n\tif (typeof vnode.nodeName === 'string') {\n\t\treturn !node._componentConstructor && isNamedNode(node, vnode.nodeName);\n\t}\n\treturn hydrating || node._componentConstructor === vnode.nodeName;\n}\n\nfunction isNamedNode(node, nodeName) {\n\treturn node.normalizedNodeName === nodeName || node.nodeName.toLowerCase() === nodeName.toLowerCase();\n}\n\nfunction getNodeProps(vnode) {\n\tvar props = extend({}, vnode.attributes);\n\tprops.children = vnode.children;\n\n\tvar defaultProps = vnode.nodeName.defaultProps;\n\tif (defaultProps !== undefined) {\n\t\tfor (var i in defaultProps) {\n\t\t\tif (props[i] === undefined) {\n\t\t\t\tprops[i] = defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn props;\n}\n\nfunction createNode(nodeName, isSvg) {\n\tvar node = isSvg ? document.createElementNS('http://www.w3.org/2000/svg', nodeName) : document.createElement(nodeName);\n\tnode.normalizedNodeName = nodeName;\n\treturn node;\n}\n\nfunction removeNode(node) {\n\tvar parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nfunction setAccessor(node, name, old, value, isSvg) {\n\tif (name === 'className') name = 'class';\n\n\tif (name === 'key') {} else if (name === 'ref') {\n\t\tapplyRef(old, null);\n\t\tapplyRef(value, node);\n\t} else if (name === 'class' && !isSvg) {\n\t\tnode.className = value || '';\n\t} else if (name === 'style') {\n\t\tif (!value || typeof value === 'string' || typeof old === 'string') {\n\t\t\tnode.style.cssText = value || '';\n\t\t}\n\t\tif (value && typeof value === 'object') {\n\t\t\tif (typeof old !== 'string') {\n\t\t\t\tfor (var i in old) {\n\t\t\t\t\tif (!(i in value)) node.style[i] = '';\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor (var i in value) {\n\t\t\t\tnode.style[i] = typeof value[i] === 'number' && IS_NON_DIMENSIONAL.test(i) === false ? value[i] + 'px' : value[i];\n\t\t\t}\n\t\t}\n\t} else if (name === 'dangerouslySetInnerHTML') {\n\t\tif (value) node.innerHTML = value.__html || '';\n\t} else if (name[0] == 'o' && name[1] == 'n') {\n\t\tvar useCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tname = name.toLowerCase().substring(2);\n\t\tif (value) {\n\t\t\tif (!old) node.addEventListener(name, eventProxy, useCapture);\n\t\t} else {\n\t\t\tnode.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t\t(node._listeners || (node._listeners = {}))[name] = value;\n\t} else if (name !== 'list' && name !== 'type' && !isSvg && name in node) {\n\t\ttry {\n\t\t\tnode[name] = value == null ? '' : value;\n\t\t} catch (e) {}\n\t\tif ((value == null || value === false) && name != 'spellcheck') node.removeAttribute(name);\n\t} else {\n\t\tvar ns = isSvg && name !== (name = name.replace(/^xlink:?/, ''));\n\n\t\tif (value == null || value === false) {\n\t\t\tif (ns) node.removeAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase());else node.removeAttribute(name);\n\t\t} else if (typeof value !== 'function') {\n\t\t\tif (ns) node.setAttributeNS('http://www.w3.org/1999/xlink', name.toLowerCase(), value);else node.setAttribute(name, value);\n\t\t}\n\t}\n}\n\nfunction eventProxy(e) {\n\treturn this._listeners[e.type](options.event && options.event(e) || e);\n}\n\nvar mounts = [];\n\nvar diffLevel = 0;\n\nvar isSvgMode = false;\n\nvar hydrating = false;\n\nfunction flushMounts() {\n\tvar c;\n\twhile (c = mounts.shift()) {\n\t\tif (options.afterMount) options.afterMount(c);\n\t\tif (c.componentDidMount) c.componentDidMount();\n\t}\n}\n\nfunction diff(dom, vnode, context, mountAll, parent, componentRoot) {\n\tif (!diffLevel++) {\n\t\tisSvgMode = parent != null && parent.ownerSVGElement !== undefined;\n\n\t\thydrating = dom != null && !('__preactattr_' in dom);\n\t}\n\n\tvar ret = idiff(dom, vnode, context, mountAll, componentRoot);\n\n\tif (parent && ret.parentNode !== parent) parent.appendChild(ret);\n\n\tif (! --diffLevel) {\n\t\thydrating = false;\n\n\t\tif (!componentRoot) flushMounts();\n\t}\n\n\treturn ret;\n}\n\nfunction idiff(dom, vnode, context, mountAll, componentRoot) {\n\tvar out = dom,\n\t    prevSvgMode = isSvgMode;\n\n\tif (vnode == null || typeof vnode === 'boolean') vnode = '';\n\n\tif (typeof vnode === 'string' || typeof vnode === 'number') {\n\t\tif (dom && dom.splitText !== undefined && dom.parentNode && (!dom._component || componentRoot)) {\n\t\t\tif (dom.nodeValue != vnode) {\n\t\t\t\tdom.nodeValue = vnode;\n\t\t\t}\n\t\t} else {\n\t\t\tout = document.createTextNode(vnode);\n\t\t\tif (dom) {\n\t\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\t\t\t\trecollectNodeTree(dom, true);\n\t\t\t}\n\t\t}\n\n\t\tout['__preactattr_'] = true;\n\n\t\treturn out;\n\t}\n\n\tvar vnodeName = vnode.nodeName;\n\tif (typeof vnodeName === 'function') {\n\t\treturn buildComponentFromVNode(dom, vnode, context, mountAll);\n\t}\n\n\tisSvgMode = vnodeName === 'svg' ? true : vnodeName === 'foreignObject' ? false : isSvgMode;\n\n\tvnodeName = String(vnodeName);\n\tif (!dom || !isNamedNode(dom, vnodeName)) {\n\t\tout = createNode(vnodeName, isSvgMode);\n\n\t\tif (dom) {\n\t\t\twhile (dom.firstChild) {\n\t\t\t\tout.appendChild(dom.firstChild);\n\t\t\t}\n\t\t\tif (dom.parentNode) dom.parentNode.replaceChild(out, dom);\n\n\t\t\trecollectNodeTree(dom, true);\n\t\t}\n\t}\n\n\tvar fc = out.firstChild,\n\t    props = out['__preactattr_'],\n\t    vchildren = vnode.children;\n\n\tif (props == null) {\n\t\tprops = out['__preactattr_'] = {};\n\t\tfor (var a = out.attributes, i = a.length; i--;) {\n\t\t\tprops[a[i].name] = a[i].value;\n\t\t}\n\t}\n\n\tif (!hydrating && vchildren && vchildren.length === 1 && typeof vchildren[0] === 'string' && fc != null && fc.splitText !== undefined && fc.nextSibling == null) {\n\t\tif (fc.nodeValue != vchildren[0]) {\n\t\t\tfc.nodeValue = vchildren[0];\n\t\t}\n\t} else if (vchildren && vchildren.length || fc != null) {\n\t\t\tinnerDiffNode(out, vchildren, context, mountAll, hydrating || props.dangerouslySetInnerHTML != null);\n\t\t}\n\n\tdiffAttributes(out, vnode.attributes, props);\n\n\tisSvgMode = prevSvgMode;\n\n\treturn out;\n}\n\nfunction innerDiffNode(dom, vchildren, context, mountAll, isHydrating) {\n\tvar originalChildren = dom.childNodes,\n\t    children = [],\n\t    keyed = {},\n\t    keyedLen = 0,\n\t    min = 0,\n\t    len = originalChildren.length,\n\t    childrenLen = 0,\n\t    vlen = vchildren ? vchildren.length : 0,\n\t    j,\n\t    c,\n\t    f,\n\t    vchild,\n\t    child;\n\n\tif (len !== 0) {\n\t\tfor (var i = 0; i < len; i++) {\n\t\t\tvar _child = originalChildren[i],\n\t\t\t    props = _child['__preactattr_'],\n\t\t\t    key = vlen && props ? _child._component ? _child._component.__key : props.key : null;\n\t\t\tif (key != null) {\n\t\t\t\tkeyedLen++;\n\t\t\t\tkeyed[key] = _child;\n\t\t\t} else if (props || (_child.splitText !== undefined ? isHydrating ? _child.nodeValue.trim() : true : isHydrating)) {\n\t\t\t\tchildren[childrenLen++] = _child;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (vlen !== 0) {\n\t\tfor (var i = 0; i < vlen; i++) {\n\t\t\tvchild = vchildren[i];\n\t\t\tchild = null;\n\n\t\t\tvar key = vchild.key;\n\t\t\tif (key != null) {\n\t\t\t\tif (keyedLen && keyed[key] !== undefined) {\n\t\t\t\t\tchild = keyed[key];\n\t\t\t\t\tkeyed[key] = undefined;\n\t\t\t\t\tkeyedLen--;\n\t\t\t\t}\n\t\t\t} else if (min < childrenLen) {\n\t\t\t\t\tfor (j = min; j < childrenLen; j++) {\n\t\t\t\t\t\tif (children[j] !== undefined && isSameNodeType(c = children[j], vchild, isHydrating)) {\n\t\t\t\t\t\t\tchild = c;\n\t\t\t\t\t\t\tchildren[j] = undefined;\n\t\t\t\t\t\t\tif (j === childrenLen - 1) childrenLen--;\n\t\t\t\t\t\t\tif (j === min) min++;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\tchild = idiff(child, vchild, context, mountAll);\n\n\t\t\tf = originalChildren[i];\n\t\t\tif (child && child !== dom && child !== f) {\n\t\t\t\tif (f == null) {\n\t\t\t\t\tdom.appendChild(child);\n\t\t\t\t} else if (child === f.nextSibling) {\n\t\t\t\t\tremoveNode(f);\n\t\t\t\t} else {\n\t\t\t\t\tdom.insertBefore(child, f);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (keyedLen) {\n\t\tfor (var i in keyed) {\n\t\t\tif (keyed[i] !== undefined) recollectNodeTree(keyed[i], false);\n\t\t}\n\t}\n\n\twhile (min <= childrenLen) {\n\t\tif ((child = children[childrenLen--]) !== undefined) recollectNodeTree(child, false);\n\t}\n}\n\nfunction recollectNodeTree(node, unmountOnly) {\n\tvar component = node._component;\n\tif (component) {\n\t\tunmountComponent(component);\n\t} else {\n\t\tif (node['__preactattr_'] != null) applyRef(node['__preactattr_'].ref, null);\n\n\t\tif (unmountOnly === false || node['__preactattr_'] == null) {\n\t\t\tremoveNode(node);\n\t\t}\n\n\t\tremoveChildren(node);\n\t}\n}\n\nfunction removeChildren(node) {\n\tnode = node.lastChild;\n\twhile (node) {\n\t\tvar next = node.previousSibling;\n\t\trecollectNodeTree(node, true);\n\t\tnode = next;\n\t}\n}\n\nfunction diffAttributes(dom, attrs, old) {\n\tvar name;\n\n\tfor (name in old) {\n\t\tif (!(attrs && attrs[name] != null) && old[name] != null) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = undefined, isSvgMode);\n\t\t}\n\t}\n\n\tfor (name in attrs) {\n\t\tif (name !== 'children' && name !== 'innerHTML' && (!(name in old) || attrs[name] !== (name === 'value' || name === 'checked' ? dom[name] : old[name]))) {\n\t\t\tsetAccessor(dom, name, old[name], old[name] = attrs[name], isSvgMode);\n\t\t}\n\t}\n}\n\nvar recyclerComponents = [];\n\nfunction createComponent(Ctor, props, context) {\n\tvar inst,\n\t    i = recyclerComponents.length;\n\n\tif (Ctor.prototype && Ctor.prototype.render) {\n\t\tinst = new Ctor(props, context);\n\t\tComponent.call(inst, props, context);\n\t} else {\n\t\tinst = new Component(props, context);\n\t\tinst.constructor = Ctor;\n\t\tinst.render = doRender;\n\t}\n\n\twhile (i--) {\n\t\tif (recyclerComponents[i].constructor === Ctor) {\n\t\t\tinst.nextBase = recyclerComponents[i].nextBase;\n\t\t\trecyclerComponents.splice(i, 1);\n\t\t\treturn inst;\n\t\t}\n\t}\n\n\treturn inst;\n}\n\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n\nfunction setComponentProps(component, props, renderMode, context, mountAll) {\n\tif (component._disable) return;\n\tcomponent._disable = true;\n\n\tcomponent.__ref = props.ref;\n\tcomponent.__key = props.key;\n\tdelete props.ref;\n\tdelete props.key;\n\n\tif (typeof component.constructor.getDerivedStateFromProps === 'undefined') {\n\t\tif (!component.base || mountAll) {\n\t\t\tif (component.componentWillMount) component.componentWillMount();\n\t\t} else if (component.componentWillReceiveProps) {\n\t\t\tcomponent.componentWillReceiveProps(props, context);\n\t\t}\n\t}\n\n\tif (context && context !== component.context) {\n\t\tif (!component.prevContext) component.prevContext = component.context;\n\t\tcomponent.context = context;\n\t}\n\n\tif (!component.prevProps) component.prevProps = component.props;\n\tcomponent.props = props;\n\n\tcomponent._disable = false;\n\n\tif (renderMode !== 0) {\n\t\tif (renderMode === 1 || options.syncComponentUpdates !== false || !component.base) {\n\t\t\trenderComponent(component, 1, mountAll);\n\t\t} else {\n\t\t\tenqueueRender(component);\n\t\t}\n\t}\n\n\tapplyRef(component.__ref, component);\n}\n\nfunction renderComponent(component, renderMode, mountAll, isChild) {\n\tif (component._disable) return;\n\n\tvar props = component.props,\n\t    state = component.state,\n\t    context = component.context,\n\t    previousProps = component.prevProps || props,\n\t    previousState = component.prevState || state,\n\t    previousContext = component.prevContext || context,\n\t    isUpdate = component.base,\n\t    nextBase = component.nextBase,\n\t    initialBase = isUpdate || nextBase,\n\t    initialChildComponent = component._component,\n\t    skip = false,\n\t    snapshot = previousContext,\n\t    rendered,\n\t    inst,\n\t    cbase;\n\n\tif (component.constructor.getDerivedStateFromProps) {\n\t\tstate = extend(extend({}, state), component.constructor.getDerivedStateFromProps(props, state));\n\t\tcomponent.state = state;\n\t}\n\n\tif (isUpdate) {\n\t\tcomponent.props = previousProps;\n\t\tcomponent.state = previousState;\n\t\tcomponent.context = previousContext;\n\t\tif (renderMode !== 2 && component.shouldComponentUpdate && component.shouldComponentUpdate(props, state, context) === false) {\n\t\t\tskip = true;\n\t\t} else if (component.componentWillUpdate) {\n\t\t\tcomponent.componentWillUpdate(props, state, context);\n\t\t}\n\t\tcomponent.props = props;\n\t\tcomponent.state = state;\n\t\tcomponent.context = context;\n\t}\n\n\tcomponent.prevProps = component.prevState = component.prevContext = component.nextBase = null;\n\tcomponent._dirty = false;\n\n\tif (!skip) {\n\t\trendered = component.render(props, state, context);\n\n\t\tif (component.getChildContext) {\n\t\t\tcontext = extend(extend({}, context), component.getChildContext());\n\t\t}\n\n\t\tif (isUpdate && component.getSnapshotBeforeUpdate) {\n\t\t\tsnapshot = component.getSnapshotBeforeUpdate(previousProps, previousState);\n\t\t}\n\n\t\tvar childComponent = rendered && rendered.nodeName,\n\t\t    toUnmount,\n\t\t    base;\n\n\t\tif (typeof childComponent === 'function') {\n\n\t\t\tvar childProps = getNodeProps(rendered);\n\t\t\tinst = initialChildComponent;\n\n\t\t\tif (inst && inst.constructor === childComponent && childProps.key == inst.__key) {\n\t\t\t\tsetComponentProps(inst, childProps, 1, context, false);\n\t\t\t} else {\n\t\t\t\ttoUnmount = inst;\n\n\t\t\t\tcomponent._component = inst = createComponent(childComponent, childProps, context);\n\t\t\t\tinst.nextBase = inst.nextBase || nextBase;\n\t\t\t\tinst._parentComponent = component;\n\t\t\t\tsetComponentProps(inst, childProps, 0, context, false);\n\t\t\t\trenderComponent(inst, 1, mountAll, true);\n\t\t\t}\n\n\t\t\tbase = inst.base;\n\t\t} else {\n\t\t\tcbase = initialBase;\n\n\t\t\ttoUnmount = initialChildComponent;\n\t\t\tif (toUnmount) {\n\t\t\t\tcbase = component._component = null;\n\t\t\t}\n\n\t\t\tif (initialBase || renderMode === 1) {\n\t\t\t\tif (cbase) cbase._component = null;\n\t\t\t\tbase = diff(cbase, rendered, context, mountAll || !isUpdate, initialBase && initialBase.parentNode, true);\n\t\t\t}\n\t\t}\n\n\t\tif (initialBase && base !== initialBase && inst !== initialChildComponent) {\n\t\t\tvar baseParent = initialBase.parentNode;\n\t\t\tif (baseParent && base !== baseParent) {\n\t\t\t\tbaseParent.replaceChild(base, initialBase);\n\n\t\t\t\tif (!toUnmount) {\n\t\t\t\t\tinitialBase._component = null;\n\t\t\t\t\trecollectNodeTree(initialBase, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (toUnmount) {\n\t\t\tunmountComponent(toUnmount);\n\t\t}\n\n\t\tcomponent.base = base;\n\t\tif (base && !isChild) {\n\t\t\tvar componentRef = component,\n\t\t\t    t = component;\n\t\t\twhile (t = t._parentComponent) {\n\t\t\t\t(componentRef = t).base = base;\n\t\t\t}\n\t\t\tbase._component = componentRef;\n\t\t\tbase._componentConstructor = componentRef.constructor;\n\t\t}\n\t}\n\n\tif (!isUpdate || mountAll) {\n\t\tmounts.push(component);\n\t} else if (!skip) {\n\n\t\tif (component.componentDidUpdate) {\n\t\t\tcomponent.componentDidUpdate(previousProps, previousState, snapshot);\n\t\t}\n\t\tif (options.afterUpdate) options.afterUpdate(component);\n\t}\n\n\twhile (component._renderCallbacks.length) {\n\t\tcomponent._renderCallbacks.pop().call(component);\n\t}if (!diffLevel && !isChild) flushMounts();\n}\n\nfunction buildComponentFromVNode(dom, vnode, context, mountAll) {\n\tvar c = dom && dom._component,\n\t    originalComponent = c,\n\t    oldDom = dom,\n\t    isDirectOwner = c && dom._componentConstructor === vnode.nodeName,\n\t    isOwner = isDirectOwner,\n\t    props = getNodeProps(vnode);\n\twhile (c && !isOwner && (c = c._parentComponent)) {\n\t\tisOwner = c.constructor === vnode.nodeName;\n\t}\n\n\tif (c && isOwner && (!mountAll || c._component)) {\n\t\tsetComponentProps(c, props, 3, context, mountAll);\n\t\tdom = c.base;\n\t} else {\n\t\tif (originalComponent && !isDirectOwner) {\n\t\t\tunmountComponent(originalComponent);\n\t\t\tdom = oldDom = null;\n\t\t}\n\n\t\tc = createComponent(vnode.nodeName, props, context);\n\t\tif (dom && !c.nextBase) {\n\t\t\tc.nextBase = dom;\n\n\t\t\toldDom = null;\n\t\t}\n\t\tsetComponentProps(c, props, 1, context, mountAll);\n\t\tdom = c.base;\n\n\t\tif (oldDom && dom !== oldDom) {\n\t\t\toldDom._component = null;\n\t\t\trecollectNodeTree(oldDom, false);\n\t\t}\n\t}\n\n\treturn dom;\n}\n\nfunction unmountComponent(component) {\n\tif (options.beforeUnmount) options.beforeUnmount(component);\n\n\tvar base = component.base;\n\n\tcomponent._disable = true;\n\n\tif (component.componentWillUnmount) component.componentWillUnmount();\n\n\tcomponent.base = null;\n\n\tvar inner = component._component;\n\tif (inner) {\n\t\tunmountComponent(inner);\n\t} else if (base) {\n\t\tif (base['__preactattr_'] != null) applyRef(base['__preactattr_'].ref, null);\n\n\t\tcomponent.nextBase = base;\n\n\t\tremoveNode(base);\n\t\trecyclerComponents.push(component);\n\n\t\tremoveChildren(base);\n\t}\n\n\tapplyRef(component.__ref, null);\n}\n\nfunction Component(props, context) {\n\tthis._dirty = true;\n\n\tthis.context = context;\n\n\tthis.props = props;\n\n\tthis.state = this.state || {};\n\n\tthis._renderCallbacks = [];\n}\n\nextend(Component.prototype, {\n\tsetState: function setState(state, callback) {\n\t\tif (!this.prevState) this.prevState = this.state;\n\t\tthis.state = extend(extend({}, this.state), typeof state === 'function' ? state(this.state, this.props) : state);\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t},\n\tforceUpdate: function forceUpdate(callback) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\trenderComponent(this, 2);\n\t},\n\trender: function render() {}\n});\n\nfunction render(vnode, parent, merge) {\n  return diff(merge, vnode, {}, false, parent, false);\n}\n\nfunction createRef() {\n\treturn {};\n}\n\nvar preact = {\n\th: h,\n\tcreateElement: h,\n\tcloneElement: cloneElement,\n\tcreateRef: createRef,\n\tComponent: Component,\n\trender: render,\n\trerender: rerender,\n\toptions: options\n};\n\nexport default preact;\nexport { h, h as createElement, cloneElement, createRef, Component, render, rerender, options };\n//# sourceMappingURL=preact.mjs.map\n", "import { createElement, Component } from 'preact' /** @jsx createElement */\n\nconst debounce = function (func, wait, immediate) {\n  let timeout\n  return function () {\n    const context = this\n    const args = arguments\n    const later = function () {\n      timeout = null\n      if (!immediate) func.apply(context, args)\n    }\n    const callNow = immediate && !timeout\n    clearTimeout(timeout)\n    timeout = setTimeout(later, wait)\n    if (callNow) func.apply(context, args)\n  }\n}\nconst statusDebounceMillis = 1400\n\nexport default class Status extends Component {\n  static defaultProps = {\n    tQueryTooShort: (minQueryLength) => `Type in ${minQueryLength} or more characters for results`,\n    tNoResults: () => 'No search results',\n    tSelectedOption: (selectedOption, length, index) => `${selectedOption} ${index + 1} of ${length} is highlighted`,\n    tResults: (length, contentSelectedOption) => {\n      const words = {\n        result: (length === 1) ? 'result' : 'results',\n        is: (length === 1) ? 'is' : 'are'\n      }\n\n      return `${length} ${words.result} ${words.is} available. ${contentSelectedOption}`\n    }\n  }\n\n  state = {\n    bump: false,\n    debounced: false\n  }\n\n  /* eslint-disable react/no-deprecated -- https://github.com/alphagov/accessible-autocomplete/issues/418 */\n  componentWillMount () {\n    const that = this\n    this.debounceStatusUpdate = debounce(function () {\n      if (!that.state.debounced) {\n        const shouldSilence = !that.props.isInFocus || that.props.validChoiceMade\n        that.setState(({ bump }) => ({ bump: !bump, debounced: true, silenced: shouldSilence }))\n      }\n    }, statusDebounceMillis)\n  }\n\n  /* eslint-disable react/no-deprecated -- https://github.com/alphagov/accessible-autocomplete/issues/418 */\n  componentWillReceiveProps ({ queryLength }) {\n    this.setState({ debounced: false })\n  }\n\n  render () {\n    const {\n      id,\n      length,\n      queryLength,\n      minQueryLength,\n      selectedOption,\n      selectedOptionIndex,\n      tQueryTooShort,\n      tNoResults,\n      tSelectedOption,\n      tResults,\n      className\n    } = this.props\n    const { bump, debounced, silenced } = this.state\n\n    const queryTooShort = queryLength < minQueryLength\n    const noResults = length === 0\n\n    const contentSelectedOption = selectedOption\n      ? tSelectedOption(selectedOption, length, selectedOptionIndex)\n      : ''\n\n    let content = null\n    if (queryTooShort) {\n      content = tQueryTooShort(minQueryLength)\n    } else if (noResults) {\n      content = tNoResults()\n    } else {\n      content = tResults(length, contentSelectedOption)\n    }\n\n    this.debounceStatusUpdate()\n\n    return (\n      <div\n        className={className}\n        style={{\n          border: '0',\n          clip: 'rect(0 0 0 0)',\n          height: '1px',\n          marginBottom: '-1px',\n          marginRight: '-1px',\n          overflow: 'hidden',\n          padding: '0',\n          position: 'absolute',\n          whiteSpace: 'nowrap',\n          width: '1px'\n        }}\n      >\n        <div\n          id={id + '__status--A'}\n          role='status'\n          aria-atomic='true'\n          aria-live='polite'\n        >\n          {(!silenced && debounced && bump) ? content : ''}\n        </div>\n        <div\n          id={id + '__status--B'}\n          role='status'\n          aria-atomic='true'\n          aria-live='polite'\n        >\n          {(!silenced && debounced && !bump) ? content : ''}\n        </div>\n      </div>\n    )\n  }\n}\n", "import { createElement } from 'preact' /** @jsx createElement */\n\nconst DropdownArrowDown = ({ className }) => (\n  <svg version='1.1' xmlns='http://www.w3.org/2000/svg' className={className} focusable='false'>\n    <g stroke='none' fill='none' fill-rule='evenodd'>\n      <polygon fill='#000000' points='0 0 22 0 11 17' />\n    </g>\n  </svg>\n)\n\nexport default DropdownArrowDown\n", "import { createElement, Component } from 'preact' /** @jsx createElement */\nimport Status from './status'\nimport DropdownArrowDown from './dropdown-arrow-down'\n\nconst IS_PREACT = process.env.COMPONENT_LIBRARY === 'PREACT'\nconst IS_REACT = process.env.COMPONENT_LIBRARY === 'REACT'\n\nconst keyCodes = {\n  13: 'enter',\n  27: 'escape',\n  32: 'space',\n  38: 'up',\n  40: 'down'\n}\n\nfunction isIosDevice () {\n  return typeof navigator !== 'undefined' && !!(navigator.userAgent.match(/(iPod|iPhone|iPad)/g) && navigator.userAgent.match(/AppleWebKit/g))\n}\n\nfunction isPrintableKeyCode (keyCode) {\n  return (\n    (keyCode > 47 && keyCode < 58) || // number keys\n    keyCode === 32 || keyCode === 8 || // spacebar or backspace\n    (keyCode > 64 && keyCode < 91) || // letter keys\n    (keyCode > 95 && keyCode < 112) || // numpad keys\n    (keyCode > 185 && keyCode < 193) || // ;=,-./` (in order)\n    (keyCode > 218 && keyCode < 223) // [\\]' (in order)\n  )\n}\n\n// Preact does not implement onChange on inputs, but React does.\nfunction onChangeCrossLibrary (handler) {\n  if (IS_PREACT) { return { onInput: handler } }\n  if (IS_REACT) { return { onChange: handler } }\n}\n\nexport default class Autocomplete extends Component {\n  static defaultProps = {\n    autoselect: false,\n    cssNamespace: 'autocomplete',\n    defaultValue: '',\n    displayMenu: 'inline',\n    minLength: 0,\n    name: 'input-autocomplete',\n    placeholder: '',\n    onConfirm: () => {},\n    confirmOnBlur: true,\n    showNoOptionsFound: true,\n    showAllValues: false,\n    required: false,\n    tNoResults: () => 'No results found',\n    tAssistiveHint: () => 'When autocomplete results are available use up and down arrows to review and enter to select.  Touch device users, explore by touch or with swipe gestures.',\n    dropdownArrow: DropdownArrowDown,\n    menuAttributes: {},\n    inputClasses: null,\n    hintClasses: null,\n    menuClasses: null\n  }\n\n  elementReferences = {}\n\n  constructor (props) {\n    super(props)\n\n    this.state = {\n      focused: null,\n      hovered: null,\n      menuOpen: false,\n      options: props.defaultValue ? [props.defaultValue] : [],\n      query: props.defaultValue,\n      validChoiceMade: false,\n      selected: null,\n      ariaHint: true\n    }\n\n    this.handleComponentBlur = this.handleComponentBlur.bind(this)\n    this.handleKeyDown = this.handleKeyDown.bind(this)\n    this.handleUpArrow = this.handleUpArrow.bind(this)\n    this.handleDownArrow = this.handleDownArrow.bind(this)\n    this.handleEnter = this.handleEnter.bind(this)\n    this.handlePrintableKey = this.handlePrintableKey.bind(this)\n\n    this.handleListMouseLeave = this.handleListMouseLeave.bind(this)\n\n    this.handleOptionBlur = this.handleOptionBlur.bind(this)\n    this.handleOptionClick = this.handleOptionClick.bind(this)\n    this.handleOptionFocus = this.handleOptionFocus.bind(this)\n    this.handleOptionMouseDown = this.handleOptionMouseDown.bind(this)\n    this.handleOptionMouseEnter = this.handleOptionMouseEnter.bind(this)\n\n    this.handleInputBlur = this.handleInputBlur.bind(this)\n    this.handleInputChange = this.handleInputChange.bind(this)\n    this.handleInputClick = this.handleInputClick.bind(this)\n    this.handleInputFocus = this.handleInputFocus.bind(this)\n\n    this.pollInputElement = this.pollInputElement.bind(this)\n    this.getDirectInputChanges = this.getDirectInputChanges.bind(this)\n  }\n\n  isQueryAnOption (query, options) {\n    return options.map(entry => this.templateInputValue(entry).toLowerCase()).indexOf(query.toLowerCase()) !== -1\n  }\n\n  componentDidMount () {\n    this.pollInputElement()\n  }\n\n  componentWillUnmount () {\n    clearTimeout(this.$pollInput)\n  }\n\n  // Applications like Dragon NaturallySpeaking will modify the\n  // `input` field by directly changing its `.value`. These events\n  // don't trigger our JavaScript event listeners, so we need to poll\n  // to handle when and if they occur.\n  pollInputElement () {\n    this.getDirectInputChanges()\n    this.$pollInput = setTimeout(() => {\n      this.pollInputElement()\n    }, 100)\n  }\n\n  getDirectInputChanges () {\n    const inputReference = this.elementReferences[-1]\n    const queryHasChanged = inputReference && inputReference.value !== this.state.query\n\n    if (queryHasChanged) {\n      this.handleInputChange({ target: { value: inputReference.value } })\n    }\n  }\n\n  componentDidUpdate (prevProps, prevState) {\n    const { focused } = this.state\n    const componentLostFocus = focused === null\n    const focusedChanged = prevState.focused !== focused\n    const focusDifferentElement = focusedChanged && !componentLostFocus\n    if (focusDifferentElement) {\n      this.elementReferences[focused].focus()\n    }\n    const focusedInput = focused === -1\n    const componentGainedFocus = focusedChanged && prevState.focused === null\n    const selectAllText = focusedInput && componentGainedFocus\n    if (selectAllText) {\n      const inputElement = this.elementReferences[focused]\n      inputElement.setSelectionRange(0, inputElement.value.length)\n    }\n  }\n\n  hasAutoselect () {\n    return isIosDevice() ? false : this.props.autoselect\n  }\n\n  // This template is used when converting from a state.options object into a state.query.\n  templateInputValue (value) {\n    const inputValueTemplate = this.props.templates && this.props.templates.inputValue\n    return inputValueTemplate ? inputValueTemplate(value) : value\n  }\n\n  // This template is used when displaying results / suggestions.\n  templateSuggestion (value) {\n    const suggestionTemplate = this.props.templates && this.props.templates.suggestion\n    return suggestionTemplate ? suggestionTemplate(value) : value\n  }\n\n  handleComponentBlur (newState) {\n    const { options, query, selected } = this.state\n    let newQuery\n    if (this.props.confirmOnBlur) {\n      newQuery = newState.query || query\n      this.props.onConfirm(options[selected])\n    } else {\n      newQuery = query\n    }\n    this.setState({\n      focused: null,\n      menuOpen: newState.menuOpen || false,\n      query: newQuery,\n      selected: null,\n      validChoiceMade: this.isQueryAnOption(newQuery, options)\n    })\n  }\n\n  handleListMouseLeave (event) {\n    this.setState({\n      hovered: null\n    })\n  }\n\n  handleOptionBlur (event, index) {\n    const { focused, menuOpen, options, selected } = this.state\n    const focusingOutsideComponent = event.relatedTarget === null\n    const focusingInput = event.relatedTarget === this.elementReferences[-1]\n    const focusingAnotherOption = focused !== index && focused !== -1\n    const blurComponent = (!focusingAnotherOption && focusingOutsideComponent) || !(focusingAnotherOption || focusingInput)\n    if (blurComponent) {\n      const keepMenuOpen = menuOpen && isIosDevice()\n      this.handleComponentBlur({\n        menuOpen: keepMenuOpen,\n        query: this.templateInputValue(options[selected])\n      })\n    }\n  }\n\n  handleInputBlur (event) {\n    const { focused, menuOpen, options, query, selected } = this.state\n    const focusingAnOption = focused !== -1\n    if (!focusingAnOption) {\n      const keepMenuOpen = menuOpen && isIosDevice()\n      const newQuery = isIosDevice() ? query : this.templateInputValue(options[selected])\n      this.handleComponentBlur({\n        menuOpen: keepMenuOpen,\n        query: newQuery\n      })\n    }\n  }\n\n  handleInputChange (event) {\n    const { minLength, source, showAllValues } = this.props\n    const autoselect = this.hasAutoselect()\n    const query = event.target.value\n    const queryEmpty = query.length === 0\n    const queryChanged = this.state.query !== query\n    const queryLongEnough = query.length >= minLength\n\n    this.setState({\n      query,\n      ariaHint: queryEmpty\n    })\n\n    const searchForOptions = showAllValues || (!queryEmpty && queryChanged && queryLongEnough)\n    if (searchForOptions) {\n      source(query, (options) => {\n        const optionsAvailable = options.length > 0\n        this.setState({\n          menuOpen: optionsAvailable,\n          options,\n          selected: (autoselect && optionsAvailable) ? 0 : -1,\n          validChoiceMade: false\n        })\n      })\n    } else if (queryEmpty || !queryLongEnough) {\n      this.setState({\n        menuOpen: false,\n        options: []\n      })\n    }\n  }\n\n  handleInputClick (event) {\n    this.handleInputChange(event)\n  }\n\n  handleInputFocus (event) {\n    const { query, validChoiceMade, options } = this.state\n    const { minLength } = this.props\n    const shouldReopenMenu = !validChoiceMade && query.length >= minLength && options.length > 0\n\n    if (shouldReopenMenu) {\n      this.setState(({ menuOpen }) => ({ focused: -1, menuOpen: shouldReopenMenu || menuOpen, selected: -1 }))\n    } else {\n      this.setState({ focused: -1 })\n    }\n  }\n\n  handleOptionFocus (index) {\n    this.setState({\n      focused: index,\n      hovered: null,\n      selected: index\n    })\n  }\n\n  handleOptionMouseEnter (event, index) {\n    // iOS Safari prevents click event if mouseenter adds hover background colour\n    // See: https://developer.apple.com/library/archive/documentation/AppleApplications/Reference/SafariWebContent/HandlingEvents/HandlingEvents.html#//apple_ref/doc/uid/TP40006511-SW4\n    if (!isIosDevice()) {\n      this.setState({\n        hovered: index\n      })\n    }\n  }\n\n  handleOptionClick (event, index) {\n    const selectedOption = this.state.options[index]\n    const newQuery = this.templateInputValue(selectedOption)\n    this.props.onConfirm(selectedOption)\n    this.setState({\n      focused: -1,\n      hovered: null,\n      menuOpen: false,\n      query: newQuery,\n      selected: -1,\n      validChoiceMade: true\n    })\n    this.forceUpdate()\n  }\n\n  handleOptionMouseDown (event) {\n    // Safari triggers focusOut before click, but if you\n    // preventDefault on mouseDown, you can stop that from happening.\n    // If this is removed, clicking on an option in Safari will trigger\n    // `handleOptionBlur`, which closes the menu, and the click will\n    // trigger on the element underneath instead.\n    // See: http://stackoverflow.com/questions/7621711/how-to-prevent-blur-running-when-clicking-a-link-in-jquery\n    event.preventDefault()\n  }\n\n  handleUpArrow (event) {\n    event.preventDefault()\n    const { menuOpen, selected } = this.state\n    const isNotAtTop = selected !== -1\n    const allowMoveUp = isNotAtTop && menuOpen\n    if (allowMoveUp) {\n      this.handleOptionFocus(selected - 1)\n    }\n  }\n\n  handleDownArrow (event) {\n    event.preventDefault()\n    // if not open, open\n    if (this.props.showAllValues && this.state.menuOpen === false) {\n      event.preventDefault()\n      this.props.source('', (options) => {\n        this.setState({\n          menuOpen: true,\n          options,\n          selected: 0,\n          focused: 0,\n          hovered: null\n        })\n      })\n    } else if (this.state.menuOpen === true) {\n      const { menuOpen, options, selected } = this.state\n      const isNotAtBottom = selected !== options.length - 1\n      const allowMoveDown = isNotAtBottom && menuOpen\n      if (allowMoveDown) {\n        this.handleOptionFocus(selected + 1)\n      }\n    }\n  }\n\n  handleSpace (event) {\n    // if not open, open\n    if (this.props.showAllValues && this.state.menuOpen === false && this.state.query === '') {\n      event.preventDefault()\n      this.props.source('', (options) => {\n        this.setState({\n          menuOpen: true,\n          options\n        })\n      })\n    }\n    const focusIsOnOption = this.state.focused !== -1\n    if (focusIsOnOption) {\n      event.preventDefault()\n      this.handleOptionClick(event, this.state.focused)\n    }\n  }\n\n  handleEnter (event) {\n    if (this.state.menuOpen) {\n      event.preventDefault()\n      const hasSelectedOption = this.state.selected >= 0\n      if (hasSelectedOption) {\n        this.handleOptionClick(event, this.state.selected)\n      }\n    }\n  }\n\n  handlePrintableKey (event) {\n    const inputElement = this.elementReferences[-1]\n    const eventIsOnInput = event.target === inputElement\n    if (!eventIsOnInput) {\n      // FIXME: This would be better if it was in componentDidUpdate,\n      // but using setState to trigger that seems to not work correctly\n      // in preact@8.1.0.\n      inputElement.focus()\n    }\n  }\n\n  handleKeyDown (event) {\n    switch (keyCodes[event.keyCode]) {\n      case 'up':\n        this.handleUpArrow(event)\n        break\n      case 'down':\n        this.handleDownArrow(event)\n        break\n      case 'space':\n        this.handleSpace(event)\n        break\n      case 'enter':\n        this.handleEnter(event)\n        break\n      case 'escape':\n        this.handleComponentBlur({\n          query: this.state.query\n        })\n        break\n      default:\n        if (isPrintableKeyCode(event.keyCode)) {\n          this.handlePrintableKey(event)\n        }\n        break\n    }\n  }\n\n  render () {\n    const {\n      cssNamespace,\n      displayMenu,\n      id,\n      minLength,\n      name,\n      placeholder,\n      required,\n      showAllValues,\n      tNoResults,\n      tStatusQueryTooShort,\n      tStatusNoResults,\n      tStatusSelectedOption,\n      tStatusResults,\n      tAssistiveHint,\n      dropdownArrow: dropdownArrowFactory,\n      menuAttributes,\n      inputClasses,\n      hintClasses,\n      menuClasses\n    } = this.props\n    const { focused, hovered, menuOpen, options, query, selected, ariaHint, validChoiceMade } = this.state\n    const autoselect = this.hasAutoselect()\n\n    const inputFocused = focused === -1\n    const noOptionsAvailable = options.length === 0\n    const queryNotEmpty = query.length !== 0\n    const queryLongEnough = query.length >= minLength\n    const showNoOptionsFound = this.props.showNoOptionsFound &&\n      inputFocused && noOptionsAvailable && queryNotEmpty && queryLongEnough\n\n    const wrapperClassName = `${cssNamespace}__wrapper`\n    const statusClassName = `${cssNamespace}__status`\n    const dropdownArrowClassName = `${cssNamespace}__dropdown-arrow-down`\n    const optionFocused = focused !== -1 && focused !== null\n\n    const optionClassName = `${cssNamespace}__option`\n\n    const hintClassName = `${cssNamespace}__hint`\n    const selectedOptionText = this.templateInputValue(options[selected])\n    const optionBeginsWithQuery = selectedOptionText &&\n      selectedOptionText.toLowerCase().indexOf(query.toLowerCase()) === 0\n    const hintValue = (optionBeginsWithQuery && autoselect)\n      ? query + selectedOptionText.substr(query.length)\n      : ''\n\n    const assistiveHintID = id + '__assistiveHint'\n    const ariaProps = {\n      'aria-describedby': ariaHint ? assistiveHintID : null,\n      'aria-expanded': menuOpen ? 'true' : 'false',\n      'aria-activedescendant': optionFocused ? `${id}__option--${focused}` : null,\n      'aria-controls': `${id}__listbox`,\n      'aria-autocomplete': (this.hasAutoselect()) ? 'both' : 'list'\n    }\n\n    let dropdownArrow\n\n    // we only need a dropdown arrow if showAllValues is set to a truthy value\n    if (showAllValues) {\n      dropdownArrow = dropdownArrowFactory({ className: dropdownArrowClassName })\n\n      // if the factory returns a string we'll render this as HTML (usage w/o (P)React)\n      if (typeof dropdownArrow === 'string') {\n        dropdownArrow = <div className={`${cssNamespace}__dropdown-arrow-down-wrapper`} dangerouslySetInnerHTML={{ __html: dropdownArrow }} />\n      }\n    }\n\n    const inputClassName = `${cssNamespace}__input`\n    const inputClassList = [\n      inputClassName,\n      this.props.showAllValues ? `${inputClassName}--show-all-values` : `${inputClassName}--default`\n    ]\n\n    const componentIsFocused = focused !== null\n    if (componentIsFocused) {\n      inputClassList.push(`${inputClassName}--focused`)\n    }\n\n    if (inputClasses) {\n      inputClassList.push(inputClasses)\n    }\n\n    const menuClassName = `${cssNamespace}__menu`\n    const menuModifierDisplayMenu = `${menuClassName}--${displayMenu}`\n    const menuIsVisible = menuOpen || showNoOptionsFound\n    const menuModifierVisibility = `${menuClassName}--${(menuIsVisible) ? 'visible' : 'hidden'}`\n\n    const menuClassList = [\n      menuClassName,\n      menuModifierDisplayMenu,\n      menuModifierVisibility\n    ]\n\n    if (menuClasses) {\n      menuClassList.push(menuClasses)\n    }\n\n    if (menuAttributes?.class || menuAttributes?.className) {\n      menuClassList.push(menuAttributes?.class || menuAttributes?.className)\n    }\n\n    const computedMenuAttributes = {\n      // set aria-labelledby first so that users can override it with menuAttributes\n      'aria-labelledby': id,\n      // Copy the attributes passed as props\n      ...menuAttributes,\n      // And add the values computed for the autocomplete\n      id: `${id}__listbox`,\n      role: 'listbox',\n      className: menuClassList.join(' '),\n      onMouseLeave: this.handleListMouseLeave\n    }\n\n    // Preact would override our computed `className`\n    // with the `class` from the `menuAttributes` so\n    // we need to clean it up from the computed attributes\n    delete computedMenuAttributes.class\n\n    return (\n      <div className={wrapperClassName} onKeyDown={this.handleKeyDown}>\n        <Status\n          id={id}\n          length={options.length}\n          queryLength={query.length}\n          minQueryLength={minLength}\n          selectedOption={this.templateInputValue(options[selected])}\n          selectedOptionIndex={selected}\n          validChoiceMade={validChoiceMade}\n          isInFocus={this.state.focused !== null}\n          tQueryTooShort={tStatusQueryTooShort}\n          tNoResults={tStatusNoResults}\n          tSelectedOption={tStatusSelectedOption}\n          tResults={tStatusResults}\n          className={statusClassName}\n        />\n\n        {hintValue && (\n          <span><input className={[hintClassName, hintClasses === null ? inputClasses : hintClasses].filter(Boolean).join(' ')} readonly tabIndex='-1' value={hintValue} /></span>\n        )}\n\n        <input\n          {...ariaProps}\n          autoComplete='off'\n          className={inputClassList.join(' ')}\n          id={id}\n          onClick={this.handleInputClick}\n          onBlur={this.handleInputBlur}\n          {...onChangeCrossLibrary(this.handleInputChange)}\n          onFocus={this.handleInputFocus}\n          name={name}\n          placeholder={placeholder}\n          ref={(inputElement) => { this.elementReferences[-1] = inputElement }}\n          type='text'\n          role='combobox'\n          required={required}\n          value={query}\n        />\n\n        {dropdownArrow}\n\n        <ul {...computedMenuAttributes}>\n          {options.map((option, index) => {\n            const showFocused = focused === -1 ? selected === index : focused === index\n            const optionModifierFocused = showFocused && hovered === null ? ` ${optionClassName}--focused` : ''\n            const optionModifierOdd = (index % 2) ? ` ${optionClassName}--odd` : ''\n            const iosPosinsetHtml = (isIosDevice())\n              ? `<span id=${id}__option-suffix--${index} style=\"border:0;clip:rect(0 0 0 0);height:1px;` +\n                'marginBottom:-1px;marginRight:-1px;overflow:hidden;padding:0;position:absolute;' +\n                'whiteSpace:nowrap;width:1px\">' + ` ${index + 1} of ${options.length}</span>`\n              : ''\n\n            return (\n              <li\n                aria-selected={focused === index ? 'true' : 'false'}\n                className={`${optionClassName}${optionModifierFocused}${optionModifierOdd}`}\n                dangerouslySetInnerHTML={{ __html: this.templateSuggestion(option) + iosPosinsetHtml }}\n                id={`${id}__option--${index}`}\n                key={index}\n                onBlur={(event) => this.handleOptionBlur(event, index)}\n                onClick={(event) => this.handleOptionClick(event, index)}\n                onMouseDown={this.handleOptionMouseDown}\n                onMouseEnter={(event) => this.handleOptionMouseEnter(event, index)}\n                ref={(optionEl) => { this.elementReferences[index] = optionEl }}\n                role='option'\n                tabIndex='-1'\n                aria-posinset={index + 1}\n                aria-setsize={options.length}\n              />\n            )\n          })}\n\n          {showNoOptionsFound && (\n            <li className={`${optionClassName} ${optionClassName}--no-results`} role='option' aria-disabled='true'>{tNoResults()}</li>\n          )}\n        </ul>\n\n        <span id={assistiveHintID} style={{ display: 'none' }}>{tAssistiveHint()}</span>\n\n      </div>\n    )\n  }\n}\n", "import { createElement, render } from 'preact' /** @jsx createElement */\nimport Autocomplete from './autocomplete'\n\nfunction accessibleAutocomplete (options) {\n  if (!options.element) { throw new Error('element is not defined') }\n  if (!options.id) { throw new Error('id is not defined') }\n  if (!options.source) { throw new Error('source is not defined') }\n  if (Array.isArray(options.source)) {\n    options.source = createSimpleEngine(options.source)\n  }\n  render(<Autocomplete {...options} />, options.element)\n}\n\nconst createSimpleEngine = (values) => (query, syncResults) => {\n  const matches = values.filter(r => r.toLowerCase().indexOf(query.toLowerCase()) !== -1)\n  syncResults(matches)\n}\n\naccessibleAutocomplete.enhanceSelectElement = (configurationOptions) => {\n  if (!configurationOptions.selectElement) { throw new Error('selectElement is not defined') }\n\n  // Set defaults.\n  if (!configurationOptions.source) {\n    const availableOptions = [].filter.call(configurationOptions.selectElement.options, option => (option.value || configurationOptions.preserveNullOptions))\n    configurationOptions.source = availableOptions.map(option => option.textContent || option.innerText)\n  }\n  configurationOptions.onConfirm = configurationOptions.onConfirm || (query => {\n    const requestedOption = [].filter.call(configurationOptions.selectElement.options, option => (option.textContent || option.innerText) === query)[0]\n    if (requestedOption) { requestedOption.selected = true }\n  })\n\n  if (configurationOptions.selectElement.value || configurationOptions.defaultValue === undefined) {\n    const option = configurationOptions.selectElement.options[configurationOptions.selectElement.options.selectedIndex]\n    configurationOptions.defaultValue = option.textContent || option.innerText\n  }\n\n  if (configurationOptions.name === undefined) configurationOptions.name = ''\n  if (configurationOptions.id === undefined) {\n    if (configurationOptions.selectElement.id === undefined) {\n      configurationOptions.id = ''\n    } else {\n      configurationOptions.id = configurationOptions.selectElement.id\n    }\n  }\n  if (configurationOptions.autoselect === undefined) configurationOptions.autoselect = true\n\n  const element = document.createElement('div')\n\n  configurationOptions.selectElement.parentNode.insertBefore(element, configurationOptions.selectElement)\n\n  accessibleAutocomplete({\n    ...configurationOptions,\n    element\n  })\n\n  configurationOptions.selectElement.style.display = 'none'\n  configurationOptions.selectElement.id = configurationOptions.selectElement.id + '-select'\n}\n\nexport default accessibleAutocomplete\n", "/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n    nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n *   console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n  return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n *  Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n *  The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n *  Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n *   'leading': true,\n *   'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n  var lastArgs,\n      lastThis,\n      maxWait,\n      result,\n      timerId,\n      lastCallTime,\n      lastInvokeTime = 0,\n      leading = false,\n      maxing = false,\n      trailing = true;\n\n  if (typeof func != 'function') {\n    throw new TypeError(FUNC_ERROR_TEXT);\n  }\n  wait = toNumber(wait) || 0;\n  if (isObject(options)) {\n    leading = !!options.leading;\n    maxing = 'maxWait' in options;\n    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n    trailing = 'trailing' in options ? !!options.trailing : trailing;\n  }\n\n  function invokeFunc(time) {\n    var args = lastArgs,\n        thisArg = lastThis;\n\n    lastArgs = lastThis = undefined;\n    lastInvokeTime = time;\n    result = func.apply(thisArg, args);\n    return result;\n  }\n\n  function leadingEdge(time) {\n    // Reset any `maxWait` timer.\n    lastInvokeTime = time;\n    // Start the timer for the trailing edge.\n    timerId = setTimeout(timerExpired, wait);\n    // Invoke the leading edge.\n    return leading ? invokeFunc(time) : result;\n  }\n\n  function remainingWait(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime,\n        result = wait - timeSinceLastCall;\n\n    return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n  }\n\n  function shouldInvoke(time) {\n    var timeSinceLastCall = time - lastCallTime,\n        timeSinceLastInvoke = time - lastInvokeTime;\n\n    // Either this is the first call, activity has stopped and we're at the\n    // trailing edge, the system time has gone backwards and we're treating\n    // it as the trailing edge, or we've hit the `maxWait` limit.\n    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n  }\n\n  function timerExpired() {\n    var time = now();\n    if (shouldInvoke(time)) {\n      return trailingEdge(time);\n    }\n    // Restart the timer.\n    timerId = setTimeout(timerExpired, remainingWait(time));\n  }\n\n  function trailingEdge(time) {\n    timerId = undefined;\n\n    // Only invoke if we have `lastArgs` which means `func` has been\n    // debounced at least once.\n    if (trailing && lastArgs) {\n      return invokeFunc(time);\n    }\n    lastArgs = lastThis = undefined;\n    return result;\n  }\n\n  function cancel() {\n    if (timerId !== undefined) {\n      clearTimeout(timerId);\n    }\n    lastInvokeTime = 0;\n    lastArgs = lastCallTime = lastThis = timerId = undefined;\n  }\n\n  function flush() {\n    return timerId === undefined ? result : trailingEdge(now());\n  }\n\n  function debounced() {\n    var time = now(),\n        isInvoking = shouldInvoke(time);\n\n    lastArgs = arguments;\n    lastThis = this;\n    lastCallTime = time;\n\n    if (isInvoking) {\n      if (timerId === undefined) {\n        return leadingEdge(lastCallTime);\n      }\n      if (maxing) {\n        // Handle invocations in a tight loop.\n        timerId = setTimeout(timerExpired, wait);\n        return invokeFunc(lastCallTime);\n      }\n    }\n    if (timerId === undefined) {\n      timerId = setTimeout(timerExpired, wait);\n    }\n    return result;\n  }\n  debounced.cancel = cancel;\n  debounced.flush = flush;\n  return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n  var type = typeof value;\n  return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n  return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n  return typeof value == 'symbol' ||\n    (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n  if (typeof value == 'number') {\n    return value;\n  }\n  if (isSymbol(value)) {\n    return NAN;\n  }\n  if (isObject(value)) {\n    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n    value = isObject(other) ? (other + '') : other;\n  }\n  if (typeof value != 'string') {\n    return value === 0 ? value : +value;\n  }\n  value = value.replace(reTrim, '');\n  var isBinary = reIsBinary.test(value);\n  return (isBinary || reIsOctal.test(value))\n    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n    : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n", "/**\n * Common helpers which do not require polyfill.\n *\n * IMPORTANT: If a helper require a polyfill, please isolate it in its own module\n * so that the polyfill can be properly tree-shaken and does not burden\n * the components that do not need that helper\n */\n\n/**\n * Get hash fragment from URL\n *\n * Extract the hash fragment (everything after the hash) from a URL,\n * but not including the hash symbol\n *\n * @private\n * @param {string} url - URL\n * @returns {string | undefined} Fragment from URL, without the hash\n */\nexport function getFragmentFromUrl(url) {\n  if (!url.includes('#')) {\n    return undefined\n  }\n\n  return url.split('#').pop()\n}\n\n/**\n * Get GOV.UK Frontend breakpoint value from CSS custom property\n *\n * @private\n * @param {string} name - Breakpoint name\n * @returns {{ property: string, value?: string }} Breakpoint object\n */\nexport function getBreakpoint(name) {\n  const property = `--govuk-frontend-breakpoint-${name}`\n\n  // Get value from `<html>` with breakpoints on CSS :root\n  const value = window\n    .getComputedStyle(document.documentElement)\n    .getPropertyValue(property)\n\n  return {\n    property,\n    value: value || undefined\n  }\n}\n\n/**\n * Move focus to element\n *\n * Sets tabindex to -1 to make the element programmatically focusable,\n * but removes it on blur as the element doesn't need to be focused again.\n *\n * @private\n * @template {HTMLElement} FocusElement\n * @param {FocusElement} $element - HTML element\n * @param {object} [options] - Handler options\n * @param {function(this: FocusElement): void} [options.onBeforeFocus] - Callback before focus\n * @param {function(this: FocusElement): void} [options.onBlur] - Callback on blur\n */\nexport function setFocus($element, options = {}) {\n  const isFocusable = $element.getAttribute('tabindex')\n\n  if (!isFocusable) {\n    $element.setAttribute('tabindex', '-1')\n  }\n\n  /**\n   * Handle element focus\n   */\n  function onFocus() {\n    $element.addEventListener('blur', onBlur, { once: true })\n  }\n\n  /**\n   * Handle element blur\n   */\n  function onBlur() {\n    options.onBlur?.call($element)\n\n    if (!isFocusable) {\n      $element.removeAttribute('tabindex')\n    }\n  }\n\n  // Add listener to reset element on blur, after focus\n  $element.addEventListener('focus', onFocus, { once: true })\n\n  // Focus element\n  options.onBeforeFocus?.call($element)\n  $element.focus()\n}\n\n/**\n * Checks if component is already initialised\n *\n * @internal\n * @param {Element} $root - HTML element to be checked\n * @param {string} moduleName - name of component module\n * @returns {boolean} Whether component is already initialised\n */\nexport function isInitialised($root, moduleName) {\n  return (\n    $root instanceof HTMLElement &&\n    $root.hasAttribute(`data-${moduleName}-init`)\n  )\n}\n\n/**\n * Checks if GOV.UK Frontend is supported on this page\n *\n * Some browsers will load and run our JavaScript but GOV.UK Frontend\n * won't be supported.\n *\n * @param {HTMLElement | null} [$scope] - (internal) `<body>` HTML element checked for browser support\n * @returns {boolean} Whether GOV.UK Frontend is supported on this page\n */\nexport function isSupported($scope = document.body) {\n  if (!$scope) {\n    return false\n  }\n\n  return $scope.classList.contains('govuk-frontend-supported')\n}\n\n/**\n * Check for an array\n *\n * @internal\n * @param {unknown} option - Option to check\n * @returns {boolean} Whether the option is an array\n */\nfunction isArray(option) {\n  return Array.isArray(option)\n}\n\n/**\n * Check for an object\n *\n * @internal\n * @template {Partial<Record<keyof ObjectType, unknown>>} [ObjectType=ObjectNested]\n * @param {unknown | ObjectType} option - Option to check\n * @returns {option is ObjectType} Whether the option is an object\n */\nexport function isObject(option) {\n  return !!option && typeof option === 'object' && !isArray(option)\n}\n\n/**\n * Format error message\n *\n * @internal\n * @param {ComponentWithModuleName} Component - Component that threw the error\n * @param {string} message - Error message\n * @returns {string} - Formatted error message\n */\nexport function formatErrorMessage(Component, message) {\n  return `${Component.moduleName}: ${message}`\n}\n\n/* eslint-disable jsdoc/valid-types --\n * `{new(...args: any[] ): object}` is not recognised as valid\n * https://github.com/gajus/eslint-plugin-jsdoc/issues/145#issuecomment-1308722878\n * https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/131\n **/\n\n/**\n * @typedef ComponentWithModuleName\n * @property {string} moduleName - Name of the component\n */\n\n/* eslint-enable jsdoc/valid-types */\n\n/**\n * @import { ObjectNested } from './configuration.mjs'\n */\n", "import { formatErrorMessage } from '../common/index.mjs'\n\n/**\n * GOV.UK Frontend error\n *\n * A base class for `Error`s thrown by GOV.UK Frontend.\n *\n * It is meant to be extended into specific types of errors\n * to be thrown by our code.\n *\n * @example\n * ```js\n * class MissingRootError extends GOVUKFrontendError {\n *   // Setting an explicit name is important as extending the class will not\n *   // set a new `name` on the subclass. The `name` property is important\n *   // to ensure intelligible error names even if the class name gets\n *   // mangled by a minifier\n *   name = \"MissingRootError\"\n * }\n * ```\n * @virtual\n */\nexport class GOVUKFrontendError extends Error {\n  name = 'GOVUKFrontendError'\n}\n\n/**\n * Indicates that GOV.UK Frontend is not supported\n */\nexport class SupportError extends GOVUKFrontendError {\n  name = 'SupportError'\n\n  /**\n   * Checks if GOV.UK Frontend is supported on this page\n   *\n   * @param {HTMLElement | null} [$scope] - HTML element `<body>` checked for browser support\n   */\n  constructor($scope = document.body) {\n    const supportMessage =\n      'noModule' in HTMLScriptElement.prototype\n        ? 'GOV.UK Frontend initialised without `<body class=\"govuk-frontend-supported\">` from template `<script>` snippet'\n        : 'GOV.UK Frontend is not supported in this browser'\n\n    super(\n      $scope\n        ? supportMessage\n        : 'GOV.UK Frontend initialised without `<script type=\"module\">`'\n    )\n  }\n}\n\n/**\n * Indicates that a component has received an illegal configuration\n */\nexport class ConfigError extends GOVUKFrontendError {\n  name = 'ConfigError'\n}\n\n/**\n * Indicates an issue with an element (possibly `null` or `undefined`)\n */\nexport class ElementError extends GOVUKFrontendError {\n  name = 'ElementError'\n\n  /**\n   * @internal\n   * @overload\n   * @param {string} message - Element error message\n   */\n\n  /**\n   * @internal\n   * @overload\n   * @param {ElementErrorOptions} options - Element error options\n   */\n\n  /**\n   * @internal\n   * @param {string | ElementErrorOptions} messageOrOptions - Element error message or options\n   */\n  constructor(messageOrOptions) {\n    let message = typeof messageOrOptions === 'string' ? messageOrOptions : ''\n\n    // Build message from options\n    if (typeof messageOrOptions === 'object') {\n      const { component, identifier, element, expectedType } = messageOrOptions\n\n      message = identifier\n\n      // Append reason\n      message += element\n        ? ` is not of type ${expectedType ?? 'HTMLElement'}`\n        : ' not found'\n\n      message = formatErrorMessage(component, message)\n    }\n\n    super(message)\n  }\n}\n\n/**\n * Indicates that a component is already initialised\n */\nexport class InitError extends GOVUKFrontendError {\n  name = 'InitError'\n\n  /**\n   * @internal\n   * @param {ComponentWithModuleName | string} componentOrMessage - name of the component module\n   */\n  constructor(componentOrMessage) {\n    const message =\n      typeof componentOrMessage === 'string'\n        ? componentOrMessage\n        : formatErrorMessage(\n            componentOrMessage,\n            `Root element (\\`$root\\`) already initialised`\n          )\n\n    super(message)\n  }\n}\n\n/**\n * Element error options\n *\n * @internal\n * @typedef {object} ElementErrorOptions\n * @property {string} identifier - An identifier that'll let the user understand which element has an error. This is whatever makes the most sense\n * @property {Element | null} [element] - The element in error\n * @property {string} [expectedType] - The type that was expected for the identifier\n * @property {ComponentWithModuleName} component - Component throwing the error\n */\n\n/**\n * @import { ComponentWithModuleName } from '../common/index.mjs'\n */\n", "import { isInitialised, isSupported } from './common/index.mjs'\nimport { ElementError, InitError, SupportError } from './errors/index.mjs'\n\n/**\n * Base Component class\n *\n * Centralises the behaviours shared by our components\n *\n * @virtual\n * @template {Element} [RootElementType=HTMLElement]\n */\nexport class Component {\n  /**\n   * @type {typeof Element}\n   */\n  static elementType = HTMLElement\n\n  // allows Typescript user to work around the lack of types\n  // in GOVUKFrontend package, Typescript is not aware of $root\n  // in components that extend GOVUKFrontendComponent\n  /**\n   * Returns the root element of the component\n   *\n   * @protected\n   * @returns {RootElementType} - the root element of component\n   */\n  get $root() {\n    return this._$root\n  }\n\n  /**\n   * @protected\n   * @type {RootElementType}\n   */\n  _$root\n\n  /**\n   * Constructs a new component, validating that GOV.UK Frontend is supported\n   *\n   * @internal\n   * @param {Element | null} [$root] - HTML element to use for component\n   */\n  constructor($root) {\n    const childConstructor = /** @type {ChildClassConstructor} */ (\n      this.constructor\n    )\n\n    // TypeScript does not enforce that inheriting classes will define a `moduleName`\n    // (even if we add a `@virtual` `static moduleName` property to this class).\n    // While we trust users to do this correctly, we do a little check to provide them\n    // a helpful error message.\n    //\n    // After this, we'll be sure that `childConstructor` has a `moduleName`\n    // as expected of the `ChildClassConstructor` we've cast `this.constructor` to.\n    if (typeof childConstructor.moduleName !== 'string') {\n      throw new InitError(`\\`moduleName\\` not defined in component`)\n    }\n\n    if (!($root instanceof childConstructor.elementType)) {\n      throw new ElementError({\n        element: $root,\n        component: childConstructor,\n        identifier: 'Root element (`$root`)',\n        expectedType: childConstructor.elementType.name\n      })\n    } else {\n      this._$root = /** @type {RootElementType} */ ($root)\n    }\n\n    childConstructor.checkSupport()\n\n    this.checkInitialised()\n\n    const moduleName = childConstructor.moduleName\n\n    this.$root.setAttribute(`data-${moduleName}-init`, '')\n  }\n\n  /**\n   * Validates whether component is already initialised\n   *\n   * @private\n   * @throws {InitError} when component is already initialised\n   */\n  checkInitialised() {\n    const constructor = /** @type {ChildClassConstructor} */ (this.constructor)\n    const moduleName = constructor.moduleName\n\n    if (moduleName && isInitialised(this.$root, moduleName)) {\n      throw new InitError(constructor)\n    }\n  }\n\n  /**\n   * Validates whether components are supported\n   *\n   * @throws {SupportError} when the components are not supported\n   */\n  static checkSupport() {\n    if (!isSupported()) {\n      throw new SupportError()\n    }\n  }\n}\n\n/**\n * @typedef ChildClass\n * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component\n */\n\n/**\n * @typedef {typeof Component & ChildClass} ChildClassConstructor\n */\n", "import { Component } from '../component.mjs'\nimport { ConfigError } from '../errors/index.mjs'\n\nimport { isObject, formatErrorMessage } from './index.mjs'\n\nexport const configOverride = Symbol.for('configOverride')\n\n/**\n * Base Component class\n *\n * Centralises the behaviours shared by our components\n *\n * @virtual\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} [ConfigurationType=ObjectNested]\n * @template {Element & { dataset: DOMStringMap }} [RootElementType=HTMLElement]\n * @augments Component<RootElementType>\n */\nexport class ConfigurableComponent extends Component {\n  /**\n   * configOverride\n   *\n   * Function which defines configuration overrides to prioritize\n   * properties from the root element's dataset.\n   *\n   * It should take a subset of configuration as input and return\n   * a new configuration object with properties that should be\n   * overridden based on the root element's dataset. A Symbol\n   * is used for indexing to prevent conflicts.\n   *\n   * @internal\n   * @virtual\n   * @param {Partial<ConfigurationType>} [param] - Configuration object\n   * @returns {Partial<ConfigurationType>} return - Configuration object\n   */\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  [configOverride](param) {\n    return {}\n  }\n\n  /**\n   * Returns the root element of the component\n   *\n   * @protected\n   * @returns {ConfigurationType} - the root element of component\n   */\n  get config() {\n    return this._config\n  }\n\n  /**\n   *\n   * @type {ConfigurationType}\n   */\n  _config\n\n  /**\n   * Constructs a new component, validating that GOV.UK Frontend is supported\n   *\n   * @internal\n   * @param {Element | null} [$root] - HTML element to use for component\n   * @param {ConfigurationType} [config] - HTML element to use for component\n   */\n  constructor($root, config) {\n    super($root)\n\n    const childConstructor =\n      /** @type {ChildClassConstructor<ConfigurationType>} */ (this.constructor)\n\n    if (!isObject(childConstructor.defaults)) {\n      throw new ConfigError(\n        formatErrorMessage(\n          childConstructor,\n          'Config passed as parameter into constructor but no defaults defined'\n        )\n      )\n    }\n\n    const datasetConfig = /** @type {ConfigurationType} */ (\n      normaliseDataset(childConstructor, this._$root.dataset)\n    )\n\n    this._config = /** @type {ConfigurationType} */ (\n      mergeConfigs(\n        childConstructor.defaults,\n        config ?? {},\n        this[configOverride](datasetConfig),\n        datasetConfig\n      )\n    )\n  }\n}\n\n/**\n * Normalise string\n *\n * 'If it looks like a duck, and it quacks like a duck…' 🦆\n *\n * If the passed value looks like a boolean or a number, convert it to a boolean\n * or number.\n *\n * Designed to be used to convert config passed via data attributes (which are\n * always strings) into something sensible.\n *\n * @internal\n * @param {DOMStringMap[string]} value - The value to normalise\n * @param {SchemaProperty} [property] - Component schema property\n * @returns {string | boolean | number | undefined} Normalised data\n */\nexport function normaliseString(value, property) {\n  const trimmedValue = value ? value.trim() : ''\n\n  let output\n  let outputType = property?.type\n\n  // No schema type set? Determine automatically\n  if (!outputType) {\n    if (['true', 'false'].includes(trimmedValue)) {\n      outputType = 'boolean'\n    }\n\n    // Empty / whitespace-only strings are considered finite so we need to check\n    // the length of the trimmed string as well\n    if (trimmedValue.length > 0 && isFinite(Number(trimmedValue))) {\n      outputType = 'number'\n    }\n  }\n\n  switch (outputType) {\n    case 'boolean':\n      output = trimmedValue === 'true'\n      break\n\n    case 'number':\n      output = Number(trimmedValue)\n      break\n\n    default:\n      output = value\n  }\n\n  return output\n}\n\n/**\n * Normalise dataset\n *\n * Loop over an object and normalise each value using {@link normaliseString},\n * optionally expanding nested `i18n.field`\n *\n * @internal\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} ConfigurationType\n * @template {[keyof ConfigurationType, SchemaProperty | undefined][]} SchemaEntryType\n * @param {{ schema?: Schema<ConfigurationType>, moduleName: string }} Component - Component class\n * @param {DOMStringMap} dataset - HTML element dataset\n * @returns {ObjectNested} Normalised dataset\n */\nexport function normaliseDataset(Component, dataset) {\n  if (!isObject(Component.schema)) {\n    throw new ConfigError(\n      formatErrorMessage(\n        Component,\n        'Config passed as parameter into constructor but no schema defined'\n      )\n    )\n  }\n\n  const out = /** @type {ObjectNested} */ ({})\n  const entries = /** @type {SchemaEntryType} */ (\n    Object.entries(Component.schema.properties)\n  )\n\n  // Normalise top-level dataset ('data-*') values using schema types\n  for (const entry of entries) {\n    const [namespace, property] = entry\n\n    // Cast the `namespace` to string so it can be used to access the dataset\n    const field = namespace.toString()\n\n    if (field in dataset) {\n      out[field] = normaliseString(dataset[field], property)\n    }\n\n    /**\n     * Extract and normalise nested object values automatically using\n     * {@link normaliseString} but only schema object types are allowed\n     */\n    if (property?.type === 'object') {\n      out[field] = extractConfigByNamespace(\n        Component.schema,\n        dataset,\n        namespace\n      )\n    }\n  }\n\n  return out\n}\n\n/**\n * Config merging function\n *\n * Takes any number of objects and combines them together, with\n * greatest priority on the LAST item passed in.\n *\n * @internal\n * @param {...{ [key: string]: unknown }} configObjects - Config objects to merge\n * @returns {{ [key: string]: unknown }} A merged config object\n */\nexport function mergeConfigs(...configObjects) {\n  // Start with an empty object as our base\n  /** @type {{ [key: string]: unknown }} */\n  const formattedConfigObject = {}\n\n  // Loop through each of the passed objects\n  for (const configObject of configObjects) {\n    for (const key of Object.keys(configObject)) {\n      const option = formattedConfigObject[key]\n      const override = configObject[key]\n\n      // Push their keys one-by-one into formattedConfigObject. Any duplicate\n      // keys with object values will be merged, otherwise the new value will\n      // override the existing value.\n      if (isObject(option) && isObject(override)) {\n        formattedConfigObject[key] = mergeConfigs(option, override)\n      } else {\n        // Apply override\n        formattedConfigObject[key] = override\n      }\n    }\n  }\n\n  return formattedConfigObject\n}\n\n/**\n * Validate component config by schema\n *\n * Follows limited examples in JSON schema for wider support in future\n *\n * {@link https://ajv.js.org/json-schema.html#compound-keywords}\n * {@link https://ajv.js.org/packages/ajv-errors.html#single-message}\n *\n * @internal\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} ConfigurationType\n * @param {Schema<ConfigurationType>} schema - The schema of a component\n * @param {ConfigurationType} config - Component config\n * @returns {string[]} List of validation errors\n */\nexport function validateConfig(schema, config) {\n  const validationErrors = []\n\n  // Check errors for each schema\n  for (const [name, conditions] of Object.entries(schema)) {\n    const errors = []\n\n    // Check errors for each schema condition\n    if (Array.isArray(conditions)) {\n      for (const { required, errorMessage } of conditions) {\n        if (!required.every((key) => !!config[key])) {\n          errors.push(errorMessage) // Missing config key value\n        }\n      }\n\n      // Check one condition passes or add errors\n      if (name === 'anyOf' && !(conditions.length - errors.length >= 1)) {\n        validationErrors.push(...errors)\n      }\n    }\n  }\n\n  return validationErrors\n}\n\n/**\n * Extracts keys starting with a particular namespace from dataset ('data-*')\n * object, removing the namespace in the process, normalising all values\n *\n * @internal\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} ConfigurationType\n * @param {Schema<ConfigurationType>} schema - The schema of a component\n * @param {DOMStringMap} dataset - The object to extract key-value pairs from\n * @param {keyof ConfigurationType} namespace - The namespace to filter keys with\n * @returns {ObjectNested | undefined} Nested object with dot-separated key namespace removed\n */\nexport function extractConfigByNamespace(schema, dataset, namespace) {\n  const property = schema.properties[namespace]\n\n  // Only extract configs for object schema properties\n  if (property?.type !== 'object') {\n    return\n  }\n\n  // Add default empty config\n  const newObject = /** @type {Record<typeof namespace, ObjectNested>} */ ({\n    [namespace]: {}\n  })\n\n  for (const [key, value] of Object.entries(dataset)) {\n    /** @type {ObjectNested | ObjectNested[NestedKey]} */\n    let current = newObject\n\n    // Split the key into parts, using . as our namespace separator\n    const keyParts = key.split('.')\n\n    /**\n     * Create new level per part\n     *\n     * e.g. 'i18n.textareaDescription.other' becomes\n     * `{ i18n: { textareaDescription: { other } } }`\n     */\n    for (const [index, name] of keyParts.entries()) {\n      if (isObject(current)) {\n        // Drop down to nested object until the last part\n        if (index < keyParts.length - 1) {\n          // New nested object (optionally) replaces existing value\n          if (!isObject(current[name])) {\n            current[name] = {}\n          }\n\n          // Drop down into new or existing nested object\n          current = current[name]\n        } else if (key !== namespace) {\n          // Normalised value (optionally) replaces existing value\n          current[name] = normaliseString(value)\n        }\n      }\n    }\n  }\n\n  return newObject[namespace]\n}\n\n/**\n * @internal\n * @typedef {keyof ObjectNested} NestedKey\n * @typedef {{ [key: string]: string | boolean | number | ObjectNested | undefined }} ObjectNested\n */\n\n/**\n * Schema for component config\n *\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} ConfigurationType\n * @typedef {object} Schema\n * @property {Record<keyof ConfigurationType, SchemaProperty | undefined>} properties - Schema properties\n * @property {SchemaCondition<ConfigurationType>[]} [anyOf] - List of schema conditions\n */\n\n/**\n * Schema property for component config\n *\n * @typedef {object} SchemaProperty\n * @property {'string' | 'boolean' | 'number' | 'object'} type - Property type\n */\n\n/**\n * Schema condition for component config\n *\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} ConfigurationType\n * @typedef {object} SchemaCondition\n * @property {(keyof ConfigurationType)[]} required - List of required config fields\n * @property {string} errorMessage - Error message when required config fields not provided\n */\n\n/**\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} [ConfigurationType=ObjectNested]\n * @typedef ChildClass\n * @property {string} moduleName - The module name that'll be looked for in the DOM when initialising the component\n * @property {Schema<ConfigurationType>} [schema] - The schema of the component configuration\n * @property {ConfigurationType} [defaults] - The default values of the configuration of the component\n */\n\n/**\n * @template {Partial<Record<keyof ConfigurationType, unknown>>} [ConfigurationType=ObjectNested]\n * @typedef {typeof Component & ChildClass<ConfigurationType>} ChildClassConstructor<ConfigurationType>\n */\n", "/**\n * Internal support for selecting messages to render, with placeholder\n * interpolation and locale-aware number formatting and pluralisation\n *\n * @internal\n */\nexport class I18n {\n  translations\n  locale\n\n  /**\n   * @internal\n   * @param {{ [key: string]: string | TranslationPluralForms }} translations - Key-value pairs of the translation strings to use.\n   * @param {object} [config] - Configuration options for the function.\n   * @param {string | null} [config.locale] - An overriding locale for the PluralRules functionality.\n   */\n  constructor(translations = {}, config = {}) {\n    // Make list of translations available throughout function\n    this.translations = translations\n\n    // The locale to use for PluralRules and NumberFormat\n    this.locale = config.locale ?? (document.documentElement.lang || 'en')\n  }\n\n  /**\n   * The most used function - takes the key for a given piece of UI text and\n   * returns the appropriate string.\n   *\n   * @internal\n   * @param {string} lookupKey - The lookup key of the string to use.\n   * @param {{ [key: string]: unknown }} [options] - Any options passed with the translation string, e.g: for string interpolation.\n   * @returns {string} The appropriate translation string.\n   * @throws {Error} Lookup key required\n   * @throws {Error} Options required for `${}` placeholders\n   */\n  t(lookupKey, options) {\n    if (!lookupKey) {\n      // Print a console error if no lookup key has been provided\n      throw new Error('i18n: lookup key missing')\n    }\n\n    // Fetch the translation for that lookup key\n    let translation = this.translations[lookupKey]\n\n    // If the `count` option is set, determine which plural suffix is needed and\n    // change the lookupKey to match. We check to see if it's numeric instead of\n    // falsy, as this could legitimately be 0.\n    if (typeof options?.count === 'number' && typeof translation === 'object') {\n      const translationPluralForm =\n        translation[this.getPluralSuffix(lookupKey, options.count)]\n\n      // Update translation with plural suffix\n      if (translationPluralForm) {\n        translation = translationPluralForm\n      }\n    }\n\n    if (typeof translation === 'string') {\n      // Check for ${} placeholders in the translation string\n      if (translation.match(/%{(.\\S+)}/)) {\n        if (!options) {\n          throw new Error(\n            'i18n: cannot replace placeholders in string if no option data provided'\n          )\n        }\n\n        return this.replacePlaceholders(translation, options)\n      }\n\n      return translation\n    }\n\n    // If the key wasn't found in our translations object,\n    // return the lookup key itself as the fallback\n    return lookupKey\n  }\n\n  /**\n   * Takes a translation string with placeholders, and replaces the placeholders\n   * with the provided data\n   *\n   * @internal\n   * @param {string} translationString - The translation string\n   * @param {{ [key: string]: unknown }} options - Any options passed with the translation string, e.g: for string interpolation.\n   * @returns {string} The translation string to output, with $\\{\\} placeholders replaced\n   */\n  replacePlaceholders(translationString, options) {\n    const formatter = Intl.NumberFormat.supportedLocalesOf(this.locale).length\n      ? new Intl.NumberFormat(this.locale)\n      : undefined\n\n    return translationString.replace(\n      /%{(.\\S+)}/g,\n\n      /**\n       * Replace translation string placeholders\n       *\n       * @internal\n       * @param {string} placeholderWithBraces - Placeholder with braces\n       * @param {string} placeholderKey - Placeholder key\n       * @returns {string} Placeholder value\n       */\n      function (placeholderWithBraces, placeholderKey) {\n        if (Object.prototype.hasOwnProperty.call(options, placeholderKey)) {\n          const placeholderValue = options[placeholderKey]\n\n          // If a user has passed `false` as the value for the placeholder\n          // treat it as though the value should not be displayed\n          if (\n            placeholderValue === false ||\n            (typeof placeholderValue !== 'number' &&\n              typeof placeholderValue !== 'string')\n          ) {\n            return ''\n          }\n\n          // If the placeholder's value is a number, localise the number formatting\n          if (typeof placeholderValue === 'number') {\n            return formatter\n              ? formatter.format(placeholderValue)\n              : `${placeholderValue}`\n          }\n\n          return placeholderValue\n        }\n\n        throw new Error(\n          `i18n: no data found to replace ${placeholderWithBraces} placeholder in string`\n        )\n      }\n    )\n  }\n\n  /**\n   * Check to see if the browser supports Intl.PluralRules\n   *\n   * It requires all conditions to be met in order to be supported:\n   * - The implementation of Intl supports PluralRules (NOT true in Safari 10–12)\n   * - The browser/OS has plural rules for the current locale (browser dependent)\n   *\n   * {@link https://browsersl.ist/#q=supports+es6-module+and+not+supports+intl-pluralrules}\n   *\n   * @internal\n   * @returns {boolean} Returns true if all conditions are met. Returns false otherwise.\n   */\n  hasIntlPluralRulesSupport() {\n    return Boolean(\n      'PluralRules' in window.Intl &&\n        Intl.PluralRules.supportedLocalesOf(this.locale).length\n    )\n  }\n\n  /**\n   * Get the appropriate suffix for the plural form.\n   *\n   * Uses Intl.PluralRules (or our own fallback implementation) to get the\n   * 'preferred' form to use for the given count.\n   *\n   * Checks that a translation has been provided for that plural form – if it\n   * hasn't, it'll fall back to the 'other' plural form (unless that doesn't exist\n   * either, in which case an error will be thrown)\n   *\n   * @internal\n   * @param {string} lookupKey - The lookup key of the string to use.\n   * @param {number} count - Number used to determine which pluralisation to use.\n   * @returns {PluralRule} The suffix associated with the correct pluralisation for this locale.\n   * @throws {Error} Plural form `.other` required when preferred plural form is missing\n   */\n  getPluralSuffix(lookupKey, count) {\n    // Validate that the number is actually a number.\n    //\n    // Number(count) will turn anything that can't be converted to a Number type\n    // into 'NaN'. isFinite filters out NaN, as it isn't a finite number.\n    count = Number(count)\n    if (!isFinite(count)) {\n      return 'other'\n    }\n\n    // Fetch the translation for that lookup key\n    const translation = this.translations[lookupKey]\n\n    // Check to verify that all the requirements for Intl.PluralRules are met.\n    // If so, we can use that instead of our custom implementation. Otherwise,\n    // use the hardcoded fallback.\n    const preferredForm = this.hasIntlPluralRulesSupport()\n      ? new Intl.PluralRules(this.locale).select(count)\n      : this.selectPluralFormUsingFallbackRules(count)\n\n    // Use the correct plural form if provided\n    if (typeof translation === 'object') {\n      if (preferredForm in translation) {\n        return preferredForm\n        // Fall back to `other` if the plural form is missing, but log a warning\n        // to the console\n      } else if ('other' in translation) {\n        console.warn(\n          `i18n: Missing plural form \".${preferredForm}\" for \"${this.locale}\" locale. Falling back to \".other\".`\n        )\n\n        return 'other'\n      }\n    }\n\n    // If the required `other` plural form is missing, all we can do is error\n    throw new Error(\n      `i18n: Plural form \".other\" is required for \"${this.locale}\" locale`\n    )\n  }\n\n  /**\n   * Get the plural form using our fallback implementation\n   *\n   * This is split out into a separate function to make it easier to test the\n   * fallback behaviour in an environment where Intl.PluralRules exists.\n   *\n   * @internal\n   * @param {number} count - Number used to determine which pluralisation to use.\n   * @returns {PluralRule} The pluralisation form for count in this locale.\n   */\n  selectPluralFormUsingFallbackRules(count) {\n    // Currently our custom code can only handle positive integers, so let's\n    // make sure our number is one of those.\n    count = Math.abs(Math.floor(count))\n\n    const ruleset = this.getPluralRulesForLocale()\n\n    if (ruleset) {\n      return I18n.pluralRules[ruleset](count)\n    }\n\n    return 'other'\n  }\n\n  /**\n   * Work out which pluralisation rules to use for the current locale\n   *\n   * The locale may include a regional indicator (such as en-GB), but we don't\n   * usually care about this part, as pluralisation rules are usually the same\n   * regardless of region. There are exceptions, however, (e.g. Portuguese) so\n   * this searches by both the full and shortened locale codes, just to be sure.\n   *\n   * @internal\n   * @returns {string | undefined} The name of the pluralisation rule to use (a key for one\n   *   of the functions in this.pluralRules)\n   */\n  getPluralRulesForLocale() {\n    const localeShort = this.locale.split('-')[0]\n\n    // Look through the plural rules map to find which `pluralRule` is\n    // appropriate for our current `locale`.\n    for (const pluralRule in I18n.pluralRulesMap) {\n      const languages = I18n.pluralRulesMap[pluralRule]\n      if (languages.includes(this.locale) || languages.includes(localeShort)) {\n        return pluralRule\n      }\n    }\n  }\n\n  /**\n   * Map of plural rules to languages where those rules apply.\n   *\n   * Note: These groups are named for the most dominant or recognisable language\n   * that uses each system. The groupings do not imply that the languages are\n   * related to one another. Many languages have evolved the same systems\n   * independently of one another.\n   *\n   * Code to support more languages can be found in the i18n spike:\n   * {@link https://github.com/alphagov/govuk-frontend/blob/spike-i18n-support/src/govuk/i18n.mjs}\n   *\n   * Languages currently supported:\n   *\n   * Arabic: Arabic (ar)\n   * Chinese: Burmese (my), Chinese (zh), Indonesian (id), Japanese (ja),\n   *   Javanese (jv), Korean (ko), Malay (ms), Thai (th), Vietnamese (vi)\n   * French: Armenian (hy), Bangla (bn), French (fr), Gujarati (gu), Hindi (hi),\n   *   Persian Farsi (fa), Punjabi (pa), Zulu (zu)\n   * German: Afrikaans (af), Albanian (sq), Azerbaijani (az), Basque (eu),\n   *   Bulgarian (bg), Catalan (ca), Danish (da), Dutch (nl), English (en),\n   *   Estonian (et), Finnish (fi), Georgian (ka), German (de), Greek (el),\n   *   Hungarian (hu), Luxembourgish (lb), Norwegian (no), Somali (so),\n   *   Swahili (sw), Swedish (sv), Tamil (ta), Telugu (te), Turkish (tr),\n   *   Urdu (ur)\n   * Irish: Irish Gaelic (ga)\n   * Russian: Russian (ru), Ukrainian (uk)\n   * Scottish: Scottish Gaelic (gd)\n   * Spanish: European Portuguese (pt-PT), Italian (it), Spanish (es)\n   * Welsh: Welsh (cy)\n   *\n   * @internal\n   * @type {{ [key: string]: string[] }}\n   */\n  static pluralRulesMap = {\n    arabic: ['ar'],\n    chinese: ['my', 'zh', 'id', 'ja', 'jv', 'ko', 'ms', 'th', 'vi'],\n    french: ['hy', 'bn', 'fr', 'gu', 'hi', 'fa', 'pa', 'zu'],\n    german: [\n      'af',\n      'sq',\n      'az',\n      'eu',\n      'bg',\n      'ca',\n      'da',\n      'nl',\n      'en',\n      'et',\n      'fi',\n      'ka',\n      'de',\n      'el',\n      'hu',\n      'lb',\n      'no',\n      'so',\n      'sw',\n      'sv',\n      'ta',\n      'te',\n      'tr',\n      'ur'\n    ],\n    irish: ['ga'],\n    russian: ['ru', 'uk'],\n    scottish: ['gd'],\n    spanish: ['pt-PT', 'it', 'es'],\n    welsh: ['cy']\n  }\n\n  /**\n   * Different pluralisation rule sets\n   *\n   * Returns the appropriate suffix for the plural form associated with `n`.\n   * Possible suffixes: 'zero', 'one', 'two', 'few', 'many', 'other' (the actual\n   * meaning of each differs per locale). 'other' should always exist, even in\n   * languages without plurals, such as Chinese.\n   * {@link https://cldr.unicode.org/index/cldr-spec/plural-rules}\n   *\n   * The count must be a positive integer. Negative numbers and decimals aren't accounted for\n   *\n   * @internal\n   * @type {{ [key: string]: (count: number) => PluralRule }}\n   */\n  static pluralRules = {\n    arabic(n) {\n      if (n === 0) {\n        return 'zero'\n      }\n      if (n === 1) {\n        return 'one'\n      }\n      if (n === 2) {\n        return 'two'\n      }\n      if (n % 100 >= 3 && n % 100 <= 10) {\n        return 'few'\n      }\n      if (n % 100 >= 11 && n % 100 <= 99) {\n        return 'many'\n      }\n      return 'other'\n    },\n    chinese() {\n      return 'other'\n    },\n    french(n) {\n      return n === 0 || n === 1 ? 'one' : 'other'\n    },\n    german(n) {\n      return n === 1 ? 'one' : 'other'\n    },\n    irish(n) {\n      if (n === 1) {\n        return 'one'\n      }\n      if (n === 2) {\n        return 'two'\n      }\n      if (n >= 3 && n <= 6) {\n        return 'few'\n      }\n      if (n >= 7 && n <= 10) {\n        return 'many'\n      }\n      return 'other'\n    },\n    russian(n) {\n      const lastTwo = n % 100\n      const last = lastTwo % 10\n      if (last === 1 && lastTwo !== 11) {\n        return 'one'\n      }\n      if (last >= 2 && last <= 4 && !(lastTwo >= 12 && lastTwo <= 14)) {\n        return 'few'\n      }\n      if (\n        last === 0 ||\n        (last >= 5 && last <= 9) ||\n        (lastTwo >= 11 && lastTwo <= 14)\n      ) {\n        return 'many'\n      }\n      // Note: The 'other' suffix is only used by decimal numbers in Russian.\n      // We don't anticipate it being used, but it's here for consistency.\n      return 'other'\n    },\n    scottish(n) {\n      if (n === 1 || n === 11) {\n        return 'one'\n      }\n      if (n === 2 || n === 12) {\n        return 'two'\n      }\n      if ((n >= 3 && n <= 10) || (n >= 13 && n <= 19)) {\n        return 'few'\n      }\n      return 'other'\n    },\n    spanish(n) {\n      if (n === 1) {\n        return 'one'\n      }\n      if (n % 1000000 === 0 && n !== 0) {\n        return 'many'\n      }\n      return 'other'\n    },\n    welsh(n) {\n      if (n === 0) {\n        return 'zero'\n      }\n      if (n === 1) {\n        return 'one'\n      }\n      if (n === 2) {\n        return 'two'\n      }\n      if (n === 3) {\n        return 'few'\n      }\n      if (n === 6) {\n        return 'many'\n      }\n      return 'other'\n    }\n  }\n}\n\n/**\n * Plural rule category mnemonic tags\n *\n * @internal\n * @typedef {'zero' | 'one' | 'two' | 'few' | 'many' | 'other'} PluralRule\n */\n\n/**\n * Translated message by plural rule they correspond to.\n *\n * Allows to group pluralised messages under a single key when passing\n * translations to a component's constructor\n *\n * @internal\n * @typedef {object} TranslationPluralForms\n * @property {string} [other] - General plural form\n * @property {string} [zero] - Plural form used with 0\n * @property {string} [one] - Plural form used with 1\n * @property {string} [two] - Plural form used with 2\n * @property {string} [few] - Plural form used for a few\n * @property {string} [many] - Plural form used for many\n */\n", "import { ConfigurableComponent } from '../../common/configuration.mjs'\nimport { ElementError } from '../../errors/index.mjs'\nimport { I18n } from '../../i18n.mjs'\n\n/**\n * Accordion component\n *\n * This allows a collection of sections to be collapsed by default, showing only\n * their headers. Sections can be expanded or collapsed individually by clicking\n * their headers. A \"Show all sections\" button is also added to the top of the\n * accordion, which switches to \"Hide all sections\" when all the sections are\n * expanded.\n *\n * The state of each section is saved to the DOM via the `aria-expanded`\n * attribute, which also provides accessibility.\n *\n * @preserve\n * @augments ConfigurableComponent<AccordionConfig>\n */\nexport class Accordion extends ConfigurableComponent {\n  /** @private */\n  i18n\n\n  /** @private */\n  controlsClass = 'govuk-accordion__controls'\n\n  /** @private */\n  showAllClass = 'govuk-accordion__show-all'\n\n  /** @private */\n  showAllTextClass = 'govuk-accordion__show-all-text'\n\n  /** @private */\n  sectionClass = 'govuk-accordion__section'\n\n  /** @private */\n  sectionExpandedClass = 'govuk-accordion__section--expanded'\n\n  /** @private */\n  sectionButtonClass = 'govuk-accordion__section-button'\n\n  /** @private */\n  sectionHeaderClass = 'govuk-accordion__section-header'\n\n  /** @private */\n  sectionHeadingClass = 'govuk-accordion__section-heading'\n\n  /** @private */\n  sectionHeadingDividerClass = 'govuk-accordion__section-heading-divider'\n\n  /** @private */\n  sectionHeadingTextClass = 'govuk-accordion__section-heading-text'\n\n  /** @private */\n  sectionHeadingTextFocusClass = 'govuk-accordion__section-heading-text-focus'\n\n  /** @private */\n  sectionShowHideToggleClass = 'govuk-accordion__section-toggle'\n\n  /** @private */\n  sectionShowHideToggleFocusClass = 'govuk-accordion__section-toggle-focus'\n\n  /** @private */\n  sectionShowHideTextClass = 'govuk-accordion__section-toggle-text'\n\n  /** @private */\n  upChevronIconClass = 'govuk-accordion-nav__chevron'\n\n  /** @private */\n  downChevronIconClass = 'govuk-accordion-nav__chevron--down'\n\n  /** @private */\n  sectionSummaryClass = 'govuk-accordion__section-summary'\n\n  /** @private */\n  sectionSummaryFocusClass = 'govuk-accordion__section-summary-focus'\n\n  /** @private */\n  sectionContentClass = 'govuk-accordion__section-content'\n\n  /** @private */\n  $sections\n\n  /**\n   * @private\n   * @type {HTMLButtonElement | null}\n   */\n  $showAllButton = null\n\n  /**\n   * @private\n   * @type {HTMLElement | null}\n   */\n  $showAllIcon = null\n\n  /**\n   * @private\n   * @type {HTMLElement | null}\n   */\n  $showAllText = null\n\n  /**\n   * @param {Element | null} $root - HTML element to use for accordion\n   * @param {AccordionConfig} [config] - Accordion config\n   */\n  constructor($root, config = {}) {\n    super($root, config)\n\n    this.i18n = new I18n(this.config.i18n)\n\n    const $sections = this.$root.querySelectorAll(`.${this.sectionClass}`)\n    if (!$sections.length) {\n      throw new ElementError({\n        component: Accordion,\n        identifier: `Sections (\\`<div class=\"${this.sectionClass}\">\\`)`\n      })\n    }\n\n    this.$sections = $sections\n\n    this.initControls()\n    this.initSectionHeaders()\n\n    this.updateShowAllButton(this.areAllSectionsOpen())\n  }\n\n  /**\n   * Initialise controls and set attributes\n   *\n   * @private\n   */\n  initControls() {\n    // Create \"Show all\" button and set attributes\n    this.$showAllButton = document.createElement('button')\n    this.$showAllButton.setAttribute('type', 'button')\n    this.$showAllButton.setAttribute('class', this.showAllClass)\n    this.$showAllButton.setAttribute('aria-expanded', 'false')\n\n    // Create icon, add to element\n    this.$showAllIcon = document.createElement('span')\n    this.$showAllIcon.classList.add(this.upChevronIconClass)\n    this.$showAllButton.appendChild(this.$showAllIcon)\n\n    // Create control wrapper and add controls to it\n    const $accordionControls = document.createElement('div')\n    $accordionControls.setAttribute('class', this.controlsClass)\n    $accordionControls.appendChild(this.$showAllButton)\n    this.$root.insertBefore($accordionControls, this.$root.firstChild)\n\n    // Build additional wrapper for Show all toggle text and place after icon\n    this.$showAllText = document.createElement('span')\n    this.$showAllText.classList.add(this.showAllTextClass)\n    this.$showAllButton.appendChild(this.$showAllText)\n\n    // Handle click events on the show/hide all button\n    this.$showAllButton.addEventListener('click', () =>\n      this.onShowOrHideAllToggle()\n    )\n\n    // Handle 'beforematch' events, if the user agent supports them\n    if ('onbeforematch' in document) {\n      document.addEventListener('beforematch', (event) =>\n        this.onBeforeMatch(event)\n      )\n    }\n  }\n\n  /**\n   * Initialise section headers\n   *\n   * @private\n   */\n  initSectionHeaders() {\n    this.$sections.forEach(($section, i) => {\n      const $header = $section.querySelector(`.${this.sectionHeaderClass}`)\n      if (!$header) {\n        throw new ElementError({\n          component: Accordion,\n          identifier: `Section headers (\\`<div class=\"${this.sectionHeaderClass}\">\\`)`\n        })\n      }\n\n      // Set header attributes\n      this.constructHeaderMarkup($header, i)\n      this.setExpanded(this.isExpanded($section), $section)\n\n      // Handle events\n      $header.addEventListener('click', () => this.onSectionToggle($section))\n\n      // See if there is any state stored in sessionStorage and set the sections\n      // to open or closed.\n      this.setInitialState($section)\n    })\n  }\n\n  /**\n   * Construct section header\n   *\n   * @private\n   * @param {Element} $header - Section header\n   * @param {number} index - Section index\n   */\n  constructHeaderMarkup($header, index) {\n    const $span = $header.querySelector(`.${this.sectionButtonClass}`)\n    const $heading = $header.querySelector(`.${this.sectionHeadingClass}`)\n    const $summary = $header.querySelector(`.${this.sectionSummaryClass}`)\n\n    if (!$heading) {\n      throw new ElementError({\n        component: Accordion,\n        identifier: `Section heading (\\`.${this.sectionHeadingClass}\\`)`\n      })\n    }\n\n    if (!$span) {\n      throw new ElementError({\n        component: Accordion,\n        identifier: `Section button placeholder (\\`<span class=\"${this.sectionButtonClass}\">\\`)`\n      })\n    }\n\n    // Create a button element that will replace the\n    // '.govuk-accordion__section-button' span\n    const $button = document.createElement('button')\n    $button.setAttribute('type', 'button')\n    $button.setAttribute(\n      'aria-controls',\n      `${this.$root.id}-content-${index + 1}`\n    )\n\n    // Copy all attributes from $span to $button (except `id`, which gets added\n    // to the `$headingText` element)\n    for (const attr of Array.from($span.attributes)) {\n      if (attr.name !== 'id') {\n        $button.setAttribute(attr.name, attr.value)\n      }\n    }\n\n    // Create container for heading text so it can be styled\n    const $headingText = document.createElement('span')\n    $headingText.classList.add(this.sectionHeadingTextClass)\n    // Copy the span ID to the heading text to allow it to be referenced by\n    // `aria-labelledby` on the hidden content area without \"Show this section\"\n    $headingText.id = $span.id\n\n    // Create an inner heading text container to limit the width of the focus\n    // state\n    const $headingTextFocus = document.createElement('span')\n    $headingTextFocus.classList.add(this.sectionHeadingTextFocusClass)\n    $headingText.appendChild($headingTextFocus)\n    // span could contain HTML elements\n    // (see https://www.w3.org/TR/2011/WD-html5-20110525/content-models.html#phrasing-content)\n    Array.from($span.childNodes).forEach(($child) =>\n      $headingTextFocus.appendChild($child)\n    )\n\n    // Create container for show / hide icons and text.\n    const $showHideToggle = document.createElement('span')\n    $showHideToggle.classList.add(this.sectionShowHideToggleClass)\n    // Tell Google not to index the 'show' text as part of the heading. Must be\n    // set on the element before it's added to the DOM.\n    // See https://developers.google.com/search/docs/advanced/robots/robots_meta_tag#data-nosnippet-attr\n    $showHideToggle.setAttribute('data-nosnippet', '')\n    // Create an inner container to limit the width of the focus state\n    const $showHideToggleFocus = document.createElement('span')\n    $showHideToggleFocus.classList.add(this.sectionShowHideToggleFocusClass)\n    $showHideToggle.appendChild($showHideToggleFocus)\n    // Create wrapper for the show / hide text. Append text after the show/hide icon\n    const $showHideText = document.createElement('span')\n    const $showHideIcon = document.createElement('span')\n    $showHideIcon.classList.add(this.upChevronIconClass)\n    $showHideToggleFocus.appendChild($showHideIcon)\n    $showHideText.classList.add(this.sectionShowHideTextClass)\n    $showHideToggleFocus.appendChild($showHideText)\n\n    // Append elements to the button:\n    // 1. Heading text\n    // 2. Punctuation\n    // 3. (Optional: Summary line followed by punctuation)\n    // 4. Show / hide toggle\n    $button.appendChild($headingText)\n    $button.appendChild(this.getButtonPunctuationEl())\n\n    // If summary content exists add to DOM in correct order\n    if ($summary) {\n      // Create a new `span` element and copy the summary line content from the\n      // original `div` to the new `span`. This is because the summary line text\n      // is now inside a button element, which can only contain phrasing\n      // content.\n      const $summarySpan = document.createElement('span')\n      // Create an inner summary container to limit the width of the summary\n      // focus state\n      const $summarySpanFocus = document.createElement('span')\n      $summarySpanFocus.classList.add(this.sectionSummaryFocusClass)\n      $summarySpan.appendChild($summarySpanFocus)\n\n      // Get original attributes, and pass them to the replacement\n      for (const attr of Array.from($summary.attributes)) {\n        $summarySpan.setAttribute(attr.name, attr.value)\n      }\n\n      // Copy original contents of summary to the new summary span\n      Array.from($summary.childNodes).forEach(($child) =>\n        $summarySpanFocus.appendChild($child)\n      )\n\n      // Replace the original summary `div` with the new summary `span`\n      $summary.remove()\n\n      $button.appendChild($summarySpan)\n      $button.appendChild(this.getButtonPunctuationEl())\n    }\n\n    $button.appendChild($showHideToggle)\n\n    $heading.removeChild($span)\n    $heading.appendChild($button)\n  }\n\n  /**\n   * When a section is opened by the user agent via the 'beforematch' event\n   *\n   * @private\n   * @param {Event} event - Generic event\n   */\n  onBeforeMatch(event) {\n    const $fragment = event.target\n\n    // Handle elements with `.closest()` support only\n    if (!($fragment instanceof Element)) {\n      return\n    }\n\n    // Handle when fragment is inside section\n    const $section = $fragment.closest(`.${this.sectionClass}`)\n    if ($section) {\n      this.setExpanded(true, $section)\n    }\n  }\n\n  /**\n   * When section toggled, set and store state\n   *\n   * @private\n   * @param {Element} $section - Section element\n   */\n  onSectionToggle($section) {\n    const nowExpanded = !this.isExpanded($section)\n    this.setExpanded(nowExpanded, $section)\n\n    // Store the state in sessionStorage when a change is triggered\n    this.storeState($section, nowExpanded)\n  }\n\n  /**\n   * When Open/Close All toggled, set and store state\n   *\n   * @private\n   */\n  onShowOrHideAllToggle() {\n    const nowExpanded = !this.areAllSectionsOpen()\n\n    this.$sections.forEach(($section) => {\n      this.setExpanded(nowExpanded, $section)\n      this.storeState($section, nowExpanded)\n    })\n\n    this.updateShowAllButton(nowExpanded)\n  }\n\n  /**\n   * Set section attributes when opened/closed\n   *\n   * @private\n   * @param {boolean} expanded - Section expanded\n   * @param {Element} $section - Section element\n   */\n  setExpanded(expanded, $section) {\n    const $showHideIcon = $section.querySelector(`.${this.upChevronIconClass}`)\n    const $showHideText = $section.querySelector(\n      `.${this.sectionShowHideTextClass}`\n    )\n    const $button = $section.querySelector(`.${this.sectionButtonClass}`)\n    const $content = $section.querySelector(`.${this.sectionContentClass}`)\n\n    if (!$content) {\n      throw new ElementError({\n        component: Accordion,\n        identifier: `Section content (\\`<div class=\"${this.sectionContentClass}\">\\`)`\n      })\n    }\n\n    if (!$showHideIcon || !$showHideText || !$button) {\n      // Return early for elements we create\n      return\n    }\n\n    const newButtonText = expanded\n      ? this.i18n.t('hideSection')\n      : this.i18n.t('showSection')\n\n    $showHideText.textContent = newButtonText\n    $button.setAttribute('aria-expanded', `${expanded}`)\n\n    // Update aria-label combining\n    const ariaLabelParts = []\n\n    const $headingText = $section.querySelector(\n      `.${this.sectionHeadingTextClass}`\n    )\n    if ($headingText) {\n      ariaLabelParts.push(`${$headingText.textContent}`.trim())\n    }\n\n    const $summary = $section.querySelector(`.${this.sectionSummaryClass}`)\n    if ($summary) {\n      ariaLabelParts.push(`${$summary.textContent}`.trim())\n    }\n\n    const ariaLabelMessage = expanded\n      ? this.i18n.t('hideSectionAriaLabel')\n      : this.i18n.t('showSectionAriaLabel')\n    ariaLabelParts.push(ariaLabelMessage)\n\n    /*\n     * Join with a comma to add pause for assistive technology.\n     * Example: [heading]Section A ,[pause] Show this section.\n     * https://accessibility.blog.gov.uk/2017/12/18/what-working-on-gov-uk-navigation-taught-us-about-accessibility/\n     */\n    $button.setAttribute('aria-label', ariaLabelParts.join(' , '))\n\n    // Swap icon, change class\n    if (expanded) {\n      $content.removeAttribute('hidden')\n      $section.classList.add(this.sectionExpandedClass)\n      $showHideIcon.classList.remove(this.downChevronIconClass)\n    } else {\n      $content.setAttribute('hidden', 'until-found')\n      $section.classList.remove(this.sectionExpandedClass)\n      $showHideIcon.classList.add(this.downChevronIconClass)\n    }\n\n    // See if \"Show all sections\" button text should be updated\n    this.updateShowAllButton(this.areAllSectionsOpen())\n  }\n\n  /**\n   * Get state of section\n   *\n   * @private\n   * @param {Element} $section - Section element\n   * @returns {boolean} True if expanded\n   */\n  isExpanded($section) {\n    return $section.classList.contains(this.sectionExpandedClass)\n  }\n\n  /**\n   * Check if all sections are open\n   *\n   * @private\n   * @returns {boolean} True if all sections are open\n   */\n  areAllSectionsOpen() {\n    return Array.from(this.$sections).every(($section) =>\n      this.isExpanded($section)\n    )\n  }\n\n  /**\n   * Update \"Show all sections\" button\n   *\n   * @private\n   * @param {boolean} expanded - Section expanded\n   */\n  updateShowAllButton(expanded) {\n    if (!this.$showAllButton || !this.$showAllText || !this.$showAllIcon) {\n      return\n    }\n\n    this.$showAllButton.setAttribute('aria-expanded', expanded.toString())\n    this.$showAllText.textContent = expanded\n      ? this.i18n.t('hideAllSections')\n      : this.i18n.t('showAllSections')\n    this.$showAllIcon.classList.toggle(this.downChevronIconClass, !expanded)\n  }\n\n  /**\n   * Get the identifier for a section\n   *\n   * We need a unique way of identifying each content in the Accordion.\n   * Since an `#id` should be unique and an `id` is required for `aria-`\n   * attributes `id` can be safely used.\n   *\n   * @param {Element} $section - Section element\n   * @returns {string | undefined | null} Identifier for section\n   */\n  getIdentifier($section) {\n    const $button = $section.querySelector(`.${this.sectionButtonClass}`)\n\n    return $button?.getAttribute('aria-controls')\n  }\n\n  /**\n   * Set the state of the accordions in sessionStorage\n   *\n   * @private\n   * @param {Element} $section - Section element\n   * @param {boolean} isExpanded - Whether the section is expanded\n   */\n  storeState($section, isExpanded) {\n    if (!this.config.rememberExpanded) {\n      return\n    }\n\n    const id = this.getIdentifier($section)\n\n    if (id) {\n      try {\n        window.sessionStorage.setItem(id, isExpanded.toString())\n      } catch (exception) {}\n    }\n  }\n\n  /**\n   * Read the state of the accordions from sessionStorage\n   *\n   * @private\n   * @param {Element} $section - Section element\n   */\n  setInitialState($section) {\n    if (!this.config.rememberExpanded) {\n      return\n    }\n\n    const id = this.getIdentifier($section)\n\n    if (id) {\n      try {\n        const state = window.sessionStorage.getItem(id)\n\n        if (state !== null) {\n          this.setExpanded(state === 'true', $section)\n        }\n      } catch (exception) {}\n    }\n  }\n\n  /**\n   * Create an element to improve semantics of the section button with\n   * punctuation\n   *\n   * Adding punctuation to the button can also improve its general semantics by\n   * dividing its contents into thematic chunks. See\n   * https://github.com/alphagov/govuk-frontend/issues/2327#issuecomment-922957442\n   *\n   * @private\n   * @returns {Element} DOM element\n   */\n  getButtonPunctuationEl() {\n    const $punctuationEl = document.createElement('span')\n    $punctuationEl.classList.add(\n      'govuk-visually-hidden',\n      this.sectionHeadingDividerClass\n    )\n    $punctuationEl.textContent = ', '\n    return $punctuationEl\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-accordion'\n\n  /**\n   * Accordion default config\n   *\n   * @see {@link AccordionConfig}\n   * @constant\n   * @type {AccordionConfig}\n   */\n  static defaults = Object.freeze({\n    i18n: {\n      hideAllSections: 'Hide all sections',\n      hideSection: 'Hide',\n      hideSectionAriaLabel: 'Hide this section',\n      showAllSections: 'Show all sections',\n      showSection: 'Show',\n      showSectionAriaLabel: 'Show this section'\n    },\n    rememberExpanded: true\n  })\n\n  /**\n   * Accordion config schema\n   *\n   * @constant\n   * @satisfies {Schema<AccordionConfig>}\n   */\n  static schema = Object.freeze({\n    properties: {\n      i18n: { type: 'object' },\n      rememberExpanded: { type: 'boolean' }\n    }\n  })\n}\n\n/**\n * Accordion config\n *\n * @see {@link Accordion.defaults}\n * @typedef {object} AccordionConfig\n * @property {AccordionTranslations} [i18n=Accordion.defaults.i18n] - Accordion translations\n * @property {boolean} [rememberExpanded] - Whether the expanded and collapsed\n *   state of each section is remembered and restored when navigating.\n */\n\n/**\n * Accordion translations\n *\n * @see {@link Accordion.defaults.i18n}\n * @typedef {object} AccordionTranslations\n *\n * Messages used by the component for the labels of its buttons. This includes\n * the visible text shown on screen, and text to help assistive technology users\n * for the buttons toggling each section.\n * @property {string} [hideAllSections] - The text content for the 'Hide all\n *   sections' button, used when at least one section is expanded.\n * @property {string} [hideSection] - The text content for the 'Hide'\n *   button, used when a section is expanded.\n * @property {string} [hideSectionAriaLabel] - The text content appended to the\n *   'Hide' button's accessible name when a section is expanded.\n * @property {string} [showAllSections] - The text content for the 'Show all\n *   sections' button, used when all sections are collapsed.\n * @property {string} [showSection] - The text content for the 'Show'\n *   button, used when a section is collapsed.\n * @property {string} [showSectionAriaLabel] - The text content appended to the\n *   'Show' button's accessible name when a section is expanded.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n */\n", "import { ConfigurableComponent } from '../../common/configuration.mjs'\n\nconst DEBOUNCE_TIMEOUT_IN_SECONDS = 1\n\n/**\n * JavaScript enhancements for the Button component\n *\n * @preserve\n * @augments ConfigurableComponent<ButtonConfig>\n */\nexport class Button extends ConfigurableComponent {\n  /**\n   * @private\n   * @type {number | null}\n   */\n  debounceFormSubmitTimer = null\n\n  /**\n   * @param {Element | null} $root - HTML element to use for button\n   * @param {ButtonConfig} [config] - Button config\n   */\n  constructor($root, config = {}) {\n    super($root, config)\n\n    this.$root.addEventListener('keydown', (event) => this.handleKeyDown(event))\n    this.$root.addEventListener('click', (event) => this.debounce(event))\n  }\n\n  /**\n   * Trigger a click event when the space key is pressed\n   *\n   * Some screen readers tell users they can use the space bar to activate\n   * things with the 'button' role, so we need to match the functionality of\n   * native HTML buttons.\n   *\n   * See https://github.com/alphagov/govuk_elements/pull/272#issuecomment-233028270\n   *\n   * @private\n   * @param {KeyboardEvent} event - Keydown event\n   */\n  handleKeyDown(event) {\n    const $target = event.target\n\n    // Handle space bar only\n    if (event.key !== ' ') {\n      return\n    }\n\n    // Handle elements with [role=\"button\"] only\n    if (\n      $target instanceof HTMLElement &&\n      $target.getAttribute('role') === 'button'\n    ) {\n      event.preventDefault() // prevent the page from scrolling\n      $target.click()\n    }\n  }\n\n  /**\n   * Debounce double-clicks\n   *\n   * If the click quickly succeeds a previous click then nothing will happen.\n   * This stops people accidentally causing multiple form submissions by double\n   * clicking buttons.\n   *\n   * @private\n   * @param {MouseEvent} event - Mouse click event\n   * @returns {undefined | false} Returns undefined, or false when debounced\n   */\n  debounce(event) {\n    // Check the button that was clicked has preventDoubleClick enabled\n    if (!this.config.preventDoubleClick) {\n      return\n    }\n\n    // If the timer is still running, prevent the click from submitting the form\n    if (this.debounceFormSubmitTimer) {\n      event.preventDefault()\n      return false\n    }\n\n    this.debounceFormSubmitTimer = window.setTimeout(() => {\n      this.debounceFormSubmitTimer = null\n    }, DEBOUNCE_TIMEOUT_IN_SECONDS * 1000)\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-button'\n\n  /**\n   * Button default config\n   *\n   * @see {@link ButtonConfig}\n   * @constant\n   * @type {ButtonConfig}\n   */\n  static defaults = Object.freeze({\n    preventDoubleClick: false\n  })\n\n  /**\n   * Button config schema\n   *\n   * @constant\n   * @satisfies {Schema<ButtonConfig>}\n   */\n  static schema = Object.freeze({\n    properties: {\n      preventDoubleClick: { type: 'boolean' }\n    }\n  })\n}\n\n/**\n * Button config\n *\n * @typedef {object} ButtonConfig\n * @property {boolean} [preventDoubleClick=false] - Prevent accidental double\n *   clicks on submit buttons from submitting forms multiple times.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n */\n", "/**\n * Returns the value of the given attribute closest to the given element (including itself)\n *\n * @internal\n * @param {Element} $element - The element to start walking the DOM tree up\n * @param {string} attributeName - The name of the attribute\n * @returns {string | null} Attribute value\n */\nexport function closestAttributeValue($element, attributeName) {\n  const $closestElementWithAttribute = $element.closest(`[${attributeName}]`)\n  return $closestElementWithAttribute\n    ? $closestElementWithAttribute.getAttribute(attributeName)\n    : null\n}\n", "import { closestAttributeValue } from '../../common/closest-attribute-value.mjs'\nimport {\n  validateConfig,\n  ConfigurableComponent,\n  configOverride\n} from '../../common/configuration.mjs'\nimport { formatErrorMessage } from '../../common/index.mjs'\nimport { ConfigError, ElementError } from '../../errors/index.mjs'\nimport { I18n } from '../../i18n.mjs'\n\n/**\n * Character count component\n *\n * Tracks the number of characters or words in the `.govuk-js-character-count`\n * `<textarea>` inside the element. Displays a message with the remaining number\n * of characters/words available, or the number of characters/words in excess.\n *\n * You can configure the message to only appear after a certain percentage\n * of the available characters/words has been entered.\n *\n * @preserve\n * @augments ConfigurableComponent<CharacterCountConfig>\n */\nexport class CharacterCount extends ConfigurableComponent {\n  /** @private */\n  $textarea\n\n  /** @private */\n  $visibleCountMessage\n\n  /** @private */\n  $screenReaderCountMessage\n\n  /**\n   * @private\n   * @type {number | null}\n   */\n  lastInputTimestamp = null\n\n  /** @private */\n  lastInputValue = ''\n\n  /**\n   * @private\n   * @type {number | null}\n   */\n  valueChecker = null\n\n  /** @private */\n  i18n\n\n  /** @private */\n  maxLength;\n\n  /**\n   * Character count config override\n   *\n   * To ensure data-attributes take complete precedence, even if they change\n   * the type of count, we need to reset the `maxlength` and `maxwords` from\n   * the JavaScript config.\n   *\n   * @internal\n   * @param {CharacterCountConfig} datasetConfig - configuration specified by dataset\n   * @returns {CharacterCountConfig} - configuration to override by dataset\n   */\n  [configOverride](datasetConfig) {\n    let configOverrides = {}\n    if ('maxwords' in datasetConfig || 'maxlength' in datasetConfig) {\n      configOverrides = {\n        maxlength: undefined,\n        maxwords: undefined\n      }\n    }\n\n    return configOverrides\n  }\n\n  /**\n   * @param {Element | null} $root - HTML element to use for character count\n   * @param {CharacterCountConfig} [config] - Character count config\n   */\n  constructor($root, config = {}) {\n    super($root, config)\n\n    const $textarea = this.$root.querySelector('.govuk-js-character-count')\n    if (\n      !(\n        $textarea instanceof HTMLTextAreaElement ||\n        $textarea instanceof HTMLInputElement\n      )\n    ) {\n      throw new ElementError({\n        component: CharacterCount,\n        element: $textarea,\n        expectedType: 'HTMLTextareaElement or HTMLInputElement',\n        identifier: 'Form field (`.govuk-js-character-count`)'\n      })\n    }\n\n    // Check for valid config\n    const errors = validateConfig(CharacterCount.schema, this.config)\n    if (errors[0]) {\n      throw new ConfigError(formatErrorMessage(CharacterCount, errors[0]))\n    }\n\n    this.i18n = new I18n(this.config.i18n, {\n      // Read the fallback if necessary rather than have it set in the defaults\n      locale: closestAttributeValue(this.$root, 'lang')\n    })\n\n    // Determine the limit attribute (characters or words)\n    this.maxLength = this.config.maxwords ?? this.config.maxlength ?? Infinity\n\n    this.$textarea = $textarea\n\n    const textareaDescriptionId = `${this.$textarea.id}-info`\n    const $textareaDescription = document.getElementById(textareaDescriptionId)\n    if (!$textareaDescription) {\n      throw new ElementError({\n        component: CharacterCount,\n        element: $textareaDescription,\n        identifier: `Count message (\\`id=\"${textareaDescriptionId}\"\\`)`\n      })\n    }\n\n    // Inject a description for the textarea if none is present already\n    // for when the component was rendered with no maxlength, maxwords\n    // nor custom textareaDescriptionText\n    if (`${$textareaDescription.textContent}`.match(/^\\s*$/)) {\n      $textareaDescription.textContent = this.i18n.t('textareaDescription', {\n        count: this.maxLength\n      })\n    }\n\n    // Move the textarea description to be immediately after the textarea\n    // Kept for backwards compatibility\n    this.$textarea.insertAdjacentElement('afterend', $textareaDescription)\n\n    // Create the *screen reader* specific live-updating counter\n    // This doesn't need any styling classes, as it is never visible\n    const $screenReaderCountMessage = document.createElement('div')\n    $screenReaderCountMessage.className =\n      'govuk-character-count__sr-status govuk-visually-hidden'\n    $screenReaderCountMessage.setAttribute('aria-live', 'polite')\n    this.$screenReaderCountMessage = $screenReaderCountMessage\n    $textareaDescription.insertAdjacentElement(\n      'afterend',\n      $screenReaderCountMessage\n    )\n\n    // Create our live-updating counter element, copying the classes from the\n    // textarea description for backwards compatibility as these may have been\n    // configured\n    const $visibleCountMessage = document.createElement('div')\n    $visibleCountMessage.className = $textareaDescription.className\n    $visibleCountMessage.classList.add('govuk-character-count__status')\n    $visibleCountMessage.setAttribute('aria-hidden', 'true')\n    this.$visibleCountMessage = $visibleCountMessage\n    $textareaDescription.insertAdjacentElement('afterend', $visibleCountMessage)\n\n    // Hide the textarea description\n    $textareaDescription.classList.add('govuk-visually-hidden')\n\n    // Remove hard limit if set\n    this.$textarea.removeAttribute('maxlength')\n\n    this.bindChangeEvents()\n\n    // When the page is restored after navigating 'back' in some browsers the\n    // state of form controls is not restored until *after* the DOMContentLoaded\n    // event is fired, so we need to sync after the pageshow event.\n    window.addEventListener('pageshow', () => this.updateCountMessage())\n\n    // Although we've set up handlers to sync state on the pageshow event, init\n    // could be called after those events have fired, for example if they are\n    // added to the page dynamically, so update now too.\n    this.updateCountMessage()\n  }\n\n  /**\n   * Bind change events\n   *\n   * Set up event listeners on the $textarea so that the count messages update\n   * when the user types.\n   *\n   * @private\n   */\n  bindChangeEvents() {\n    this.$textarea.addEventListener('keyup', () => this.handleKeyUp())\n\n    // Bind focus/blur events to start/stop polling\n    this.$textarea.addEventListener('focus', () => this.handleFocus())\n    this.$textarea.addEventListener('blur', () => this.handleBlur())\n  }\n\n  /**\n   * Handle key up event\n   *\n   * Update the visible character counter and keep track of when the last update\n   * happened for each keypress\n   *\n   * @private\n   */\n  handleKeyUp() {\n    this.updateVisibleCountMessage()\n    this.lastInputTimestamp = Date.now()\n  }\n\n  /**\n   * Handle focus event\n   *\n   * Speech recognition software such as Dragon NaturallySpeaking will modify\n   * the fields by directly changing its `value`. These changes don't trigger\n   * events in JavaScript, so we need to poll to handle when and if they occur.\n   *\n   * Once the keyup event hasn't been detected for at least 1000 ms (1s), check\n   * if the textarea value has changed and update the count message if it has.\n   *\n   * This is so that the update triggered by the manual comparison doesn't\n   * conflict with debounced KeyboardEvent updates.\n   *\n   * @private\n   */\n  handleFocus() {\n    this.valueChecker = window.setInterval(() => {\n      if (\n        !this.lastInputTimestamp ||\n        Date.now() - 500 >= this.lastInputTimestamp\n      ) {\n        this.updateIfValueChanged()\n      }\n    }, 1000)\n  }\n\n  /**\n   * Handle blur event\n   *\n   * Stop checking the textarea value once the textarea no longer has focus\n   *\n   * @private\n   */\n  handleBlur() {\n    // Cancel value checking on blur\n    if (this.valueChecker) {\n      window.clearInterval(this.valueChecker)\n    }\n  }\n\n  /**\n   * Update count message if textarea value has changed\n   *\n   * @private\n   */\n  updateIfValueChanged() {\n    if (this.$textarea.value !== this.lastInputValue) {\n      this.lastInputValue = this.$textarea.value\n      this.updateCountMessage()\n    }\n  }\n\n  /**\n   * Update count message\n   *\n   * Helper function to update both the visible and screen reader-specific\n   * counters simultaneously (e.g. on init)\n   *\n   * @private\n   */\n  updateCountMessage() {\n    this.updateVisibleCountMessage()\n    this.updateScreenReaderCountMessage()\n  }\n\n  /**\n   * Update visible count message\n   *\n   * @private\n   */\n  updateVisibleCountMessage() {\n    const remainingNumber = this.maxLength - this.count(this.$textarea.value)\n    const isError = remainingNumber < 0\n\n    // If input is over the threshold, remove the disabled class which renders\n    // the counter invisible.\n    this.$visibleCountMessage.classList.toggle(\n      'govuk-character-count__message--disabled',\n      !this.isOverThreshold()\n    )\n\n    // Update styles\n    this.$textarea.classList.toggle('govuk-textarea--error', isError)\n    this.$visibleCountMessage.classList.toggle('govuk-error-message', isError)\n    this.$visibleCountMessage.classList.toggle('govuk-hint', !isError)\n\n    // Update message\n    this.$visibleCountMessage.textContent = this.getCountMessage()\n  }\n\n  /**\n   * Update screen reader count message\n   *\n   * @private\n   */\n  updateScreenReaderCountMessage() {\n    // If over the threshold, remove the aria-hidden attribute, allowing screen\n    // readers to announce the content of the element.\n    if (this.isOverThreshold()) {\n      this.$screenReaderCountMessage.removeAttribute('aria-hidden')\n    } else {\n      this.$screenReaderCountMessage.setAttribute('aria-hidden', 'true')\n    }\n\n    // Update message\n    this.$screenReaderCountMessage.textContent = this.getCountMessage()\n  }\n\n  /**\n   * Count the number of characters (or words, if `config.maxwords` is set)\n   * in the given text\n   *\n   * @private\n   * @param {string} text - The text to count the characters of\n   * @returns {number} the number of characters (or words) in the text\n   */\n  count(text) {\n    if (this.config.maxwords) {\n      const tokens = text.match(/\\S+/g) ?? [] // Matches consecutive non-whitespace chars\n      return tokens.length\n    }\n\n    return text.length\n  }\n\n  /**\n   * Get count message\n   *\n   * @private\n   * @returns {string} Status message\n   */\n  getCountMessage() {\n    const remainingNumber = this.maxLength - this.count(this.$textarea.value)\n    const countType = this.config.maxwords ? 'words' : 'characters'\n    return this.formatCountMessage(remainingNumber, countType)\n  }\n\n  /**\n   * Formats the message shown to users according to what's counted\n   * and how many remain\n   *\n   * @private\n   * @param {number} remainingNumber - The number of words/characaters remaining\n   * @param {string} countType - \"words\" or \"characters\"\n   * @returns {string} Status message\n   */\n  formatCountMessage(remainingNumber, countType) {\n    if (remainingNumber === 0) {\n      return this.i18n.t(`${countType}AtLimit`)\n    }\n\n    const translationKeySuffix =\n      remainingNumber < 0 ? 'OverLimit' : 'UnderLimit'\n\n    return this.i18n.t(`${countType}${translationKeySuffix}`, {\n      count: Math.abs(remainingNumber)\n    })\n  }\n\n  /**\n   * Check if count is over threshold\n   *\n   * Checks whether the value is over the configured threshold for the input.\n   * If there is no configured threshold, it is set to 0 and this function will\n   * always return true.\n   *\n   * @private\n   * @returns {boolean} true if the current count is over the config.threshold\n   *   (or no threshold is set)\n   */\n  isOverThreshold() {\n    // No threshold means we're always above threshold so save some computation\n    if (!this.config.threshold) {\n      return true\n    }\n\n    // Determine the remaining number of characters/words\n    const currentLength = this.count(this.$textarea.value)\n    const maxLength = this.maxLength\n\n    const thresholdValue = (maxLength * this.config.threshold) / 100\n\n    return thresholdValue <= currentLength\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-character-count'\n\n  /**\n   * Character count default config\n   *\n   * @see {@link CharacterCountConfig}\n   * @constant\n   * @type {CharacterCountConfig}\n   */\n  static defaults = Object.freeze({\n    threshold: 0,\n    i18n: {\n      // Characters\n      charactersUnderLimit: {\n        one: 'You have %{count} character remaining',\n        other: 'You have %{count} characters remaining'\n      },\n      charactersAtLimit: 'You have 0 characters remaining',\n      charactersOverLimit: {\n        one: 'You have %{count} character too many',\n        other: 'You have %{count} characters too many'\n      },\n      // Words\n      wordsUnderLimit: {\n        one: 'You have %{count} word remaining',\n        other: 'You have %{count} words remaining'\n      },\n      wordsAtLimit: 'You have 0 words remaining',\n      wordsOverLimit: {\n        one: 'You have %{count} word too many',\n        other: 'You have %{count} words too many'\n      },\n      textareaDescription: {\n        other: ''\n      }\n    }\n  })\n\n  /**\n   * Character count config schema\n   *\n   * @constant\n   * @satisfies {Schema<CharacterCountConfig>}\n   */\n  static schema = Object.freeze({\n    properties: {\n      i18n: { type: 'object' },\n      maxwords: { type: 'number' },\n      maxlength: { type: 'number' },\n      threshold: { type: 'number' }\n    },\n    anyOf: [\n      {\n        required: ['maxwords'],\n        errorMessage: 'Either \"maxlength\" or \"maxwords\" must be provided'\n      },\n      {\n        required: ['maxlength'],\n        errorMessage: 'Either \"maxlength\" or \"maxwords\" must be provided'\n      }\n    ]\n  })\n}\n\n/**\n * Character count config\n *\n * @see {@link CharacterCount.defaults}\n * @typedef {object} CharacterCountConfig\n * @property {number} [maxlength] - The maximum number of characters.\n *   If maxwords is provided, the maxlength option will be ignored.\n * @property {number} [maxwords] - The maximum number of words. If maxwords is\n *   provided, the maxlength option will be ignored.\n * @property {number} [threshold=0] - The percentage value of the limit at\n *   which point the count message is displayed. If this attribute is set, the\n *   count message will be hidden by default.\n * @property {CharacterCountTranslations} [i18n=CharacterCount.defaults.i18n] - Character count translations\n */\n\n/**\n * Character count translations\n *\n * @see {@link CharacterCount.defaults.i18n}\n * @typedef {object} CharacterCountTranslations\n *\n * Messages shown to users as they type. It provides feedback on how many words\n * or characters they have remaining or if they are over the limit. This also\n * includes a message used as an accessible description for the textarea.\n * @property {TranslationPluralForms} [charactersUnderLimit] - Message displayed\n *   when the number of characters is under the configured maximum, `maxlength`.\n *   This message is displayed visually and through assistive technologies. The\n *   component will replace the `%{count}` placeholder with the number of\n *   remaining characters. This is a [pluralised list of\n *   messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).\n * @property {string} [charactersAtLimit] - Message displayed when the number of\n *   characters reaches the configured maximum, `maxlength`. This message is\n *   displayed visually and through assistive technologies.\n * @property {TranslationPluralForms} [charactersOverLimit] - Message displayed\n *   when the number of characters is over the configured maximum, `maxlength`.\n *   This message is displayed visually and through assistive technologies. The\n *   component will replace the `%{count}` placeholder with the number of\n *   remaining characters. This is a [pluralised list of\n *   messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).\n * @property {TranslationPluralForms} [wordsUnderLimit] - Message displayed when\n *   the number of words is under the configured maximum, `maxlength`. This\n *   message is displayed visually and through assistive technologies. The\n *   component will replace the `%{count}` placeholder with the number of\n *   remaining words. This is a [pluralised list of\n *   messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).\n * @property {string} [wordsAtLimit] - Message displayed when the number of\n *   words reaches the configured maximum, `maxlength`. This message is\n *   displayed visually and through assistive technologies.\n * @property {TranslationPluralForms} [wordsOverLimit] - Message displayed when\n *   the number of words is over the configured maximum, `maxlength`. This\n *   message is displayed visually and through assistive technologies. The\n *   component will replace the `%{count}` placeholder with the number of\n *   remaining words. This is a [pluralised list of\n *   messages](https://frontend.design-system.service.gov.uk/localise-govuk-frontend).\n * @property {TranslationPluralForms} [textareaDescription] - Message made\n *   available to assistive technologies, if none is already present in the\n *   HTML, to describe that the component accepts only a limited amount of\n *   content. It is visible on the page when JavaScript is unavailable. The\n *   component will replace the `%{count}` placeholder with the value of the\n *   `maxlength` or `maxwords` parameter.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n * @import { TranslationPluralForms } from '../../i18n.mjs'\n */\n", "import { Component } from '../../component.mjs'\nimport { ElementError } from '../../errors/index.mjs'\n\n/**\n * Checkboxes component\n *\n * @preserve\n */\nexport class Checkboxes extends Component {\n  /** @private */\n  $inputs\n\n  /**\n   * Checkboxes can be associated with a 'conditionally revealed' content block\n   * – for example, a checkbox for 'Phone' could reveal an additional form field\n   * for the user to enter their phone number.\n   *\n   * These associations are made using a `data-aria-controls` attribute, which\n   * is promoted to an aria-controls attribute during initialisation.\n   *\n   * We also need to restore the state of any conditional reveals on the page\n   * (for example if the user has navigated back), and set up event handlers to\n   * keep the reveal in sync with the checkbox state.\n   *\n   * @param {Element | null} $root - HTML element to use for checkboxes\n   */\n  constructor($root) {\n    super($root)\n\n    const $inputs = this.$root.querySelectorAll('input[type=\"checkbox\"]')\n    if (!$inputs.length) {\n      throw new ElementError({\n        component: Checkboxes,\n        identifier: 'Form inputs (`<input type=\"checkbox\">`)'\n      })\n    }\n\n    this.$inputs = $inputs\n\n    this.$inputs.forEach(($input) => {\n      const targetId = $input.getAttribute('data-aria-controls')\n\n      // Skip radios without data-aria-controls attributes\n      if (!targetId) {\n        return\n      }\n\n      // Throw if target conditional element does not exist.\n      if (!document.getElementById(targetId)) {\n        throw new ElementError({\n          component: Checkboxes,\n          identifier: `Conditional reveal (\\`id=\"${targetId}\"\\`)`\n        })\n      }\n\n      // Promote the data-aria-controls attribute to a aria-controls attribute\n      // so that the relationship is exposed in the AOM\n      $input.setAttribute('aria-controls', targetId)\n      $input.removeAttribute('data-aria-controls')\n    })\n\n    // When the page is restored after navigating 'back' in some browsers the\n    // state of form controls is not restored until *after* the DOMContentLoaded\n    // event is fired, so we need to sync after the pageshow event.\n    window.addEventListener('pageshow', () => this.syncAllConditionalReveals())\n\n    // Although we've set up handlers to sync state on the pageshow event, init\n    // could be called after those events have fired, for example if they are\n    // added to the page dynamically, so sync now too.\n    this.syncAllConditionalReveals()\n\n    // Handle events\n    this.$root.addEventListener('click', (event) => this.handleClick(event))\n  }\n\n  /**\n   * Sync the conditional reveal states for all checkboxes in this component.\n   *\n   * @private\n   */\n  syncAllConditionalReveals() {\n    this.$inputs.forEach(($input) =>\n      this.syncConditionalRevealWithInputState($input)\n    )\n  }\n\n  /**\n   * Sync conditional reveal with the input state\n   *\n   * Synchronise the visibility of the conditional reveal, and its accessible\n   * state, with the input's checked state.\n   *\n   * @private\n   * @param {HTMLInputElement} $input - Checkbox input\n   */\n  syncConditionalRevealWithInputState($input) {\n    const targetId = $input.getAttribute('aria-controls')\n    if (!targetId) {\n      return\n    }\n\n    const $target = document.getElementById(targetId)\n    if ($target?.classList.contains('govuk-checkboxes__conditional')) {\n      const inputIsChecked = $input.checked\n\n      $input.setAttribute('aria-expanded', inputIsChecked.toString())\n      $target.classList.toggle(\n        'govuk-checkboxes__conditional--hidden',\n        !inputIsChecked\n      )\n    }\n  }\n\n  /**\n   * Uncheck other checkboxes\n   *\n   * Find any other checkbox inputs with the same name value, and uncheck them.\n   * This is useful for when a “None of these\" checkbox is checked.\n   *\n   * @private\n   * @param {HTMLInputElement} $input - Checkbox input\n   */\n  unCheckAllInputsExcept($input) {\n    const allInputsWithSameName = document.querySelectorAll(\n      `input[type=\"checkbox\"][name=\"${$input.name}\"]`\n    )\n\n    allInputsWithSameName.forEach(($inputWithSameName) => {\n      const hasSameFormOwner = $input.form === $inputWithSameName.form\n      if (hasSameFormOwner && $inputWithSameName !== $input) {\n        $inputWithSameName.checked = false\n        this.syncConditionalRevealWithInputState($inputWithSameName)\n      }\n    })\n  }\n\n  /**\n   * Uncheck exclusive checkboxes\n   *\n   * Find any checkbox inputs with the same name value and the 'exclusive'\n   * behaviour, and uncheck them. This helps prevent someone checking both a\n   * regular checkbox and a \"None of these\" checkbox in the same fieldset.\n   *\n   * @private\n   * @param {HTMLInputElement} $input - Checkbox input\n   */\n  unCheckExclusiveInputs($input) {\n    const allInputsWithSameNameAndExclusiveBehaviour =\n      document.querySelectorAll(\n        `input[data-behaviour=\"exclusive\"][type=\"checkbox\"][name=\"${$input.name}\"]`\n      )\n\n    allInputsWithSameNameAndExclusiveBehaviour.forEach(($exclusiveInput) => {\n      const hasSameFormOwner = $input.form === $exclusiveInput.form\n      if (hasSameFormOwner) {\n        $exclusiveInput.checked = false\n        this.syncConditionalRevealWithInputState($exclusiveInput)\n      }\n    })\n  }\n\n  /**\n   * Click event handler\n   *\n   * Handle a click within the component root – if the click occurred on a checkbox,\n   * sync the state of any associated conditional reveal with the checkbox\n   * state.\n   *\n   * @private\n   * @param {MouseEvent} event - Click event\n   */\n  handleClick(event) {\n    const $clickedInput = event.target\n\n    // Ignore clicks on things that aren't checkbox inputs\n    if (\n      !($clickedInput instanceof HTMLInputElement) ||\n      $clickedInput.type !== 'checkbox'\n    ) {\n      return\n    }\n\n    // If the checkbox conditionally-reveals some content, sync the state\n    const hasAriaControls = $clickedInput.getAttribute('aria-controls')\n    if (hasAriaControls) {\n      this.syncConditionalRevealWithInputState($clickedInput)\n    }\n\n    // No further behaviour needed for unchecking\n    if (!$clickedInput.checked) {\n      return\n    }\n\n    // Handle 'exclusive' checkbox behaviour (ie \"None of these\")\n    const hasBehaviourExclusive =\n      $clickedInput.getAttribute('data-behaviour') === 'exclusive'\n    if (hasBehaviourExclusive) {\n      this.unCheckAllInputsExcept($clickedInput)\n    } else {\n      this.unCheckExclusiveInputs($clickedInput)\n    }\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-checkboxes'\n}\n", "import { ConfigurableComponent } from '../../common/configuration.mjs'\nimport { getFragmentFromUrl, setFocus } from '../../common/index.mjs'\n\n/**\n * Error summary component\n *\n * Takes focus on initialisation for accessible announcement, unless disabled in\n * configuration.\n *\n * @preserve\n * @augments ConfigurableComponent<ErrorSummaryConfig>\n */\nexport class ErrorSummary extends ConfigurableComponent {\n  /**\n   * @param {Element | null} $root - HTML element to use for error summary\n   * @param {ErrorSummaryConfig} [config] - Error summary config\n   */\n  constructor($root, config = {}) {\n    super($root, config)\n\n    /**\n     * Focus the error summary\n     */\n    if (!this.config.disableAutoFocus) {\n      setFocus(this.$root)\n    }\n\n    this.$root.addEventListener('click', (event) => this.handleClick(event))\n  }\n\n  /**\n   * Click event handler\n   *\n   * @private\n   * @param {MouseEvent} event - Click event\n   */\n  handleClick(event) {\n    const $target = event.target\n    if ($target && this.focusTarget($target)) {\n      event.preventDefault()\n    }\n  }\n\n  /**\n   * Focus the target element\n   *\n   * By default, the browser will scroll the target into view. Because our\n   * labels or legends appear above the input, this means the user will be\n   * presented with an input without any context, as the label or legend will be\n   * off the top of the screen.\n   *\n   * Manually handling the click event, scrolling the question into view and\n   * then focussing the element solves this.\n   *\n   * This also results in the label and/or legend being announced correctly in\n   * NVDA (as tested in 2018.3.2) - without this only the field type is\n   * announced (e.g. \"Edit, has autocomplete\").\n   *\n   * @private\n   * @param {EventTarget} $target - Event target\n   * @returns {boolean} True if the target was able to be focussed\n   */\n  focusTarget($target) {\n    // If the element that was clicked was not a link, return early\n    if (!($target instanceof HTMLAnchorElement)) {\n      return false\n    }\n\n    const inputId = getFragmentFromUrl($target.href)\n    if (!inputId) {\n      return false\n    }\n\n    const $input = document.getElementById(inputId)\n    if (!$input) {\n      return false\n    }\n\n    const $legendOrLabel = this.getAssociatedLegendOrLabel($input)\n    if (!$legendOrLabel) {\n      return false\n    }\n\n    // Scroll the legend or label into view *before* calling focus on the input\n    // to avoid extra scrolling in browsers that don't support `preventScroll`\n    // (which at time of writing is most of them...)\n    $legendOrLabel.scrollIntoView()\n    $input.focus({ preventScroll: true })\n\n    return true\n  }\n\n  /**\n   * Get associated legend or label\n   *\n   * Returns the first element that exists from this list:\n   *\n   * - The `<legend>` associated with the closest `<fieldset>` ancestor, as long\n   *   as the top of it is no more than half a viewport height away from the\n   *   bottom of the input\n   * - The first `<label>` that is associated with the input using for=\"inputId\"\n   * - The closest parent `<label>`\n   *\n   * @private\n   * @param {Element} $input - The input\n   * @returns {Element | null} Associated legend or label, or null if no\n   *   associated legend or label can be found\n   */\n  getAssociatedLegendOrLabel($input) {\n    const $fieldset = $input.closest('fieldset')\n\n    if ($fieldset) {\n      const $legends = $fieldset.getElementsByTagName('legend')\n\n      if ($legends.length) {\n        const $candidateLegend = $legends[0]\n\n        // If the input type is radio or checkbox, always use the legend if\n        // there is one.\n        if (\n          $input instanceof HTMLInputElement &&\n          ($input.type === 'checkbox' || $input.type === 'radio')\n        ) {\n          return $candidateLegend\n        }\n\n        // For other input types, only scroll to the fieldset’s legend (instead\n        // of the label associated with the input) if the input would end up in\n        // the top half of the screen.\n        //\n        // This should avoid situations where the input either ends up off the\n        // screen, or obscured by a software keyboard.\n        const legendTop = $candidateLegend.getBoundingClientRect().top\n        const inputRect = $input.getBoundingClientRect()\n\n        // If the browser doesn't support Element.getBoundingClientRect().height\n        // or window.innerHeight (like IE8), bail and just link to the label.\n        if (inputRect.height && window.innerHeight) {\n          const inputBottom = inputRect.top + inputRect.height\n\n          if (inputBottom - legendTop < window.innerHeight / 2) {\n            return $candidateLegend\n          }\n        }\n      }\n    }\n\n    return (\n      document.querySelector(`label[for='${$input.getAttribute('id')}']`) ??\n      $input.closest('label')\n    )\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-error-summary'\n\n  /**\n   * Error summary default config\n   *\n   * @see {@link ErrorSummaryConfig}\n   * @constant\n   * @type {ErrorSummaryConfig}\n   */\n  static defaults = Object.freeze({\n    disableAutoFocus: false\n  })\n\n  /**\n   * Error summary config schema\n   *\n   * @constant\n   * @satisfies {Schema<ErrorSummaryConfig>}\n   */\n  static schema = Object.freeze({\n    properties: {\n      disableAutoFocus: { type: 'boolean' }\n    }\n  })\n}\n\n/**\n * Error summary config\n *\n * @typedef {object} ErrorSummaryConfig\n * @property {boolean} [disableAutoFocus=false] - If set to `true` the error\n *   summary will not be focussed when the page loads.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n */\n", "import { ConfigurableComponent } from '../../common/configuration.mjs'\nimport { ElementError } from '../../errors/index.mjs'\nimport { I18n } from '../../i18n.mjs'\n\n/**\n * Exit this page component\n *\n * @preserve\n * @augments ConfigurableComponent<ExitThisPageConfig>\n */\nexport class ExitThisPage extends ConfigurableComponent {\n  /** @private */\n  i18n\n\n  /** @private */\n  $button\n\n  /**\n   * @private\n   * @type {HTMLAnchorElement | null}\n   */\n  $skiplinkButton = null\n\n  /**\n   * @private\n   * @type {HTMLElement | null}\n   */\n  $updateSpan = null\n\n  /**\n   * @private\n   * @type {HTMLElement | null}\n   */\n  $indicatorContainer = null\n\n  /**\n   * @private\n   * @type {HTMLElement | null}\n   */\n  $overlay = null\n\n  /** @private */\n  keypressCounter = 0\n\n  /** @private */\n  lastKeyWasModified = false\n\n  /** @private */\n  timeoutTime = 5000 // milliseconds\n\n  // Store the timeout events so that we can clear them to avoid user keypresses overlapping\n  // setTimeout returns an id that we can use to clear it with clearTimeout,\n  // hence the 'Id' suffix\n\n  /**\n   * @private\n   * @type {number | null}\n   */\n  keypressTimeoutId = null\n\n  /**\n   * @private\n   * @type {number | null}\n   */\n  timeoutMessageId = null\n\n  /**\n   * @param {Element | null} $root - HTML element that wraps the Exit This Page button\n   * @param {ExitThisPageConfig} [config] - Exit This Page config\n   */\n  constructor($root, config = {}) {\n    super($root, config)\n\n    const $button = this.$root.querySelector('.govuk-exit-this-page__button')\n    if (!($button instanceof HTMLAnchorElement)) {\n      throw new ElementError({\n        component: ExitThisPage,\n        element: $button,\n        expectedType: 'HTMLAnchorElement',\n        identifier: 'Button (`.govuk-exit-this-page__button`)'\n      })\n    }\n\n    this.i18n = new I18n(this.config.i18n)\n    this.$button = $button\n\n    const $skiplinkButton = document.querySelector(\n      '.govuk-js-exit-this-page-skiplink'\n    )\n    if ($skiplinkButton instanceof HTMLAnchorElement) {\n      this.$skiplinkButton = $skiplinkButton\n    }\n\n    this.buildIndicator()\n    this.initUpdateSpan()\n    this.initButtonClickHandler()\n\n    // Check to see if this has already been done by a previous initialisation of ExitThisPage\n    if (!('govukFrontendExitThisPageKeypress' in document.body.dataset)) {\n      document.addEventListener('keyup', this.handleKeypress.bind(this), true)\n      document.body.dataset.govukFrontendExitThisPageKeypress = 'true'\n    }\n\n    // When the page is restored after navigating 'back' in some browsers the\n    // blank overlay remains present, rendering the page unusable. Here, we check\n    // to see if it's present on page (re)load, and remove it if so.\n    window.addEventListener('pageshow', this.resetPage.bind(this))\n  }\n\n  /**\n   * Create the <span> we use for screen reader announcements.\n   *\n   * @private\n   */\n  initUpdateSpan() {\n    this.$updateSpan = document.createElement('span')\n    this.$updateSpan.setAttribute('role', 'status')\n    this.$updateSpan.className = 'govuk-visually-hidden'\n\n    this.$root.appendChild(this.$updateSpan)\n  }\n\n  /**\n   * Create button click handlers.\n   *\n   * @private\n   */\n  initButtonClickHandler() {\n    // Main EtP button\n    this.$button.addEventListener('click', this.handleClick.bind(this))\n\n    // EtP secondary link\n    if (this.$skiplinkButton) {\n      this.$skiplinkButton.addEventListener(\n        'click',\n        this.handleClick.bind(this)\n      )\n    }\n  }\n\n  /**\n   * Create the HTML for the 'three lights' indicator on the button.\n   *\n   * @private\n   */\n  buildIndicator() {\n    // Build container\n    // Putting `aria-hidden` on it as it won't contain any readable information\n    this.$indicatorContainer = document.createElement('div')\n    this.$indicatorContainer.className = 'govuk-exit-this-page__indicator'\n    this.$indicatorContainer.setAttribute('aria-hidden', 'true')\n\n    // Create three 'lights' and place them within the container\n    for (let i = 0; i < 3; i++) {\n      const $indicator = document.createElement('div')\n      $indicator.className = 'govuk-exit-this-page__indicator-light'\n      this.$indicatorContainer.appendChild($indicator)\n    }\n\n    // Append it all to the module\n    this.$button.appendChild(this.$indicatorContainer)\n  }\n\n  /**\n   * Update whether the lights are visible and which ones are lit up depending on\n   * the value of `keypressCounter`.\n   *\n   * @private\n   */\n  updateIndicator() {\n    if (!this.$indicatorContainer) {\n      return\n    }\n\n    // Show or hide the indicator container depending on keypressCounter value\n    this.$indicatorContainer.classList.toggle(\n      'govuk-exit-this-page__indicator--visible',\n      this.keypressCounter > 0\n    )\n\n    // Turn on only the indicators we want on\n    const $indicators = this.$indicatorContainer.querySelectorAll(\n      '.govuk-exit-this-page__indicator-light'\n    )\n    $indicators.forEach(($indicator, index) => {\n      $indicator.classList.toggle(\n        'govuk-exit-this-page__indicator-light--on',\n        index < this.keypressCounter\n      )\n    })\n  }\n\n  /**\n   * Initiates the redirection away from the current page.\n   * Includes the loading overlay functionality, which covers the current page with a\n   * white overlay so that the contents are not visible during the loading\n   * process. This is particularly important on slow network connections.\n   *\n   * @private\n   */\n  exitPage() {\n    if (!this.$updateSpan) {\n      return\n    }\n\n    this.$updateSpan.textContent = ''\n\n    // Blank the page\n    // As well as creating an overlay with text, we also set the body to hidden\n    // to prevent screen reader and sequential navigation users potentially\n    // navigating through the page behind the overlay during loading\n    document.body.classList.add('govuk-exit-this-page-hide-content')\n    this.$overlay = document.createElement('div')\n    this.$overlay.className = 'govuk-exit-this-page-overlay'\n    this.$overlay.setAttribute('role', 'alert')\n\n    // we do these this way round, thus incurring a second paint, because changing\n    // the element text after adding it means that screen readers pick up the\n    // announcement more reliably.\n    document.body.appendChild(this.$overlay)\n    this.$overlay.textContent = this.i18n.t('activated')\n\n    window.location.href = this.$button.href\n  }\n\n  /**\n   * Pre-activation logic for when the button is clicked/activated via mouse or\n   * pointer.\n   *\n   * We do this to differentiate it from the keyboard activation event because we\n   * need to run `e.preventDefault` as the button or skiplink are both links and we\n   * want to apply some additional logic in `exitPage` before navigating.\n   *\n   * @private\n   * @param {MouseEvent} event - mouse click event\n   */\n  handleClick(event) {\n    event.preventDefault()\n    this.exitPage()\n  }\n\n  /**\n   * Logic for the 'quick escape' keyboard sequence functionality (pressing the\n   * Shift key three times without interruption, within a time limit).\n   *\n   * @private\n   * @param {KeyboardEvent} event - keyup event\n   */\n  handleKeypress(event) {\n    if (!this.$updateSpan) {\n      return\n    }\n\n    // Detect if the 'Shift' key has been pressed. We want to only do things if it\n    // was pressed by itself and not in a combination with another key—so we keep\n    // track of whether the preceding keyup had shiftKey: true on it, and if it\n    // did, we ignore the next Shift keyup event.\n    //\n    // This works because using Shift as a modifier key (e.g. pressing Shift + A)\n    // will fire TWO keyup events, one for A (with e.shiftKey: true) and the other\n    // for Shift (with e.shiftKey: false).\n    if (event.key === 'Shift' && !this.lastKeyWasModified) {\n      this.keypressCounter += 1\n\n      // Update the indicator before the below if statement can reset it back to 0\n      this.updateIndicator()\n\n      // Clear the timeout for the keypress timeout message clearing itself\n      if (this.timeoutMessageId) {\n        window.clearTimeout(this.timeoutMessageId)\n        this.timeoutMessageId = null\n      }\n\n      if (this.keypressCounter >= 3) {\n        this.keypressCounter = 0\n\n        if (this.keypressTimeoutId) {\n          window.clearTimeout(this.keypressTimeoutId)\n          this.keypressTimeoutId = null\n        }\n\n        this.exitPage()\n      } else {\n        if (this.keypressCounter === 1) {\n          this.$updateSpan.textContent = this.i18n.t('pressTwoMoreTimes')\n        } else {\n          this.$updateSpan.textContent = this.i18n.t('pressOneMoreTime')\n        }\n      }\n\n      this.setKeypressTimer()\n    } else if (this.keypressTimeoutId) {\n      // If the user pressed any key other than 'Shift', after having pressed\n      // 'Shift' and activating the timer, stop and reset the timer.\n      this.resetKeypressTimer()\n    }\n\n    // Keep track of whether the Shift modifier key was held during this keypress\n    this.lastKeyWasModified = event.shiftKey\n  }\n\n  /**\n   * Starts the 'quick escape' keyboard sequence timer.\n   *\n   * This can be invoked several times. We want this to be possible so that the\n   * timer is restarted each time the shortcut key is pressed (e.g. the user has\n   * up to n seconds between each keypress, rather than n seconds to invoke the\n   * entire sequence.)\n   *\n   * @private\n   */\n  setKeypressTimer() {\n    // Clear any existing timeout. This is so only one timer is running even if\n    // there are multiple keypresses in quick succession.\n    if (this.keypressTimeoutId) {\n      window.clearTimeout(this.keypressTimeoutId)\n    }\n\n    // Set a fresh timeout\n    this.keypressTimeoutId = window.setTimeout(\n      this.resetKeypressTimer.bind(this),\n      this.timeoutTime\n    )\n  }\n\n  /**\n   * Stops and resets the 'quick escape' keyboard sequence timer.\n   *\n   * @private\n   */\n  resetKeypressTimer() {\n    if (!this.$updateSpan) {\n      return\n    }\n\n    if (this.keypressTimeoutId) {\n      window.clearTimeout(this.keypressTimeoutId)\n      this.keypressTimeoutId = null\n    }\n\n    const $updateSpan = this.$updateSpan\n\n    this.keypressCounter = 0\n    $updateSpan.textContent = this.i18n.t('timedOut')\n\n    this.timeoutMessageId = window.setTimeout(() => {\n      $updateSpan.textContent = ''\n    }, this.timeoutTime)\n\n    this.updateIndicator()\n  }\n\n  /**\n   * Reset the page using the EtP button\n   *\n   * We use this in situations where a user may re-enter a page using the browser\n   * back button. In these cases, the browser can choose to restore the state of\n   * the page as it was previously, including restoring the 'ghost page' overlay,\n   * the announcement span having it's role set to \"alert\" and the keypress\n   * indicator still active, leaving the page in an unusable state.\n   *\n   * By running this check when the page is shown, we can programatically restore\n   * the page and the component to a \"default\" state\n   *\n   * @private\n   */\n  resetPage() {\n    // If an overlay is set, remove it and reset the value\n    document.body.classList.remove('govuk-exit-this-page-hide-content')\n\n    if (this.$overlay) {\n      this.$overlay.remove()\n      this.$overlay = null\n    }\n\n    // Ensure the announcement span's role is status, not alert and clear any text\n    if (this.$updateSpan) {\n      this.$updateSpan.setAttribute('role', 'status')\n      this.$updateSpan.textContent = ''\n    }\n\n    // Sync the keypress indicator lights\n    this.updateIndicator()\n\n    // If the timeouts are active, clear them\n    if (this.keypressTimeoutId) {\n      window.clearTimeout(this.keypressTimeoutId)\n    }\n\n    if (this.timeoutMessageId) {\n      window.clearTimeout(this.timeoutMessageId)\n    }\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-exit-this-page'\n\n  /**\n   * Exit this page default config\n   *\n   * @see {@link ExitThisPageConfig}\n   * @constant\n   * @type {ExitThisPageConfig}\n   */\n  static defaults = Object.freeze({\n    i18n: {\n      activated: 'Loading.',\n      timedOut: 'Exit this page expired.',\n      pressTwoMoreTimes: 'Shift, press 2 more times to exit.',\n      pressOneMoreTime: 'Shift, press 1 more time to exit.'\n    }\n  })\n\n  /**\n   * Exit this page config schema\n   *\n   * @constant\n   * @satisfies {Schema<ExitThisPageConfig>}\n   */\n  static schema = Object.freeze({\n    properties: {\n      i18n: { type: 'object' }\n    }\n  })\n}\n\n/**\n * Exit this Page config\n *\n * @see {@link ExitThisPage.defaults}\n * @typedef {object} ExitThisPageConfig\n * @property {ExitThisPageTranslations} [i18n=ExitThisPage.defaults.i18n] - Exit this page translations\n */\n\n/**\n * Exit this Page translations\n *\n * @see {@link ExitThisPage.defaults.i18n}\n * @typedef {object} ExitThisPageTranslations\n *\n * Messages used by the component programatically inserted text, including\n * overlay text and screen reader announcements.\n * @property {string} [activated] - Screen reader announcement for when EtP\n *   keypress functionality has been successfully activated.\n * @property {string} [timedOut] - Screen reader announcement for when the EtP\n *   keypress functionality has timed out.\n * @property {string} [pressTwoMoreTimes] - Screen reader announcement informing\n *   the user they must press the activation key two more times.\n * @property {string} [pressOneMoreTime] - Screen reader announcement informing\n *   the user they must press the activation key one more time.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n */\n", "import { closestAttributeValue } from '../../common/closest-attribute-value.mjs'\nimport { ConfigurableComponent } from '../../common/configuration.mjs'\nimport { formatErrorMessage } from '../../common/index.mjs'\nimport { ElementError } from '../../errors/index.mjs'\nimport { I18n } from '../../i18n.mjs'\n\n/**\n * File upload component\n *\n * @preserve\n * @augments ConfigurableComponent<FileUploadConfig>\n */\nexport class FileUpload extends ConfigurableComponent {\n  /**\n   * @private\n   * @type {HTMLFileInputElement}\n   */\n  $input\n\n  /**\n   * @private\n   */\n  $button\n\n  /**\n   * @private\n   */\n  $status\n\n  /** @private */\n  i18n\n\n  /** @private */\n  id\n\n  /**\n   * @param {Element | null} $root - File input element\n   * @param {FileUploadConfig} [config] - File Upload config\n   */\n  constructor($root, config = {}) {\n    super($root, config)\n\n    const $input = this.$root.querySelector('input')\n\n    if ($input === null) {\n      throw new ElementError({\n        component: FileUpload,\n        identifier: 'File inputs (`<input type=\"file\">`)'\n      })\n    }\n\n    if ($input.type !== 'file') {\n      throw new ElementError(\n        formatErrorMessage(\n          FileUpload,\n          'File input (`<input type=\"file\">`) attribute (`type`) is not `file`'\n        )\n      )\n    }\n\n    this.$input = /** @type {HTMLFileInputElement} */ ($input)\n    this.$input.setAttribute('hidden', 'true')\n\n    if (!this.$input.id) {\n      throw new ElementError({\n        component: FileUpload,\n        identifier: 'File input (`<input type=\"file\">`) attribute (`id`)'\n      })\n    }\n\n    this.id = this.$input.id\n\n    this.i18n = new I18n(this.config.i18n, {\n      // Read the fallback if necessary rather than have it set in the defaults\n      locale: closestAttributeValue(this.$root, 'lang')\n    })\n\n    const $label = this.findLabel()\n    // Add an ID to the label if it doesn't have one already\n    // so it can be referenced by `aria-labelledby`\n    if (!$label.id) {\n      $label.id = `${this.id}-label`\n    }\n\n    // we need to copy the 'id' of the root element\n    // to the new button replacement element\n    // so that focus will work in the error summary\n    this.$input.id = `${this.id}-input`\n\n    // Create the file selection button\n    const $button = document.createElement('button')\n    $button.classList.add('govuk-file-upload-button')\n    $button.type = 'button'\n    $button.id = this.id\n    $button.classList.add('govuk-file-upload-button--empty')\n\n    // Copy `aria-describedby` if present so hints and errors\n    // are associated to the `<button>`\n    const ariaDescribedBy = this.$input.getAttribute('aria-describedby')\n    if (ariaDescribedBy) {\n      $button.setAttribute('aria-describedby', ariaDescribedBy)\n    }\n\n    // Create status element that shows what/how many files are selected\n    const $status = document.createElement('span')\n    $status.className = 'govuk-body govuk-file-upload-button__status'\n    $status.setAttribute('aria-live', 'polite')\n    $status.innerText = this.i18n.t('noFileChosen')\n\n    $button.appendChild($status)\n\n    const commaSpan = document.createElement('span')\n    commaSpan.className = 'govuk-visually-hidden'\n    commaSpan.innerText = ', '\n    commaSpan.id = `${this.id}-comma`\n\n    $button.appendChild(commaSpan)\n\n    const containerSpan = document.createElement('span')\n    containerSpan.className =\n      'govuk-file-upload-button__pseudo-button-container'\n\n    const buttonSpan = document.createElement('span')\n    buttonSpan.className =\n      'govuk-button govuk-button--secondary govuk-file-upload-button__pseudo-button'\n    buttonSpan.innerText = this.i18n.t('chooseFilesButton')\n\n    containerSpan.appendChild(buttonSpan)\n\n    // Add a space so the button and instruction read correctly\n    // when CSS is disabled\n    containerSpan.insertAdjacentText('beforeend', ' ')\n\n    const instructionSpan = document.createElement('span')\n    instructionSpan.className =\n      'govuk-body govuk-file-upload-button__instruction'\n    instructionSpan.innerText = this.i18n.t('dropInstruction')\n\n    containerSpan.appendChild(instructionSpan)\n\n    $button.appendChild(containerSpan)\n    $button.setAttribute(\n      'aria-labelledby',\n      `${$label.id} ${commaSpan.id} ${$button.id}`\n    )\n    $button.addEventListener('click', this.onClick.bind(this))\n    $button.addEventListener('dragover', (event) => {\n      // prevent default to allow drop\n      event.preventDefault()\n    })\n\n    // Assemble these all together\n    this.$root.insertAdjacentElement('afterbegin', $button)\n\n    this.$input.setAttribute('tabindex', '-1')\n    this.$input.setAttribute('aria-hidden', 'true')\n\n    // Make all these new variables available to the module\n    this.$button = $button\n    this.$status = $status\n\n    // Bind change event to the underlying input\n    this.$input.addEventListener('change', this.onChange.bind(this))\n\n    // Synchronise the `disabled` state between the button and underlying input\n    this.updateDisabledState()\n    this.observeDisabledState()\n\n    // Handle drop zone visibility\n    // A live region to announce when users enter or leave the drop zone\n    this.$announcements = document.createElement('span')\n    this.$announcements.classList.add('govuk-file-upload-announcements')\n    this.$announcements.classList.add('govuk-visually-hidden')\n    this.$announcements.setAttribute('aria-live', 'assertive')\n    this.$root.insertAdjacentElement('afterend', this.$announcements)\n\n    // if there is no CSS and input is hidden\n    // button will need to handle drop event\n    this.$button.addEventListener('drop', this.onDrop.bind(this))\n\n    // While user is dragging, it gets a little more complex because of Safari.\n    // Safari doesn't fill `relatedTarget` on `dragleave` (nor `dragenter`).\n    // This means we can't use `relatedTarget` to:\n    // - check if the user is still within the wrapper\n    //   (`relatedTarget` being a descendant of the wrapper)\n    // - check if the user is still over the viewport\n    //   (`relatedTarget` being null if outside)\n\n    // Thanks to `dragenter` bubbling, we can listen on the `document` with a\n    // single function and update the visibility based on whether we entered a\n    // node inside or outside the wrapper.\n    document.addEventListener(\n      'dragenter',\n      this.updateDropzoneVisibility.bind(this)\n    )\n\n    // To detect if we're outside the document, we can track if there was a\n    // `dragenter` event preceding a `dragleave`. If there wasn't, this means\n    // we're outside the document.\n    //\n    // The order of events is guaranteed by the HTML specs:\n    // https://html.spec.whatwg.org/multipage/dnd.html#drag-and-drop-processing-model\n    document.addEventListener('dragenter', () => {\n      this.enteredAnotherElement = true\n    })\n\n    document.addEventListener('dragleave', () => {\n      if (!this.enteredAnotherElement && !this.$button.disabled) {\n        this.hideDraggingState()\n        this.$announcements.innerText = this.i18n.t('leftDropZone')\n      }\n\n      this.enteredAnotherElement = false\n    })\n  }\n\n  /**\n   * Updates the visibility of the dropzone as users enters the various elements on the page\n   *\n   * @param {DragEvent} event - The `dragenter` event\n   */\n  updateDropzoneVisibility(event) {\n    if (this.$button.disabled) return\n\n    // DOM interfaces only type `event.target` as `EventTarget`\n    // so we first need to make sure it's a `Node`\n    if (event.target instanceof Node) {\n      if (this.$root.contains(event.target)) {\n        if (event.dataTransfer && isContainingFiles(event.dataTransfer)) {\n          // Only update the class and make the announcement if not already visible\n          // to avoid repeated announcements on NVDA (2024.4) + Firefox (133)\n          if (\n            !this.$button.classList.contains(\n              'govuk-file-upload-button--dragging'\n            )\n          ) {\n            this.showDraggingState()\n            this.$announcements.innerText = this.i18n.t('enteredDropZone')\n          }\n        }\n      } else {\n        // Only hide the dropzone if it is visible to prevent announcing user\n        // left the drop zone when they enter the page but haven't reached yet\n        // the file upload component\n        if (\n          this.$button.classList.contains('govuk-file-upload-button--dragging')\n        ) {\n          this.hideDraggingState()\n          this.$announcements.innerText = this.i18n.t('leftDropZone')\n        }\n      }\n    }\n  }\n\n  /**\n   * Show the drop zone visually\n   */\n  showDraggingState() {\n    this.$button.classList.add('govuk-file-upload-button--dragging')\n  }\n\n  /**\n   * Hides the drop zone visually\n   */\n  hideDraggingState() {\n    this.$button.classList.remove('govuk-file-upload-button--dragging')\n  }\n\n  /**\n   * Handles user dropping on the component\n   *\n   * @param {DragEvent} event - The `dragenter` event\n   */\n  onDrop(event) {\n    event.preventDefault()\n\n    if (event.dataTransfer && isContainingFiles(event.dataTransfer)) {\n      this.$input.files = event.dataTransfer.files\n\n      // Dispatch a `change` event so external code that would rely on the `<input>`\n      // dispatching an event when files are dropped still work.\n      // Use a `CustomEvent` so our events are distinguishable from browser's native events\n      this.$input.dispatchEvent(new CustomEvent('change'))\n\n      this.hideDraggingState()\n    }\n  }\n\n  /**\n   * Check if the value of the underlying input has changed\n   */\n  onChange() {\n    const fileCount = this.$input.files.length\n\n    if (fileCount === 0) {\n      // If there are no files, show the default selection text\n      this.$status.innerText = this.i18n.t('noFileChosen')\n      this.$button.classList.add('govuk-file-upload-button--empty')\n    } else {\n      if (\n        // If there is 1 file, just show the file name\n        fileCount === 1\n      ) {\n        this.$status.innerText = this.$input.files[0].name\n      } else {\n        // Otherwise, tell the user how many files are selected\n        this.$status.innerText = this.i18n.t('multipleFilesChosen', {\n          count: fileCount\n        })\n      }\n\n      this.$button.classList.remove('govuk-file-upload-button--empty')\n    }\n  }\n\n  /**\n   * Looks up the `<label>` element associated to the field\n   *\n   * @private\n   * @returns {HTMLElement} The `<label>` element associated to the field\n   * @throws {ElementError} If the `<label>` cannot be found\n   */\n  findLabel() {\n    // Use `label` in the selector so TypeScript knows the type fo `HTMLElement`\n    const $label = document.querySelector(`label[for=\"${this.$input.id}\"]`)\n\n    if (!$label) {\n      throw new ElementError({\n        component: FileUpload,\n        identifier: `Field label (\\`<label for=${this.$input.id}>\\`)`\n      })\n    }\n\n    return $label\n  }\n\n  /**\n   * When the button is clicked, emulate clicking the actual, hidden file input\n   */\n  onClick() {\n    this.$input.click()\n  }\n\n  /**\n   * Create a mutation observer to check if the input's attributes altered.\n   */\n  observeDisabledState() {\n    const observer = new MutationObserver((mutationList) => {\n      for (const mutation of mutationList) {\n        if (\n          mutation.type === 'attributes' &&\n          mutation.attributeName === 'disabled'\n        ) {\n          this.updateDisabledState()\n        }\n      }\n    })\n\n    observer.observe(this.$input, {\n      attributes: true\n    })\n  }\n\n  /**\n   * Synchronise the `disabled` state between the input and replacement button.\n   */\n  updateDisabledState() {\n    this.$button.disabled = this.$input.disabled\n\n    this.$root.classList.toggle(\n      'govuk-drop-zone--disabled',\n      this.$button.disabled\n    )\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-file-upload'\n\n  /**\n   * File upload default config\n   *\n   * @see {@link FileUploadConfig}\n   * @constant\n   * @type {FileUploadConfig}\n   */\n  static defaults = Object.freeze({\n    i18n: {\n      chooseFilesButton: 'Choose file',\n      dropInstruction: 'or drop file',\n      noFileChosen: 'No file chosen',\n      multipleFilesChosen: {\n        // the 'one' string isn't used as the component displays the filename\n        // instead, however it's here for coverage's sake\n        one: '%{count} file chosen',\n        other: '%{count} files chosen'\n      },\n      enteredDropZone: 'Entered drop zone',\n      leftDropZone: 'Left drop zone'\n    }\n  })\n\n  /**\n   * File upload config schema\n   *\n   * @constant\n   * @satisfies {Schema<FileUploadConfig>}\n   */\n  static schema = Object.freeze({\n    properties: {\n      i18n: { type: 'object' }\n    }\n  })\n}\n\n/**\n * Checks if the given `DataTransfer` contains files\n *\n * @internal\n * @param {DataTransfer} dataTransfer - The `DataTransfer` to check\n * @returns {boolean} - `true` if it contains files or we can't infer it, `false` otherwise\n */\nfunction isContainingFiles(dataTransfer) {\n  // Safari sometimes does not provide info about types :'(\n  // In which case best not to assume anything and try to set the files\n  const hasNoTypesInfo = dataTransfer.types.length === 0\n\n  // When dragging images, there's a mix of mime types + Files\n  // which we can't assign to the native input\n  const isDraggingFiles = dataTransfer.types.some((type) => type === 'Files')\n\n  return hasNoTypesInfo || isDraggingFiles\n}\n\n/**\n * @typedef {HTMLInputElement & {files: FileList}} HTMLFileInputElement\n */\n\n/**\n * File upload config\n *\n * @see {@link FileUpload.defaults}\n * @typedef {object} FileUploadConfig\n * @property {FileUploadTranslations} [i18n=FileUpload.defaults.i18n] - File upload translations\n */\n\n/**\n * File upload translations\n *\n * @see {@link FileUpload.defaults.i18n}\n * @typedef {object} FileUploadTranslations\n *\n * Messages used by the component\n * @property {string} [chooseFile] - The text of the button that opens the file picker\n * @property {string} [dropInstruction] - The text informing users they can drop files\n * @property {TranslationPluralForms} [multipleFilesChosen] - The text displayed when multiple files\n *   have been chosen by the user\n * @property {string} [noFileChosen] - The text to displayed when no file has been chosen by the user\n * @property {string} [enteredDropZone] - The text announced by assistive technology\n *   when user drags files and enters the drop zone\n * @property {string} [leftDropZone] - The text announced by assistive technology\n *   when user drags files and leaves the drop zone without dropping\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n * @import { TranslationPluralForms } from '../../i18n.mjs'\n */\n", "import { getBreakpoint } from '../../common/index.mjs'\nimport { Component } from '../../component.mjs'\nimport { ElementError } from '../../errors/index.mjs'\n\n/**\n * Header component\n *\n * @preserve\n */\nexport class Header extends Component {\n  /** @private */\n  $menuButton\n\n  /** @private */\n  $menu\n\n  /**\n   * Save the opened/closed state for the nav in memory so that we can\n   * accurately maintain state when the screen is changed from small to big and\n   * back to small\n   *\n   * @private\n   */\n  menuIsOpen = false\n\n  /**\n   * A global const for storing a matchMedia instance which we'll use to detect\n   * when a screen size change happens. We rely on it being null if the feature\n   * isn't available to initially apply hidden attributes\n   *\n   * @private\n   * @type {MediaQueryList | null}\n   */\n  mql = null\n\n  /**\n   * Apply a matchMedia for desktop which will trigger a state sync if the\n   * browser viewport moves between states.\n   *\n   * @param {Element | null} $root - HTML element to use for header\n   */\n  constructor($root) {\n    super($root)\n\n    const $menuButton = this.$root.querySelector('.govuk-js-header-toggle')\n\n    // Headers don't necessarily have a navigation. When they don't, the menu\n    // toggle won't be rendered by our macro (or may be omitted when writing\n    // plain HTML)\n    if (!$menuButton) {\n      return this\n    }\n\n    const menuId = $menuButton.getAttribute('aria-controls')\n    if (!menuId) {\n      throw new ElementError({\n        component: Header,\n        identifier:\n          'Navigation button (`<button class=\"govuk-js-header-toggle\">`) attribute (`aria-controls`)'\n      })\n    }\n\n    const $menu = document.getElementById(menuId)\n    if (!$menu) {\n      throw new ElementError({\n        component: Header,\n        element: $menu,\n        identifier: `Navigation (\\`<ul id=\"${menuId}\">\\`)`\n      })\n    }\n\n    this.$menu = $menu\n    this.$menuButton = $menuButton\n\n    this.setupResponsiveChecks()\n\n    this.$menuButton.addEventListener('click', () =>\n      this.handleMenuButtonClick()\n    )\n  }\n\n  /**\n   * Setup viewport resize check\n   *\n   * @private\n   */\n  setupResponsiveChecks() {\n    const breakpoint = getBreakpoint('desktop')\n\n    if (!breakpoint.value) {\n      throw new ElementError({\n        component: Header,\n        identifier: `CSS custom property (\\`${breakpoint.property}\\`) on pseudo-class \\`:root\\``\n      })\n    }\n\n    // Media query list for GOV.UK Frontend desktop breakpoint\n    this.mql = window.matchMedia(`(min-width: ${breakpoint.value})`)\n\n    // MediaQueryList.addEventListener isn't supported by Safari < 14 so we need\n    // to be able to fall back to the deprecated MediaQueryList.addListener\n    if ('addEventListener' in this.mql) {\n      this.mql.addEventListener('change', () => this.checkMode())\n    } else {\n      // @ts-expect-error Property 'addListener' does not exist\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n      this.mql.addListener(() => this.checkMode())\n    }\n\n    this.checkMode()\n  }\n\n  /**\n   * Sync menu state\n   *\n   * Uses the global variable menuIsOpen to correctly set the accessible and\n   * visual states of the menu and the menu button.\n   * Additionally will force the menu to be visible and the menu button to be\n   * hidden if the matchMedia is triggered to desktop.\n   *\n   * @private\n   */\n  checkMode() {\n    if (!this.mql || !this.$menu || !this.$menuButton) {\n      return\n    }\n\n    if (this.mql.matches) {\n      this.$menu.removeAttribute('hidden')\n      this.$menuButton.setAttribute('hidden', '')\n    } else {\n      this.$menuButton.removeAttribute('hidden')\n      this.$menuButton.setAttribute('aria-expanded', this.menuIsOpen.toString())\n\n      if (this.menuIsOpen) {\n        this.$menu.removeAttribute('hidden')\n      } else {\n        this.$menu.setAttribute('hidden', '')\n      }\n    }\n  }\n\n  /**\n   * Handle menu button click\n   *\n   * When the menu button is clicked, change the visibility of the menu and then\n   * sync the accessibility state and menu button state\n   *\n   * @private\n   */\n  handleMenuButtonClick() {\n    this.menuIsOpen = !this.menuIsOpen\n    this.checkMode()\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-header'\n}\n", "import { ConfigurableComponent } from '../../common/configuration.mjs'\nimport { setFocus } from '../../common/index.mjs'\n\n/**\n * Notification Banner component\n *\n * @preserve\n * @augments ConfigurableComponent<NotificationBannerConfig>\n */\nexport class NotificationBanner extends ConfigurableComponent {\n  /**\n   * @param {Element | null} $root - HTML element to use for notification banner\n   * @param {NotificationBannerConfig} [config] - Notification banner config\n   */\n  constructor($root, config = {}) {\n    super($root, config)\n\n    /**\n     * Focus the notification banner\n     *\n     * If `role=\"alert\"` is set, focus the element to help some assistive\n     * technologies prioritise announcing it.\n     *\n     * You can turn off the auto-focus functionality by setting\n     * `data-disable-auto-focus=\"true\"` in the component HTML. You might wish to\n     * do this based on user research findings, or to avoid a clash with another\n     * element which should be focused when the page loads.\n     */\n    if (\n      this.$root.getAttribute('role') === 'alert' &&\n      !this.config.disableAutoFocus\n    ) {\n      setFocus(this.$root)\n    }\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-notification-banner'\n\n  /**\n   * Notification banner default config\n   *\n   * @see {@link NotificationBannerConfig}\n   * @constant\n   * @type {NotificationBannerConfig}\n   */\n  static defaults = Object.freeze({\n    disableAutoFocus: false\n  })\n\n  /**\n   * Notification banner config schema\n   *\n   * @constant\n   * @satisfies {Schema<NotificationBannerConfig>}\n   */\n  static schema = Object.freeze({\n    properties: {\n      disableAutoFocus: { type: 'boolean' }\n    }\n  })\n}\n\n/**\n * Notification banner config\n *\n * @typedef {object} NotificationBannerConfig\n * @property {boolean} [disableAutoFocus=false] - If set to `true` the\n *   notification banner will not be focussed when the page loads. This only\n *   applies if the component has a `role` of `alert` – in other cases the\n *   component will not be focused on page load, regardless of this option.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n */\n", "import { closestAttributeValue } from '../../common/closest-attribute-value.mjs'\nimport { ConfigurableComponent } from '../../common/configuration.mjs'\nimport { ElementError } from '../../errors/index.mjs'\nimport { I18n } from '../../i18n.mjs'\n\n/**\n * Password input component\n *\n * @preserve\n * @augments ConfigurableComponent<PasswordInputConfig>\n */\nexport class PasswordInput extends ConfigurableComponent {\n  /** @private */\n  i18n\n\n  /**\n   * @private\n   * @type {HTMLInputElement}\n   */\n  $input\n\n  /**\n   * @private\n   * @type {HTMLButtonElement}\n   */\n  $showHideButton\n\n  /** @private */\n  $screenReaderStatusMessage\n\n  /**\n   * @param {Element | null} $root - HTML element to use for password input\n   * @param {PasswordInputConfig} [config] - Password input config\n   */\n  constructor($root, config = {}) {\n    super($root, config)\n\n    const $input = this.$root.querySelector('.govuk-js-password-input-input')\n    if (!($input instanceof HTMLInputElement)) {\n      throw new ElementError({\n        component: PasswordInput,\n        element: $input,\n        expectedType: 'HTMLInputElement',\n        identifier: 'Form field (`.govuk-js-password-input-input`)'\n      })\n    }\n\n    if ($input.type !== 'password') {\n      throw new ElementError(\n        'Password input: Form field (`.govuk-js-password-input-input`) must be of type `password`.'\n      )\n    }\n\n    const $showHideButton = this.$root.querySelector(\n      '.govuk-js-password-input-toggle'\n    )\n    if (!($showHideButton instanceof HTMLButtonElement)) {\n      throw new ElementError({\n        component: PasswordInput,\n        element: $showHideButton,\n        expectedType: 'HTMLButtonElement',\n        identifier: 'Button (`.govuk-js-password-input-toggle`)'\n      })\n    }\n\n    if ($showHideButton.type !== 'button') {\n      throw new ElementError(\n        'Password input: Button (`.govuk-js-password-input-toggle`) must be of type `button`.'\n      )\n    }\n\n    this.$input = $input\n    this.$showHideButton = $showHideButton\n\n    this.i18n = new I18n(this.config.i18n, {\n      // Read the fallback if necessary rather than have it set in the defaults\n      locale: closestAttributeValue(this.$root, 'lang')\n    })\n\n    // Show the toggle button element\n    this.$showHideButton.removeAttribute('hidden')\n\n    // Create and append the status text for screen readers.\n    // This is injected between the input and button so that users get a sensible reading order if\n    // moving through the page content linearly:\n    // [password input] -> [your password is visible/hidden] -> [show/hide password]\n    const $screenReaderStatusMessage = document.createElement('div')\n    $screenReaderStatusMessage.className =\n      'govuk-password-input__sr-status govuk-visually-hidden'\n    $screenReaderStatusMessage.setAttribute('aria-live', 'polite')\n    this.$screenReaderStatusMessage = $screenReaderStatusMessage\n    this.$input.insertAdjacentElement('afterend', $screenReaderStatusMessage)\n\n    // Bind toggle button\n    this.$showHideButton.addEventListener('click', this.toggle.bind(this))\n\n    // Bind event to revert the password visibility to hidden\n    if (this.$input.form) {\n      this.$input.form.addEventListener('submit', () => this.hide())\n    }\n\n    // If the page is restored from bfcache and the password is visible, hide it again\n    window.addEventListener('pageshow', (event) => {\n      if (event.persisted && this.$input.type !== 'password') {\n        this.hide()\n      }\n    })\n\n    // Default the component to having the password hidden.\n    this.hide()\n  }\n\n  /**\n   * Toggle the visibility of the password input\n   *\n   * @private\n   * @param {MouseEvent} event - Click event\n   */\n  toggle(event) {\n    event.preventDefault()\n\n    // If on this click, the field is type=\"password\", show the value\n    if (this.$input.type === 'password') {\n      this.show()\n      return\n    }\n\n    // Otherwise, hide it\n    // Being defensive - hiding should always be the default\n    this.hide()\n  }\n\n  /**\n   * Show the password input value in plain text.\n   *\n   * @private\n   */\n  show() {\n    this.setType('text')\n  }\n\n  /**\n   * Hide the password input value.\n   *\n   * @private\n   */\n  hide() {\n    this.setType('password')\n  }\n\n  /**\n   * Set the password input type\n   *\n   * @param {'text' | 'password'} type - Input type\n   * @private\n   */\n  setType(type) {\n    if (type === this.$input.type) {\n      return\n    }\n\n    // Update input type\n    this.$input.setAttribute('type', type)\n\n    const isHidden = type === 'password'\n    const prefixButton = isHidden ? 'show' : 'hide'\n    const prefixStatus = isHidden ? 'passwordHidden' : 'passwordShown'\n\n    // Update button text\n    this.$showHideButton.innerText = this.i18n.t(`${prefixButton}Password`)\n\n    // Update button aria-label\n    this.$showHideButton.setAttribute(\n      'aria-label',\n      this.i18n.t(`${prefixButton}PasswordAriaLabel`)\n    )\n\n    // Update status change text\n    this.$screenReaderStatusMessage.innerText = this.i18n.t(\n      `${prefixStatus}Announcement`\n    )\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-password-input'\n\n  /**\n   * Password input default config\n   *\n   * @see {@link PasswordInputConfig}\n   * @constant\n   * @default\n   * @type {PasswordInputConfig}\n   */\n  static defaults = Object.freeze({\n    i18n: {\n      showPassword: 'Show',\n      hidePassword: 'Hide',\n      showPasswordAriaLabel: 'Show password',\n      hidePasswordAriaLabel: 'Hide password',\n      passwordShownAnnouncement: 'Your password is visible',\n      passwordHiddenAnnouncement: 'Your password is hidden'\n    }\n  })\n\n  /**\n   * Password input config schema\n   *\n   * @constant\n   * @satisfies {Schema<PasswordInputConfig>}\n   */\n  static schema = Object.freeze({\n    properties: {\n      i18n: { type: 'object' }\n    }\n  })\n}\n\n/**\n * Password input config\n *\n * @typedef {object} PasswordInputConfig\n * @property {PasswordInputTranslations} [i18n=PasswordInput.defaults.i18n] - Password input translations\n */\n\n/**\n * Password input translations\n *\n * @see {@link PasswordInput.defaults.i18n}\n * @typedef {object} PasswordInputTranslations\n *\n * Messages displayed to the user indicating the state of the show/hide toggle.\n * @property {string} [showPassword] - Visible text of the button when the\n *   password is currently hidden. Plain text only.\n * @property {string} [hidePassword] - Visible text of the button when the\n *   password is currently visible. Plain text only.\n * @property {string} [showPasswordAriaLabel] - aria-label of the button when\n *   the password is currently hidden. Plain text only.\n * @property {string} [hidePasswordAriaLabel] - aria-label of the button when\n *   the password is currently visible. Plain text only.\n * @property {string} [passwordShownAnnouncement] - Screen reader\n *   announcement to make when the password has just become visible.\n *   Plain text only.\n * @property {string} [passwordHiddenAnnouncement] - Screen reader\n *   announcement to make when the password has just been hidden.\n *   Plain text only.\n */\n\n/**\n * @import { Schema } from '../../common/configuration.mjs'\n */\n", "import { Component } from '../../component.mjs'\nimport { ElementError } from '../../errors/index.mjs'\n\n/**\n * Radios component\n *\n * @preserve\n */\nexport class Radios extends Component {\n  /** @private */\n  $inputs\n\n  /**\n   * Radios can be associated with a 'conditionally revealed' content block –\n   * for example, a radio for 'Phone' could reveal an additional form field for\n   * the user to enter their phone number.\n   *\n   * These associations are made using a `data-aria-controls` attribute, which\n   * is promoted to an aria-controls attribute during initialisation.\n   *\n   * We also need to restore the state of any conditional reveals on the page\n   * (for example if the user has navigated back), and set up event handlers to\n   * keep the reveal in sync with the radio state.\n   *\n   * @param {Element | null} $root - HTML element to use for radios\n   */\n  constructor($root) {\n    super($root)\n\n    const $inputs = this.$root.querySelectorAll('input[type=\"radio\"]')\n    if (!$inputs.length) {\n      throw new ElementError({\n        component: Radios,\n        identifier: 'Form inputs (`<input type=\"radio\">`)'\n      })\n    }\n\n    this.$inputs = $inputs\n\n    this.$inputs.forEach(($input) => {\n      const targetId = $input.getAttribute('data-aria-controls')\n\n      // Skip radios without data-aria-controls attributes\n      if (!targetId) {\n        return\n      }\n\n      // Throw if target conditional element does not exist.\n      if (!document.getElementById(targetId)) {\n        throw new ElementError({\n          component: Radios,\n          identifier: `Conditional reveal (\\`id=\"${targetId}\"\\`)`\n        })\n      }\n\n      // Promote the data-aria-controls attribute to a aria-controls attribute\n      // so that the relationship is exposed in the AOM\n      $input.setAttribute('aria-controls', targetId)\n      $input.removeAttribute('data-aria-controls')\n    })\n\n    // When the page is restored after navigating 'back' in some browsers the\n    // state of form controls is not restored until *after* the DOMContentLoaded\n    // event is fired, so we need to sync after the pageshow event.\n    window.addEventListener('pageshow', () => this.syncAllConditionalReveals())\n\n    // Although we've set up handlers to sync state on the pageshow event, init\n    // could be called after those events have fired, for example if they are\n    // added to the page dynamically, so sync now too.\n    this.syncAllConditionalReveals()\n\n    // Handle events\n    this.$root.addEventListener('click', (event) => this.handleClick(event))\n  }\n\n  /**\n   * Sync the conditional reveal states for all radio buttons in this component.\n   *\n   * @private\n   */\n  syncAllConditionalReveals() {\n    this.$inputs.forEach(($input) =>\n      this.syncConditionalRevealWithInputState($input)\n    )\n  }\n\n  /**\n   * Sync conditional reveal with the input state\n   *\n   * Synchronise the visibility of the conditional reveal, and its accessible\n   * state, with the input's checked state.\n   *\n   * @private\n   * @param {HTMLInputElement} $input - Radio input\n   */\n  syncConditionalRevealWithInputState($input) {\n    const targetId = $input.getAttribute('aria-controls')\n    if (!targetId) {\n      return\n    }\n\n    const $target = document.getElementById(targetId)\n    if ($target?.classList.contains('govuk-radios__conditional')) {\n      const inputIsChecked = $input.checked\n\n      $input.setAttribute('aria-expanded', inputIsChecked.toString())\n      $target.classList.toggle(\n        'govuk-radios__conditional--hidden',\n        !inputIsChecked\n      )\n    }\n  }\n\n  /**\n   * Click event handler\n   *\n   * Handle a click within the component root – if the click occurred on a radio, sync\n   * the state of the conditional reveal for all radio buttons in the same form\n   * with the same name (because checking one radio could have un-checked a\n   * radio under the root of another Radio component)\n   *\n   * @private\n   * @param {MouseEvent} event - Click event\n   */\n  handleClick(event) {\n    const $clickedInput = event.target\n\n    // Ignore clicks on things that aren't radio buttons\n    if (\n      !($clickedInput instanceof HTMLInputElement) ||\n      $clickedInput.type !== 'radio'\n    ) {\n      return\n    }\n\n    // We only need to consider radios with conditional reveals, which will have\n    // aria-controls attributes.\n    const $allInputs = document.querySelectorAll(\n      'input[type=\"radio\"][aria-controls]'\n    )\n\n    const $clickedInputForm = $clickedInput.form\n    const $clickedInputName = $clickedInput.name\n\n    $allInputs.forEach(($input) => {\n      const hasSameFormOwner = $input.form === $clickedInputForm\n      const hasSameName = $input.name === $clickedInputName\n\n      if (hasSameName && hasSameFormOwner) {\n        this.syncConditionalRevealWithInputState($input)\n      }\n    })\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-radios'\n}\n", "import { getBreakpoint } from '../../common/index.mjs'\nimport { Component } from '../../component.mjs'\nimport { ElementError } from '../../errors/index.mjs'\n\n/**\n * Service Navigation component\n *\n * @preserve\n */\nexport class ServiceNavigation extends Component {\n  /** @private */\n  $menuButton\n\n  /** @private */\n  $menu\n\n  /**\n   * Remember the open/closed state of the nav so we can maintain it when the\n   * screen is resized.\n   *\n   * @private\n   */\n  menuIsOpen = false\n\n  /**\n   * A global const for storing a matchMedia instance which we'll use to detect\n   * when a screen size change happens. We rely on it being null if the feature\n   * isn't available to initially apply hidden attributes\n   *\n   * @private\n   * @type {MediaQueryList | null}\n   */\n  mql = null\n\n  /**\n   * @param {Element | null} $root - HTML element to use for header\n   */\n  constructor($root) {\n    super($root)\n\n    const $menuButton = this.$root.querySelector(\n      '.govuk-js-service-navigation-toggle'\n    )\n\n    // Headers don't necessarily have a navigation. When they don't, the menu\n    // toggle won't be rendered by our macro (or may be omitted when writing\n    // plain HTML)\n    if (!$menuButton) {\n      return this\n    }\n\n    const menuId = $menuButton.getAttribute('aria-controls')\n    if (!menuId) {\n      throw new ElementError({\n        component: ServiceNavigation,\n        identifier:\n          'Navigation button (`<button class=\"govuk-js-service-navigation-toggle\">`) attribute (`aria-controls`)'\n      })\n    }\n\n    const $menu = document.getElementById(menuId)\n    if (!$menu) {\n      throw new ElementError({\n        component: ServiceNavigation,\n        element: $menu,\n        identifier: `Navigation (\\`<ul id=\"${menuId}\">\\`)`\n      })\n    }\n\n    this.$menu = $menu\n    this.$menuButton = $menuButton\n\n    this.setupResponsiveChecks()\n\n    this.$menuButton.addEventListener('click', () =>\n      this.handleMenuButtonClick()\n    )\n  }\n\n  /**\n   * Setup viewport resize check\n   *\n   * @private\n   */\n  setupResponsiveChecks() {\n    const breakpoint = getBreakpoint('tablet')\n\n    if (!breakpoint.value) {\n      throw new ElementError({\n        component: ServiceNavigation,\n        identifier: `CSS custom property (\\`${breakpoint.property}\\`) on pseudo-class \\`:root\\``\n      })\n    }\n\n    // Media query list for GOV.UK Frontend desktop breakpoint\n    this.mql = window.matchMedia(`(min-width: ${breakpoint.value})`)\n\n    // MediaQueryList.addEventListener isn't supported by Safari < 14 so we need\n    // to be able to fall back to the deprecated MediaQueryList.addListener\n    if ('addEventListener' in this.mql) {\n      this.mql.addEventListener('change', () => this.checkMode())\n    } else {\n      // @ts-expect-error Property 'addListener' does not exist\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n      this.mql.addListener(() => this.checkMode())\n    }\n\n    this.checkMode()\n  }\n\n  /**\n   * Sync menu state\n   *\n   * Uses the global variable menuIsOpen to correctly set the accessible and\n   * visual states of the menu and the menu button.\n   * Additionally will force the menu to be visible and the menu button to be\n   * hidden if the matchMedia is triggered to desktop.\n   *\n   * @private\n   */\n  checkMode() {\n    if (!this.mql || !this.$menu || !this.$menuButton) {\n      return\n    }\n\n    if (this.mql.matches) {\n      this.$menu.removeAttribute('hidden')\n      this.$menuButton.setAttribute('hidden', '')\n    } else {\n      this.$menuButton.removeAttribute('hidden')\n      this.$menuButton.setAttribute('aria-expanded', this.menuIsOpen.toString())\n\n      if (this.menuIsOpen) {\n        this.$menu.removeAttribute('hidden')\n      } else {\n        this.$menu.setAttribute('hidden', '')\n      }\n    }\n  }\n\n  /**\n   * Handle menu button click\n   *\n   * When the menu button is clicked, change the visibility of the menu and then\n   * sync the accessibility state and menu button state\n   *\n   * @private\n   */\n  handleMenuButtonClick() {\n    this.menuIsOpen = !this.menuIsOpen\n    this.checkMode()\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-service-navigation'\n}\n", "import { getFragmentFromUrl, setFocus } from '../../common/index.mjs'\nimport { Component } from '../../component.mjs'\nimport { ElementError } from '../../errors/index.mjs'\n\n/**\n * Skip link component\n *\n * @preserve\n * @augments Component<HTMLAnchorElement>\n */\nexport class SkipLink extends Component {\n  static elementType = HTMLAnchorElement\n\n  /**\n   * @param {Element | null} $root - HTML element to use for skip link\n   * @throws {ElementError} when $root is not set or the wrong type\n   * @throws {ElementError} when $root.hash does not contain a hash\n   * @throws {ElementError} when the linked element is missing or the wrong type\n   */\n  constructor($root) {\n    super($root)\n\n    const hash = this.$root.hash\n    const href = this.$root.getAttribute('href') ?? ''\n\n    /** @type {URL | undefined} */\n    let url\n\n    /**\n     * Check for valid link URL\n     *\n     * {@link https://caniuse.com/url}\n     * {@link https://url.spec.whatwg.org}\n     *\n     */\n    try {\n      url = new window.URL(this.$root.href)\n    } catch (error) {\n      throw new ElementError(\n        `Skip link: Target link (\\`href=\"${href}\"\\`) is invalid`\n      )\n    }\n\n    // Return early for external URLs or links to other pages\n    if (\n      url.origin !== window.location.origin ||\n      url.pathname !== window.location.pathname\n    ) {\n      return\n    }\n\n    const linkedElementId = getFragmentFromUrl(hash)\n\n    // Check link path matching current page\n    if (!linkedElementId) {\n      throw new ElementError(\n        `Skip link: Target link (\\`href=\"${href}\"\\`) has no hash fragment`\n      )\n    }\n\n    const $linkedElement = document.getElementById(linkedElementId)\n\n    // Check for link target element\n    if (!$linkedElement) {\n      throw new ElementError({\n        component: SkipLink,\n        element: $linkedElement,\n        identifier: `Target content (\\`id=\"${linkedElementId}\"\\`)`\n      })\n    }\n\n    /**\n     * Focus the linked element on click\n     *\n     * Adds a helper CSS class to hide native focus styles,\n     * but removes it on blur to restore native focus styles\n     */\n    this.$root.addEventListener('click', () =>\n      setFocus($linkedElement, {\n        onBeforeFocus() {\n          $linkedElement.classList.add('govuk-skip-link-focused-element')\n        },\n        onBlur() {\n          $linkedElement.classList.remove('govuk-skip-link-focused-element')\n        }\n      })\n    )\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-skip-link'\n}\n", "import { getBreakpoint, getFragmentFromUrl } from '../../common/index.mjs'\nimport { Component } from '../../component.mjs'\nimport { ElementError } from '../../errors/index.mjs'\n\n/**\n * Tabs component\n *\n * @preserve\n */\nexport class Tabs extends Component {\n  /** @private */\n  $tabs\n\n  /** @private */\n  $tabList\n\n  /** @private */\n  $tabListItems\n\n  /** @private */\n  jsHiddenClass = 'govuk-tabs__panel--hidden'\n\n  /** @private */\n  changingHash = false\n\n  /** @private */\n  boundTabClick\n\n  /** @private */\n  boundTabKeydown\n\n  /** @private */\n  boundOnHashChange\n\n  /**\n   * @private\n   * @type {MediaQueryList | null}\n   */\n  mql = null\n\n  /**\n   * @param {Element | null} $root - HTML element to use for tabs\n   */\n  constructor($root) {\n    super($root)\n\n    const $tabs = this.$root.querySelectorAll('a.govuk-tabs__tab')\n    if (!$tabs.length) {\n      throw new ElementError({\n        component: Tabs,\n        identifier: 'Links (`<a class=\"govuk-tabs__tab\">`)'\n      })\n    }\n\n    this.$tabs = $tabs\n\n    // Save bound functions so we can remove event listeners during teardown\n    this.boundTabClick = this.onTabClick.bind(this)\n    this.boundTabKeydown = this.onTabKeydown.bind(this)\n    this.boundOnHashChange = this.onHashChange.bind(this)\n\n    const $tabList = this.$root.querySelector('.govuk-tabs__list')\n    const $tabListItems = this.$root.querySelectorAll(\n      'li.govuk-tabs__list-item'\n    )\n\n    if (!$tabList) {\n      throw new ElementError({\n        component: Tabs,\n        identifier: 'List (`<ul class=\"govuk-tabs__list\">`)'\n      })\n    }\n\n    if (!$tabListItems.length) {\n      throw new ElementError({\n        component: Tabs,\n        identifier: 'List items (`<li class=\"govuk-tabs__list-item\">`)'\n      })\n    }\n\n    this.$tabList = $tabList\n    this.$tabListItems = $tabListItems\n\n    this.setupResponsiveChecks()\n  }\n\n  /**\n   * Setup viewport resize check\n   *\n   * @private\n   */\n  setupResponsiveChecks() {\n    const breakpoint = getBreakpoint('tablet')\n\n    if (!breakpoint.value) {\n      throw new ElementError({\n        component: Tabs,\n        identifier: `CSS custom property (\\`${breakpoint.property}\\`) on pseudo-class \\`:root\\``\n      })\n    }\n\n    // Media query list for GOV.UK Frontend tablet breakpoint\n    this.mql = window.matchMedia(`(min-width: ${breakpoint.value})`)\n\n    // MediaQueryList.addEventListener isn't supported by Safari < 14 so we need\n    // to be able to fall back to the deprecated MediaQueryList.addListener\n    if ('addEventListener' in this.mql) {\n      this.mql.addEventListener('change', () => this.checkMode())\n    } else {\n      // @ts-expect-error Property 'addListener' does not exist\n      // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n      this.mql.addListener(() => this.checkMode())\n    }\n\n    this.checkMode()\n  }\n\n  /**\n   * Setup or teardown handler for viewport resize check\n   *\n   * @private\n   */\n  checkMode() {\n    if (this.mql?.matches) {\n      this.setup()\n    } else {\n      this.teardown()\n    }\n  }\n\n  /**\n   * Setup tab component\n   *\n   * @private\n   */\n  setup() {\n    this.$tabList.setAttribute('role', 'tablist')\n\n    this.$tabListItems.forEach(($item) => {\n      $item.setAttribute('role', 'presentation')\n    })\n\n    this.$tabs.forEach(($tab) => {\n      // Set HTML attributes\n      this.setAttributes($tab)\n\n      // Handle events\n      $tab.addEventListener('click', this.boundTabClick, true)\n      $tab.addEventListener('keydown', this.boundTabKeydown, true)\n\n      // Remove old active panels\n      this.hideTab($tab)\n    })\n\n    // Show either the active tab according to the URL's hash or the first tab\n    const $activeTab = this.getTab(window.location.hash) ?? this.$tabs[0]\n\n    this.showTab($activeTab)\n\n    // Handle hashchange events\n    window.addEventListener('hashchange', this.boundOnHashChange, true)\n  }\n\n  /**\n   * Teardown tab component\n   *\n   * @private\n   */\n  teardown() {\n    this.$tabList.removeAttribute('role')\n\n    this.$tabListItems.forEach(($item) => {\n      $item.removeAttribute('role')\n    })\n\n    this.$tabs.forEach(($tab) => {\n      // Remove events\n      $tab.removeEventListener('click', this.boundTabClick, true)\n      $tab.removeEventListener('keydown', this.boundTabKeydown, true)\n\n      // Unset HTML attributes\n      this.unsetAttributes($tab)\n    })\n\n    // Remove hashchange event handler\n    window.removeEventListener('hashchange', this.boundOnHashChange, true)\n  }\n\n  /**\n   * Handle hashchange event\n   *\n   * @private\n   * @returns {void | undefined} Returns void, or undefined when prevented\n   */\n  onHashChange() {\n    const hash = window.location.hash\n    const $tabWithHash = this.getTab(hash)\n    if (!$tabWithHash) {\n      return\n    }\n\n    // Prevent changing the hash\n    if (this.changingHash) {\n      this.changingHash = false\n      return\n    }\n\n    // Show either the active tab according to the URL's hash or the first tab\n    const $previousTab = this.getCurrentTab()\n    if (!$previousTab) {\n      return\n    }\n\n    this.hideTab($previousTab)\n    this.showTab($tabWithHash)\n    $tabWithHash.focus()\n  }\n\n  /**\n   * Hide panel for tab link\n   *\n   * @private\n   * @param {HTMLAnchorElement} $tab - Tab link\n   */\n  hideTab($tab) {\n    this.unhighlightTab($tab)\n    this.hidePanel($tab)\n  }\n\n  /**\n   * Show panel for tab link\n   *\n   * @private\n   * @param {HTMLAnchorElement} $tab - Tab link\n   */\n  showTab($tab) {\n    this.highlightTab($tab)\n    this.showPanel($tab)\n  }\n\n  /**\n   * Get tab link by hash\n   *\n   * @private\n   * @param {string} hash - Hash fragment including #\n   * @returns {HTMLAnchorElement | null} Tab link\n   */\n  getTab(hash) {\n    return this.$root.querySelector(`a.govuk-tabs__tab[href=\"${hash}\"]`)\n  }\n\n  /**\n   * Set tab link and panel attributes\n   *\n   * @private\n   * @param {HTMLAnchorElement} $tab - Tab link\n   */\n  setAttributes($tab) {\n    const panelId = getFragmentFromUrl($tab.href)\n    if (!panelId) {\n      return\n    }\n\n    // Set tab attributes\n    $tab.setAttribute('id', `tab_${panelId}`)\n    $tab.setAttribute('role', 'tab')\n    $tab.setAttribute('aria-controls', panelId)\n    $tab.setAttribute('aria-selected', 'false')\n    $tab.setAttribute('tabindex', '-1')\n\n    // Set panel attributes\n    const $panel = this.getPanel($tab)\n    if (!$panel) {\n      return\n    }\n\n    $panel.setAttribute('role', 'tabpanel')\n    $panel.setAttribute('aria-labelledby', $tab.id)\n    $panel.classList.add(this.jsHiddenClass)\n  }\n\n  /**\n   * Unset tab link and panel attributes\n   *\n   * @private\n   * @param {HTMLAnchorElement} $tab - Tab link\n   */\n  unsetAttributes($tab) {\n    // unset tab attributes\n    $tab.removeAttribute('id')\n    $tab.removeAttribute('role')\n    $tab.removeAttribute('aria-controls')\n    $tab.removeAttribute('aria-selected')\n    $tab.removeAttribute('tabindex')\n\n    // unset panel attributes\n    const $panel = this.getPanel($tab)\n    if (!$panel) {\n      return\n    }\n\n    $panel.removeAttribute('role')\n    $panel.removeAttribute('aria-labelledby')\n    $panel.classList.remove(this.jsHiddenClass)\n  }\n\n  /**\n   * Handle tab link clicks\n   *\n   * @private\n   * @param {MouseEvent} event - Mouse click event\n   * @returns {void} Returns void\n   */\n  onTabClick(event) {\n    const $currentTab = this.getCurrentTab()\n    const $nextTab = event.currentTarget\n\n    if (!$currentTab || !($nextTab instanceof HTMLAnchorElement)) {\n      return\n    }\n\n    event.preventDefault()\n\n    this.hideTab($currentTab)\n    this.showTab($nextTab)\n    this.createHistoryEntry($nextTab)\n  }\n\n  /**\n   * Update browser URL hash fragment for tab\n   *\n   * - Allows back/forward to navigate tabs\n   * - Avoids page jump when hash changes\n   *\n   * @private\n   * @param {HTMLAnchorElement} $tab - Tab link\n   */\n  createHistoryEntry($tab) {\n    const $panel = this.getPanel($tab)\n    if (!$panel) {\n      return\n    }\n\n    // Save and restore the id so the page doesn't jump when a user clicks a tab\n    // (which changes the hash)\n    const panelId = $panel.id\n    $panel.id = ''\n    this.changingHash = true\n    window.location.hash = panelId\n    $panel.id = panelId\n  }\n\n  /**\n   * Handle tab keydown event\n   *\n   * - Press right arrow for next tab\n   * - Press left arrow for previous tab\n   *\n   * @private\n   * @param {KeyboardEvent} event - Keydown event\n   */\n  onTabKeydown(event) {\n    switch (event.key) {\n      // 'Left' and 'Right' required for Edge 16 support.\n      case 'ArrowLeft':\n      case 'Left':\n        this.activatePreviousTab()\n        event.preventDefault()\n        break\n      case 'ArrowRight':\n      case 'Right':\n        this.activateNextTab()\n        event.preventDefault()\n        break\n    }\n  }\n\n  /**\n   * Activate next tab\n   *\n   * @private\n   */\n  activateNextTab() {\n    const $currentTab = this.getCurrentTab()\n    if (!$currentTab?.parentElement) {\n      return\n    }\n\n    const $nextTabListItem = $currentTab.parentElement.nextElementSibling\n    if (!$nextTabListItem) {\n      return\n    }\n\n    const $nextTab = $nextTabListItem.querySelector('a.govuk-tabs__tab')\n    if (!$nextTab) {\n      return\n    }\n\n    this.hideTab($currentTab)\n    this.showTab($nextTab)\n    $nextTab.focus()\n    this.createHistoryEntry($nextTab)\n  }\n\n  /**\n   * Activate previous tab\n   *\n   * @private\n   */\n  activatePreviousTab() {\n    const $currentTab = this.getCurrentTab()\n    if (!$currentTab?.parentElement) {\n      return\n    }\n\n    const $previousTabListItem =\n      $currentTab.parentElement.previousElementSibling\n    if (!$previousTabListItem) {\n      return\n    }\n\n    const $previousTab = $previousTabListItem.querySelector('a.govuk-tabs__tab')\n    if (!$previousTab) {\n      return\n    }\n\n    this.hideTab($currentTab)\n    this.showTab($previousTab)\n    $previousTab.focus()\n    this.createHistoryEntry($previousTab)\n  }\n\n  /**\n   * Get tab panel for tab link\n   *\n   * @private\n   * @param {HTMLAnchorElement} $tab - Tab link\n   * @returns {Element | null} Tab panel\n   */\n  getPanel($tab) {\n    const panelId = getFragmentFromUrl($tab.href)\n    if (!panelId) {\n      return null\n    }\n\n    return this.$root.querySelector(`#${panelId}`)\n  }\n\n  /**\n   * Show tab panel for tab link\n   *\n   * @private\n   * @param {HTMLAnchorElement} $tab - Tab link\n   */\n  showPanel($tab) {\n    const $panel = this.getPanel($tab)\n    if (!$panel) {\n      return\n    }\n\n    $panel.classList.remove(this.jsHiddenClass)\n  }\n\n  /**\n   * Hide tab panel for tab link\n   *\n   * @private\n   * @param {HTMLAnchorElement} $tab - Tab link\n   */\n  hidePanel($tab) {\n    const $panel = this.getPanel($tab)\n    if (!$panel) {\n      return\n    }\n\n    $panel.classList.add(this.jsHiddenClass)\n  }\n\n  /**\n   * Unset 'selected' state for tab link\n   *\n   * @private\n   * @param {HTMLAnchorElement} $tab - Tab link\n   */\n  unhighlightTab($tab) {\n    if (!$tab.parentElement) {\n      return\n    }\n\n    $tab.setAttribute('aria-selected', 'false')\n    $tab.parentElement.classList.remove('govuk-tabs__list-item--selected')\n    $tab.setAttribute('tabindex', '-1')\n  }\n\n  /**\n   * Set 'selected' state for tab link\n   *\n   * @private\n   * @param {HTMLAnchorElement} $tab - Tab link\n   */\n  highlightTab($tab) {\n    if (!$tab.parentElement) {\n      return\n    }\n\n    $tab.setAttribute('aria-selected', 'true')\n    $tab.parentElement.classList.add('govuk-tabs__list-item--selected')\n    $tab.setAttribute('tabindex', '0')\n  }\n\n  /**\n   * Get current tab link\n   *\n   * @private\n   * @returns {HTMLAnchorElement | null} Tab link\n   */\n  getCurrentTab() {\n    return this.$root.querySelector(\n      '.govuk-tabs__list-item--selected a.govuk-tabs__tab'\n    )\n  }\n\n  /**\n   * Name for the component used when initialising using data-module attributes.\n   */\n  static moduleName = 'govuk-tabs'\n}\n", "import { isSupported } from './common/index.mjs'\nimport { Accordion } from './components/accordion/accordion.mjs'\nimport { Button } from './components/button/button.mjs'\nimport { CharacterCount } from './components/character-count/character-count.mjs'\nimport { Checkboxes } from './components/checkboxes/checkboxes.mjs'\nimport { ErrorSummary } from './components/error-summary/error-summary.mjs'\nimport { ExitThisPage } from './components/exit-this-page/exit-this-page.mjs'\nimport { FileUpload } from './components/file-upload/file-upload.mjs'\nimport { Header } from './components/header/header.mjs'\nimport { NotificationBanner } from './components/notification-banner/notification-banner.mjs'\nimport { PasswordInput } from './components/password-input/password-input.mjs'\nimport { Radios } from './components/radios/radios.mjs'\nimport { ServiceNavigation } from './components/service-navigation/service-navigation.mjs'\nimport { SkipLink } from './components/skip-link/skip-link.mjs'\nimport { Tabs } from './components/tabs/tabs.mjs'\nimport { SupportError } from './errors/index.mjs'\n\n/**\n * Initialise all components\n *\n * Use the `data-module` attributes to find, instantiate and init all of the\n * components provided as part of GOV.UK Frontend.\n *\n * @param {Config & { scope?: Element, onError?: OnErrorCallback<CompatibleClass> }} [config] - Config for all components (with optional scope)\n */\nfunction initAll(config) {\n  config = typeof config !== 'undefined' ? config : {}\n\n  // Skip initialisation when GOV.UK Frontend is not supported\n  if (!isSupported()) {\n    if (config.onError) {\n      config.onError(new SupportError(), {\n        config\n      })\n    } else {\n      console.log(new SupportError())\n    }\n    return\n  }\n\n  const components = /** @type {const} */ ([\n    [Accordion, config.accordion],\n    [Button, config.button],\n    [CharacterCount, config.characterCount],\n    [Checkboxes],\n    [ErrorSummary, config.errorSummary],\n    [ExitThisPage, config.exitThisPage],\n    [FileUpload, config.fileUpload],\n    [Header],\n    [NotificationBanner, config.notificationBanner],\n    [PasswordInput, config.passwordInput],\n    [Radios],\n    [ServiceNavigation],\n    [SkipLink],\n    [Tabs]\n  ])\n\n  // Allow the user to initialise GOV.UK Frontend in only certain sections of the page\n  // Defaults to the entire document if nothing is set.\n  // const $scope = config.scope ?? document\n\n  const options = {\n    scope: config.scope ?? document,\n    onError: config.onError\n  }\n\n  components.forEach(([Component, config]) => {\n    createAll(Component, config, options)\n  })\n}\n\n/**\n * Create all instances of a specific component on the page\n *\n * Uses the `data-module` attribute to find all elements matching the specified\n * component on the page, creating instances of the component object for each\n * of them.\n *\n * Any component errors will be caught and logged to the console.\n *\n * @template {CompatibleClass} ComponentClass\n * @param {ComponentClass} Component - class of the component to create\n * @param {ComponentConfig<ComponentClass>} [config] - Config supplied to component\n * @param {OnErrorCallback<ComponentClass> | Element | Document | CreateAllOptions<ComponentClass> } [createAllOptions] - options for createAll including scope of the document to search within and callback function if error throw by component on init\n * @returns {Array<InstanceType<ComponentClass>>} - array of instantiated components\n */\nfunction createAll(Component, config, createAllOptions) {\n  let /** @type {Element | Document} */ $scope = document\n  let /** @type {OnErrorCallback<Component> | undefined} */ onError\n\n  if (typeof createAllOptions === 'object') {\n    createAllOptions = /** @type {CreateAllOptions<Component>} */ (\n      // eslint-disable-next-line no-self-assign\n      createAllOptions\n    )\n\n    $scope = createAllOptions.scope ?? $scope\n    onError = createAllOptions.onError\n  }\n\n  if (typeof createAllOptions === 'function') {\n    onError = createAllOptions\n  }\n\n  if (createAllOptions instanceof HTMLElement) {\n    $scope = createAllOptions\n  }\n\n  const $elements = $scope.querySelectorAll(\n    `[data-module=\"${Component.moduleName}\"]`\n  )\n\n  // Skip initialisation when GOV.UK Frontend is not supported\n  if (!isSupported()) {\n    if (onError) {\n      onError(new SupportError(), {\n        component: Component,\n        config\n      })\n    } else {\n      console.log(new SupportError())\n    }\n    return []\n  }\n\n  /* eslint-disable-next-line @typescript-eslint/no-unsafe-return --\n   * We can't define CompatibleClass as `{new(): CompatibleClass, moduleName: string}`,\n   * as when doing `typeof Accordion` (or any component), TypeScript doesn't seem\n   * to acknowledge the static `moduleName` that's set in our component classes.\n   * This means we have to set the constructor of `CompatibleClass` as `{new(): any}`,\n   * leading to ESLint frowning that we're returning `any[]`.\n   */\n  return Array.from($elements)\n    .map(($element) => {\n      try {\n        // Only pass config to components that accept it\n        // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n        return typeof config !== 'undefined'\n          ? new Component($element, config)\n          : new Component($element)\n      } catch (error) {\n        if (onError) {\n          onError(error, {\n            element: $element,\n            component: Component,\n            config\n          })\n        } else {\n          console.log(error)\n        }\n\n        return null\n      }\n    })\n    .filter(Boolean) // Exclude components that errored\n}\n\nexport { initAll, createAll }\n\n/* eslint-disable jsdoc/valid-types --\n * `{new(...args: any[] ): object}` is not recognised as valid\n * https://github.com/gajus/eslint-plugin-jsdoc/issues/145#issuecomment-1308722878\n * https://github.com/jsdoc-type-pratt-parser/jsdoc-type-pratt-parser/issues/131\n **/\n\n/**\n * @typedef {{new (...args: any[]): any, moduleName: string}} CompatibleClass\n */\n\n/* eslint-enable jsdoc/valid-types */\n\n/**\n * Config for all components via `initAll()`\n *\n * @typedef {object} Config\n * @property {AccordionConfig} [accordion] - Accordion config\n * @property {ButtonConfig} [button] - Button config\n * @property {CharacterCountConfig} [characterCount] - Character Count config\n * @property {ErrorSummaryConfig} [errorSummary] - Error Summary config\n * @property {ExitThisPageConfig} [exitThisPage] - Exit This Page config\n * @property {FileUploadConfig} [fileUpload] - File Upload config\n * @property {NotificationBannerConfig} [notificationBanner] - Notification Banner config\n * @property {PasswordInputConfig} [passwordInput] - Password input config\n */\n\n/**\n * Config for individual components\n *\n * @import { AccordionConfig } from './components/accordion/accordion.mjs'\n * @import { ButtonConfig } from './components/button/button.mjs'\n * @import { CharacterCountConfig } from './components/character-count/character-count.mjs'\n * @import { ErrorSummaryConfig } from './components/error-summary/error-summary.mjs'\n * @import { ExitThisPageConfig } from './components/exit-this-page/exit-this-page.mjs'\n * @import { NotificationBannerConfig } from './components/notification-banner/notification-banner.mjs'\n * @import { PasswordInputConfig } from './components/password-input/password-input.mjs'\n * @import { FileUploadConfig } from './components/file-upload/file-upload.mjs'\n */\n\n/**\n * Component config keys, e.g. `accordion` and `characterCount`\n *\n * @typedef {keyof Config} ConfigKey\n */\n\n/**\n * @template {CompatibleClass} ComponentClass\n * @typedef {ConstructorParameters<ComponentClass>[1]} ComponentConfig\n */\n\n/**\n * @template {CompatibleClass} ComponentClass\n * @typedef {object} ErrorContext\n * @property {Element} [element] - Element used for component module initialisation\n * @property {ComponentClass} [component] - Class of component\n * @property {ComponentConfig<ComponentClass>} config - Config supplied to component\n */\n\n/**\n * @template {CompatibleClass} ComponentClass\n * @callback OnErrorCallback\n * @param {unknown} error - Thrown error\n * @param {ErrorContext<ComponentClass>} context - Object containing the element, component class and configuration\n */\n\n/**\n * @template {CompatibleClass} ComponentClass\n * @typedef {object} CreateAllOptions\n * @property {Element | Document} [scope] - scope of the document to search within\n * @property {OnErrorCallback<ComponentClass>} [onError] - callback function if error throw by component on init\n */\n", "/*\nStimulus 3.2.1\nCopyright \u00A9 2023 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    hasBindings() {\n        return this.unorderedBindings.size > 0;\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            },\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map();\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach((eventListener) => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach((eventListener) => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values()).reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding, clearEventListeners = false) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n        if (clearEventListeners)\n            this.clearEventListenersForBinding(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    clearEventListenersForBinding(binding) {\n        const eventListener = this.fetchEventListenerForBinding(binding);\n        if (!eventListener.hasBindings()) {\n            eventListener.disconnect();\n            this.removeMappedEventListenerFor(binding);\n        }\n    }\n    removeMappedEventListenerFor(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        eventListenerMap.delete(cacheKey);\n        if (eventListenerMap.size == 0)\n            this.eventListenerMaps.delete(eventTarget);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map();\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions)\n            .sort()\n            .forEach((key) => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst defaultActionDescriptorFilters = {\n    stop({ event, value }) {\n        if (value)\n            event.stopPropagation();\n        return true;\n    },\n    prevent({ event, value }) {\n        if (value)\n            event.preventDefault();\n        return true;\n    },\n    self({ event, value, element }) {\n        if (value) {\n            return element === event.target;\n        }\n        else {\n            return true;\n        }\n    },\n};\nconst descriptorPattern = /^(?:(?:([^.]+?)\\+)?(.+?)(?:\\.(.+?))?(?:@(window|document))?->)?(.+?)(?:#([^:]+?))(?::(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const matches = source.match(descriptorPattern) || [];\n    let eventName = matches[2];\n    let keyFilter = matches[3];\n    if (keyFilter && ![\"keydown\", \"keyup\", \"keypress\"].includes(eventName)) {\n        eventName += `.${keyFilter}`;\n        keyFilter = \"\";\n    }\n    return {\n        eventTarget: parseEventTarget(matches[4]),\n        eventName,\n        eventOptions: matches[7] ? parseEventOptions(matches[7]) : {},\n        identifier: matches[5],\n        methodName: matches[6],\n        keyFilter: matches[1] || keyFilter,\n    };\n}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions\n        .split(\":\")\n        .reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction namespaceCamelize(value) {\n    return camelize(value.replace(/--/g, \"-\").replace(/__/g, \"_\"));\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nfunction isSomething(object) {\n    return object !== null && object !== undefined;\n}\nfunction hasProperty(object, property) {\n    return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nconst allModifiers = [\"meta\", \"ctrl\", \"alt\", \"shift\"];\nclass Action {\n    constructor(element, index, descriptor, schema) {\n        this.element = element;\n        this.index = index;\n        this.eventTarget = descriptor.eventTarget || element;\n        this.eventName = descriptor.eventName || getDefaultEventNameForElement(element) || error(\"missing event name\");\n        this.eventOptions = descriptor.eventOptions || {};\n        this.identifier = descriptor.identifier || error(\"missing identifier\");\n        this.methodName = descriptor.methodName || error(\"missing method name\");\n        this.keyFilter = descriptor.keyFilter || \"\";\n        this.schema = schema;\n    }\n    static forToken(token, schema) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content), schema);\n    }\n    toString() {\n        const eventFilter = this.keyFilter ? `.${this.keyFilter}` : \"\";\n        const eventTarget = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventFilter}${eventTarget}->${this.identifier}#${this.methodName}`;\n    }\n    shouldIgnoreKeyboardEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = this.keyFilter.split(\"+\");\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        const standardFilter = filters.filter((key) => !allModifiers.includes(key))[0];\n        if (!standardFilter) {\n            return false;\n        }\n        if (!hasProperty(this.keyMappings, standardFilter)) {\n            error(`contains unknown key filter: ${this.keyFilter}`);\n        }\n        return this.keyMappings[standardFilter].toLowerCase() !== event.key.toLowerCase();\n    }\n    shouldIgnoreMouseEvent(event) {\n        if (!this.keyFilter) {\n            return false;\n        }\n        const filters = [this.keyFilter];\n        if (this.keyFilterDissatisfied(event, filters)) {\n            return true;\n        }\n        return false;\n    }\n    get params() {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`, \"i\");\n        for (const { name, value } of Array.from(this.element.attributes)) {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                params[camelize(key)] = typecast(value);\n            }\n        }\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n    get keyMappings() {\n        return this.schema.keyMappings;\n    }\n    keyFilterDissatisfied(event, filters) {\n        const [meta, ctrl, alt, shift] = allModifiers.map((modifier) => filters.includes(modifier));\n        return event.metaKey !== meta || event.ctrlKey !== ctrl || event.altKey !== alt || event.shiftKey !== shift;\n    }\n}\nconst defaultEventNames = {\n    a: () => \"click\",\n    button: () => \"click\",\n    form: () => \"submit\",\n    details: () => \"toggle\",\n    input: (e) => (e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\"),\n    select: () => \"change\",\n    textarea: () => \"input\",\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        const actionEvent = this.prepareActionEvent(event);\n        if (this.willBeInvokedByEvent(event) && this.applyEventModifiers(actionEvent)) {\n            this.invokeWithEvent(actionEvent);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    applyEventModifiers(event) {\n        const { element } = this.action;\n        const { actionDescriptorFilters } = this.context.application;\n        const { controller } = this.context;\n        let passes = true;\n        for (const [name, value] of Object.entries(this.eventOptions)) {\n            if (name in actionDescriptorFilters) {\n                const filter = actionDescriptorFilters[name];\n                passes = passes && filter({ name, value, event, element, controller });\n            }\n            else {\n                continue;\n            }\n        }\n        return passes;\n    }\n    prepareActionEvent(event) {\n        return Object.assign(event, { params: this.action.params });\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            this.method.call(this.controller, event);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (event instanceof KeyboardEvent && this.action.shouldIgnoreKeyboardEvent(event)) {\n            return false;\n        }\n        if (event instanceof MouseEvent && this.action.shouldIgnoreMouseEvent(event)) {\n            return false;\n        }\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.refresh();\n        }\n    }\n    pause(callback) {\n        if (this.started) {\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n        callback();\n        if (!this.started) {\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(element, attributeName) {\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some((set) => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([_key, values]) => values.has(value))\n            .map(([key, _values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map();\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass SelectorObserver {\n    constructor(element, selector, delegate, details) {\n        this._selector = selector;\n        this.details = details;\n        this.elementObserver = new ElementObserver(element, this);\n        this.delegate = delegate;\n        this.matchesByElement = new Multimap();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    get selector() {\n        return this._selector;\n    }\n    set selector(selector) {\n        this._selector = selector;\n        this.refresh();\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    matchElement(element) {\n        const { selector } = this;\n        if (selector) {\n            const matches = element.matches(selector);\n            if (this.delegate.selectorMatchElement) {\n                return matches && this.delegate.selectorMatchElement(element, this.details);\n            }\n            return matches;\n        }\n        else {\n            return false;\n        }\n    }\n    matchElementsInTree(tree) {\n        const { selector } = this;\n        if (selector) {\n            const match = this.matchElement(tree) ? [tree] : [];\n            const matches = Array.from(tree.querySelectorAll(selector)).filter((match) => this.matchElement(match));\n            return match.concat(matches);\n        }\n        else {\n            return [];\n        }\n    }\n    elementMatched(element) {\n        const { selector } = this;\n        if (selector) {\n            this.selectorMatched(element, selector);\n        }\n    }\n    elementUnmatched(element) {\n        const selectors = this.matchesByElement.getKeysForValue(element);\n        for (const selector of selectors) {\n            this.selectorUnmatched(element, selector);\n        }\n    }\n    elementAttributeChanged(element, _attributeName) {\n        const { selector } = this;\n        if (selector) {\n            const matches = this.matchElement(element);\n            const matchedBefore = this.matchesByElement.has(selector, element);\n            if (matches && !matchedBefore) {\n                this.selectorMatched(element, selector);\n            }\n            else if (!matches && matchedBefore) {\n                this.selectorUnmatched(element, selector);\n            }\n        }\n    }\n    selectorMatched(element, selector) {\n        this.delegate.selectorMatched(element, selector, this.details);\n        this.matchesByElement.add(selector, element);\n    }\n    selectorUnmatched(element, selector) {\n        this.delegate.selectorUnmatched(element, selector, this.details);\n        this.matchesByElement.delete(selector, element);\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map();\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map((attribute) => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap();\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    pause(callback) {\n        this.attributeObserver.pause(callback);\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach((token) => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach((token) => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString\n        .trim()\n        .split(/\\s+/)\n        .filter((content) => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap();\n        this.valuesByTokenByElement = new WeakMap();\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map();\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map();\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach((binding) => this.delegate.bindingDisconnected(binding, true));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token, this.schema);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n    }\n    start() {\n        this.stringMapObserver.start();\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            try {\n                const value = descriptor.reader(rawValue);\n                let oldValue = rawOldValue;\n                if (rawOldValue) {\n                    oldValue = descriptor.reader(rawOldValue);\n                }\n                changedMethod.call(this.receiver, value, oldValue);\n            }\n            catch (error) {\n                if (error instanceof TypeError) {\n                    error.message = `Stimulus Value \"${this.context.identifier}.${descriptor.name}\" - ${error.message}`;\n                }\n                throw error;\n            }\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map((key) => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach((key) => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap();\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        var _a;\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n        }\n    }\n    disconnectTarget(element, name) {\n        var _a;\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach((name) => values.add(name));\n        return values;\n    }, new Set()));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map((key) => [key, definition[key]]) : [];\n}\n\nclass OutletObserver {\n    constructor(context, delegate) {\n        this.started = false;\n        this.context = context;\n        this.delegate = delegate;\n        this.outletsByName = new Multimap();\n        this.outletElementsByName = new Multimap();\n        this.selectorObserverMap = new Map();\n        this.attributeObserverMap = new Map();\n    }\n    start() {\n        if (!this.started) {\n            this.outletDefinitions.forEach((outletName) => {\n                this.setupSelectorObserverForOutlet(outletName);\n                this.setupAttributeObserverForOutlet(outletName);\n            });\n            this.started = true;\n            this.dependentContexts.forEach((context) => context.refresh());\n        }\n    }\n    refresh() {\n        this.selectorObserverMap.forEach((observer) => observer.refresh());\n        this.attributeObserverMap.forEach((observer) => observer.refresh());\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.disconnectAllOutlets();\n            this.stopSelectorObservers();\n            this.stopAttributeObservers();\n        }\n    }\n    stopSelectorObservers() {\n        if (this.selectorObserverMap.size > 0) {\n            this.selectorObserverMap.forEach((observer) => observer.stop());\n            this.selectorObserverMap.clear();\n        }\n    }\n    stopAttributeObservers() {\n        if (this.attributeObserverMap.size > 0) {\n            this.attributeObserverMap.forEach((observer) => observer.stop());\n            this.attributeObserverMap.clear();\n        }\n    }\n    selectorMatched(element, _selector, { outletName }) {\n        const outlet = this.getOutlet(element, outletName);\n        if (outlet) {\n            this.connectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorUnmatched(element, _selector, { outletName }) {\n        const outlet = this.getOutletFromMap(element, outletName);\n        if (outlet) {\n            this.disconnectOutlet(outlet, element, outletName);\n        }\n    }\n    selectorMatchElement(element, { outletName }) {\n        const selector = this.selector(outletName);\n        const hasOutlet = this.hasOutlet(element, outletName);\n        const hasOutletController = element.matches(`[${this.schema.controllerAttribute}~=${outletName}]`);\n        if (selector) {\n            return hasOutlet && hasOutletController && element.matches(selector);\n        }\n        else {\n            return false;\n        }\n    }\n    elementMatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementAttributeValueChanged(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    elementUnmatchedAttribute(_element, attributeName) {\n        const outletName = this.getOutletNameFromOutletAttributeName(attributeName);\n        if (outletName) {\n            this.updateSelectorObserverForOutlet(outletName);\n        }\n    }\n    connectOutlet(outlet, element, outletName) {\n        var _a;\n        if (!this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.add(outletName, outlet);\n            this.outletElementsByName.add(outletName, element);\n            (_a = this.selectorObserverMap.get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletConnected(outlet, element, outletName));\n        }\n    }\n    disconnectOutlet(outlet, element, outletName) {\n        var _a;\n        if (this.outletElementsByName.has(outletName, element)) {\n            this.outletsByName.delete(outletName, outlet);\n            this.outletElementsByName.delete(outletName, element);\n            (_a = this.selectorObserverMap\n                .get(outletName)) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.outletDisconnected(outlet, element, outletName));\n        }\n    }\n    disconnectAllOutlets() {\n        for (const outletName of this.outletElementsByName.keys) {\n            for (const element of this.outletElementsByName.getValuesForKey(outletName)) {\n                for (const outlet of this.outletsByName.getValuesForKey(outletName)) {\n                    this.disconnectOutlet(outlet, element, outletName);\n                }\n            }\n        }\n    }\n    updateSelectorObserverForOutlet(outletName) {\n        const observer = this.selectorObserverMap.get(outletName);\n        if (observer) {\n            observer.selector = this.selector(outletName);\n        }\n    }\n    setupSelectorObserverForOutlet(outletName) {\n        const selector = this.selector(outletName);\n        const selectorObserver = new SelectorObserver(document.body, selector, this, { outletName });\n        this.selectorObserverMap.set(outletName, selectorObserver);\n        selectorObserver.start();\n    }\n    setupAttributeObserverForOutlet(outletName) {\n        const attributeName = this.attributeNameForOutletName(outletName);\n        const attributeObserver = new AttributeObserver(this.scope.element, attributeName, this);\n        this.attributeObserverMap.set(outletName, attributeObserver);\n        attributeObserver.start();\n    }\n    selector(outletName) {\n        return this.scope.outlets.getSelectorForOutletName(outletName);\n    }\n    attributeNameForOutletName(outletName) {\n        return this.scope.schema.outletAttributeForScope(this.identifier, outletName);\n    }\n    getOutletNameFromOutletAttributeName(attributeName) {\n        return this.outletDefinitions.find((outletName) => this.attributeNameForOutletName(outletName) === attributeName);\n    }\n    get outletDependencies() {\n        const dependencies = new Multimap();\n        this.router.modules.forEach((module) => {\n            const constructor = module.definition.controllerConstructor;\n            const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n            outlets.forEach((outlet) => dependencies.add(outlet, module.identifier));\n        });\n        return dependencies;\n    }\n    get outletDefinitions() {\n        return this.outletDependencies.getKeysForValue(this.identifier);\n    }\n    get dependentControllerIdentifiers() {\n        return this.outletDependencies.getValuesForKey(this.identifier);\n    }\n    get dependentContexts() {\n        const identifiers = this.dependentControllerIdentifiers;\n        return this.router.contexts.filter((context) => identifiers.includes(context.identifier));\n    }\n    hasOutlet(element, outletName) {\n        return !!this.getOutlet(element, outletName) || !!this.getOutletFromMap(element, outletName);\n    }\n    getOutlet(element, outletName) {\n        return this.application.getControllerForElementAndIdentifier(element, outletName);\n    }\n    getOutletFromMap(element, outletName) {\n        return this.outletsByName.getValuesForKey(outletName).find((outlet) => outlet.element === element);\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get router() {\n        return this.application.router;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        this.outletObserver = new OutletObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        this.outletObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    refresh() {\n        this.outletObserver.refresh();\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.outletObserver.stop();\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    outletConnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletConnected`, outlet, element);\n    }\n    outletDisconnected(outlet, element, name) {\n        this.invokeControllerMethod(`${namespaceCamelize(name)}OutletDisconnected`, outlet, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [...Object.getOwnPropertyNames(object), ...Object.getOwnPropertySymbols(object)];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended },\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () {\n            this.a.call(this);\n        };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b();\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor),\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap();\n        this.connectedContexts = new Set();\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap();\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set();\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target || this.findTarget(targetName) || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName),\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map((element) => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass OutletSet {\n    constructor(scope, controllerElement) {\n        this.scope = scope;\n        this.controllerElement = controllerElement;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(outletName) {\n        return this.find(outletName) != null;\n    }\n    find(...outletNames) {\n        return outletNames.reduce((outlet, outletName) => outlet || this.findOutlet(outletName), undefined);\n    }\n    findAll(...outletNames) {\n        return outletNames.reduce((outlets, outletName) => [...outlets, ...this.findAllOutlets(outletName)], []);\n    }\n    getSelectorForOutletName(outletName) {\n        const attributeName = this.schema.outletAttributeForScope(this.identifier, outletName);\n        return this.controllerElement.getAttribute(attributeName);\n    }\n    findOutlet(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        if (selector)\n            return this.findElement(selector, outletName);\n    }\n    findAllOutlets(outletName) {\n        const selector = this.getSelectorForOutletName(outletName);\n        return selector ? this.findAllElements(selector, outletName) : [];\n    }\n    findElement(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName))[0];\n    }\n    findAllElements(selector, outletName) {\n        const elements = this.scope.queryElements(selector);\n        return elements.filter((element) => this.matchesElement(element, selector, outletName));\n    }\n    matchesElement(element, selector, outletName) {\n        const controllerAttribute = element.getAttribute(this.scope.schema.controllerAttribute) || \"\";\n        return element.matches(selector) && controllerAttribute.split(\" \").includes(outletName);\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n        this.outlets = new OutletSet(this.documentScope, element);\n    }\n    findElement(selector) {\n        return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...(this.element.matches(selector) ? [this.element] : []),\n            ...this.queryElements(selector).filter(this.containsElement),\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n    get isDocumentScope() {\n        return this.element === document.documentElement;\n    }\n    get documentScope() {\n        return this.isDocumentScope\n            ? this\n            : new Scope(this.schema, document.documentElement, this.identifier, this.guide.logger);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap();\n        this.scopeReferenceCounts = new WeakMap();\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        return this.parseValueForElementAndIdentifier(element, identifier);\n    }\n    parseValueForElementAndIdentifier(element, identifier) {\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map();\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap();\n        this.modulesByIdentifier = new Map();\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n        const afterLoad = definition.controllerConstructor.afterLoad;\n        if (afterLoad) {\n            afterLoad.call(definition.controllerConstructor, definition.identifier, this.application);\n        }\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find((context) => context.element == element);\n        }\n    }\n    proposeToConnectScopeForElementAndIdentifier(element, identifier) {\n        const scope = this.scopeObserver.parseValueForElementAndIdentifier(element, identifier);\n        if (scope) {\n            this.scopeObserver.elementMatchedValue(scope.element, scope);\n        }\n        else {\n            console.error(`Couldn't find or create scope for identifier: \"${identifier}\" and element:`, element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach((scope) => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: (identifier) => `data-${identifier}-target`,\n    outletAttributeForScope: (identifier, outlet) => `data-${identifier}-${outlet}-outlet`,\n    keyMappings: Object.assign(Object.assign({ enter: \"Enter\", tab: \"Tab\", esc: \"Escape\", space: \" \", up: \"ArrowUp\", down: \"ArrowDown\", left: \"ArrowLeft\", right: \"ArrowRight\", home: \"Home\", end: \"End\", page_up: \"PageUp\", page_down: \"PageDown\" }, objectFromEntries(\"abcdefghijklmnopqrstuvwxyz\".split(\"\").map((c) => [c, c]))), objectFromEntries(\"0123456789\".split(\"\").map((n) => [n, n]))),\n};\nfunction objectFromEntries(array) {\n    return array.reduce((memo, [k, v]) => (Object.assign(Object.assign({}, memo), { [k]: v })), {});\n}\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n        this.actionDescriptorFilters = Object.assign({}, defaultActionDescriptorFilters);\n    }\n    static start(element, schema) {\n        const application = new this(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        this.load({ identifier, controllerConstructor });\n    }\n    registerActionOption(name, filter) {\n        this.actionDescriptorFilters[name] = filter;\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach((definition) => {\n            if (definition.controllerConstructor.shouldLoad) {\n                this.router.loadDefinition(definition);\n            }\n        });\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach((identifier) => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map((context) => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise((resolve) => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            },\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            },\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            },\n        },\n    };\n}\n\nfunction OutletPropertiesBlessing(constructor) {\n    const outlets = readInheritableStaticArrayValues(constructor, \"outlets\");\n    return outlets.reduce((properties, outletDefinition) => {\n        return Object.assign(properties, propertiesForOutletDefinition(outletDefinition));\n    }, {});\n}\nfunction getOutletController(controller, element, identifier) {\n    return controller.application.getControllerForElementAndIdentifier(element, identifier);\n}\nfunction getControllerAndEnsureConnectedScope(controller, element, outletName) {\n    let outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n    controller.application.router.proposeToConnectScopeForElementAndIdentifier(element, outletName);\n    outletController = getOutletController(controller, element, outletName);\n    if (outletController)\n        return outletController;\n}\nfunction propertiesForOutletDefinition(name) {\n    const camelizedName = namespaceCamelize(name);\n    return {\n        [`${camelizedName}Outlet`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                    if (outletController)\n                        return outletController;\n                    throw new Error(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`);\n                }\n                throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n            },\n        },\n        [`${camelizedName}Outlets`]: {\n            get() {\n                const outlets = this.outlets.findAll(name);\n                if (outlets.length > 0) {\n                    return outlets\n                        .map((outletElement) => {\n                        const outletController = getControllerAndEnsureConnectedScope(this, outletElement, name);\n                        if (outletController)\n                            return outletController;\n                        console.warn(`The provided outlet element is missing an outlet controller \"${name}\" instance for host controller \"${this.identifier}\"`, outletElement);\n                    })\n                        .filter((controller) => controller);\n                }\n                return [];\n            },\n        },\n        [`${camelizedName}OutletElement`]: {\n            get() {\n                const outletElement = this.outlets.find(name);\n                const selector = this.outlets.getSelectorForOutletName(name);\n                if (outletElement) {\n                    return outletElement;\n                }\n                else {\n                    throw new Error(`Missing outlet element \"${name}\" for host controller \"${this.identifier}\". Stimulus couldn't find a matching outlet element using selector \"${selector}\".`);\n                }\n            },\n        },\n        [`${camelizedName}OutletElements`]: {\n            get() {\n                return this.outlets.findAll(name);\n            },\n        },\n        [`has${capitalize(camelizedName)}Outlet`]: {\n            get() {\n                return this.outlets.has(name);\n            },\n        },\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            },\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            },\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            },\n        },\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair, this.identifier);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            },\n        },\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair, controller) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair, controller);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            },\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            },\n        },\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition], controller) {\n    return valueDescriptorForTokenAndTypeDefinition({\n        controller,\n        token,\n        typeDefinition,\n    });\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array:\n            return \"array\";\n        case Boolean:\n            return \"boolean\";\n        case Number:\n            return \"number\";\n        case Object:\n            return \"object\";\n        case String:\n            return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\":\n            return \"boolean\";\n        case \"number\":\n            return \"number\";\n        case \"string\":\n            return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(payload) {\n    const { controller, token, typeObject } = payload;\n    const hasType = isSomething(typeObject.type);\n    const hasDefault = isSomething(typeObject.default);\n    const fullObject = hasType && hasDefault;\n    const onlyType = hasType && !hasDefault;\n    const onlyDefault = !hasType && hasDefault;\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    const typeFromDefaultValue = parseValueTypeDefault(payload.typeObject.default);\n    if (onlyType)\n        return typeFromObject;\n    if (onlyDefault)\n        return typeFromDefaultValue;\n    if (typeFromObject !== typeFromDefaultValue) {\n        const propertyPath = controller ? `${controller}.${token}` : token;\n        throw new Error(`The specified default value for the Stimulus Value \"${propertyPath}\" must match the defined type \"${typeFromObject}\". The provided default value of \"${typeObject.default}\" is of type \"${typeFromDefaultValue}\".`);\n    }\n    if (fullObject)\n        return typeFromObject;\n}\nfunction parseValueTypeDefinition(payload) {\n    const { controller, token, typeDefinition } = payload;\n    const typeObject = { controller, token, typeObject: typeDefinition };\n    const typeFromObject = parseValueTypeObject(typeObject);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    const propertyPath = controller ? `${controller}.${typeDefinition}` : token;\n    throw new Error(`Unknown value type \"${propertyPath}\" for \"${token}\" value`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const hasDefault = hasProperty(typeDefinition, \"default\");\n    const hasType = hasProperty(typeDefinition, \"type\");\n    const typeObject = typeDefinition;\n    if (hasDefault)\n        return typeObject.default;\n    if (hasType) {\n        const { type } = typeObject;\n        const constantFromType = parseValueTypeConstant(type);\n        if (constantFromType)\n            return defaultValuesByType[constantFromType];\n    }\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(payload) {\n    const { token, typeDefinition } = payload;\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(payload);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() {\n            return defaultValueForDefinition(typeDefinition);\n        },\n        get hasCustomDefaultValue() {\n            return parseValueTypeDefault(typeDefinition) !== undefined;\n        },\n        reader: readers[type],\n        writer: writers[type] || writers.default,\n    };\n}\nconst defaultValuesByType = {\n    get array() {\n        return [];\n    },\n    boolean: false,\n    number: 0,\n    get object() {\n        return {};\n    },\n    string: \"\",\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(`expected value of type \"array\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(array)}\"`);\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || String(value).toLowerCase() == \"false\");\n    },\n    number(value) {\n        return Number(value.replace(/_/g, \"\"));\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(`expected value of type \"object\" but instead got value \"${value}\" of type \"${parseValueTypeDefault(object)}\"`);\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    },\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON,\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    static afterLoad(_identifier, _application) {\n        return;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get outlets() {\n        return this.scope.outlets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true, } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [\n    ClassPropertiesBlessing,\n    TargetPropertiesBlessing,\n    ValuePropertiesBlessing,\n    OutletPropertiesBlessing,\n];\nController.targets = [];\nController.outlets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, SelectorObserver, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus   = application\n\nexport { application }\n", "import { Controller } from \"@hotwired/stimulus\";\nimport accessibleAutocomplete from \"accessible-autocomplete\";\nimport debounce from \"lodash.debounce\";\nimport { request } from \"../utils/request_helper\";\n\n// Connects to data-controller=\"autocomplete\"\nexport default class extends Controller {\n  static targets = [\"serverInput\", \"input\"];\n  static values = {\n    path: String,\n    returnAttributes: Array,\n  };\n\n  connect() {\n    const minLength = 2;\n\n    accessibleAutocomplete({\n      element: this.inputTarget,\n      id: this.serverInputTarget.id,\n      showNoOptionsFound: true,\n      name: this.inputTarget.dataset.inputName,\n      defaultValue: this.serverInputTarget.value,\n      minLength,\n      source: debounce(request(this.pathValue), 200),\n      templates: {\n        inputValue: this.inputValueTemplate.bind(this),\n        suggestion: this.resultTemplate.bind(this),\n      },\n      onConfirm: this.onConfirm.bind(this),\n      confirmOnBlur: false,\n      autoselect: true,\n    });\n\n    // Hijack the original input to submit the selected value.\n    this.serverInputTarget.id = `old-${this.serverInputTarget.id}`;\n    this.serverInputTarget.type = \"hidden\";\n    this.serverInputTarget.value =\n      this.serverInputTarget.dataset.previousSearch || \"\";\n  }\n\n  clearUndefinedSuggestions() {\n    const autocompleteElement = this.element.getElementsByClassName(\n      \"autocomplete__wrapper\"\n    )[0];\n    if (autocompleteElement) {\n      const autocompleteOptions = autocompleteElement.getElementsByClassName(\n        \"autocomplete__option\"\n      );\n      for (const option of autocompleteOptions) {\n        if (option.innerHTML === \"\") {\n          option.remove();\n        }\n      }\n    }\n  }\n\n  private;\n\n  inputValueTemplate(result) {\n    if (result && typeof result === \"object\") {\n      return result.name;\n    } else {\n      return \"\";\n    }\n  }\n\n  resultTemplate(result) {\n    if (result && typeof result === \"object\") {\n      const attributes = this.returnAttributesValue\n        .map((attribute) => result[attribute])\n        .filter((attribute) => !!attribute)\n        .join(\", \");\n\n      return `${result.name} (${attributes})`;\n    } else {\n      return \"\";\n    }\n  }\n\n  onConfirm(option) {\n    this.serverInputTarget.value = option ? option.id : \"\";\n  }\n}\n", "const getPath = (endpoint, query) => {\n  return `${endpoint}?query=${query}`;\n};\n\nconst request = (endpoint) => {\n  let xhr = null; // Hoist this call so that we can abort previous requests.\n\n  return (query, callback) => {\n    if (xhr && xhr.readyState !== XMLHttpRequest.DONE) {\n      xhr.abort();\n    }\n    const path = getPath(endpoint, query);\n\n    xhr = new XMLHttpRequest();\n    xhr.addEventListener(\"load\", (evt) => {\n      let results = [];\n      try {\n        results = JSON.parse(xhr.responseText);\n      } catch (err) {\n        console.error(\n          `Failed to parse results from endpoint ${path}, error is:`,\n          err,\n        );\n      }\n      callback(results);\n    });\n    xhr.open(\"GET\", path);\n    xhr.send();\n  };\n};\n\nexport { getPath, request };\n", "import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"filter-search\"\nexport default class extends Controller {\n  static targets = [\"optionsList\", \"searchInput\", \"legend\"];\n\n  static instanceCounter = 0;\n\n  connect() {\n    const list = this.element.querySelector(\".govuk-checkboxes, .govuk-radios\");\n    list.dataset.filterSearchTarget = \"optionsList\";\n\n    const legend = this.element.querySelector(\"legend\");\n    legend.dataset.filterSearchTarget = \"legend\";\n\n    // This will be unique for each filter-search instance\n    this.instanceId = this.constructor.instanceCounter++;\n\n    const searchInput = this.createSearchInput();\n    list.before(searchInput);\n  }\n\n  createSearchInput() {\n    const container = document.createElement(\"div\");\n\n    const inputId = `${this.identifier}-${this.instanceId}-input`;\n    const labelText = `Filter ${this.legendTarget.innerText}`;\n\n    container.innerHTML = `\n      <label for=\"${inputId}\" class=\"govuk-label govuk-visually-hidden\">\n        ${labelText}\n      </label>\n      <input type=\"search\" id=\"${inputId}\"\n        class=\"govuk-input govuk-!-margin-bottom-1\"\n        data-action=\"input->${this.identifier}#search\"\n        data-filter-search-target=\"searchInput\">\n    `;\n\n    return container;\n  }\n\n  search() {\n    const optionItems = this.optionsListTarget.children;\n    const searchValue = this.searchInputTarget.value.toLowerCase();\n    this.toggleItems(optionItems, searchValue);\n  }\n\n  toggleItems(items, searchValue) {\n    Array.from(items).forEach(function (item) {\n      if (item.textContent.toLowerCase().indexOf(searchValue) > -1) {\n        item.style.display = \"\";\n      } else {\n        item.style.display = \"none\";\n      }\n    });\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\n\n// Connects to data-controller=\"filter\"\nexport default class extends Controller {\n  static targets = [ \"filter\" ]\n\n  close() {\n    this.filterTarget.classList.add(\"display-none-on-mobile\")\n    this.filterTarget.classList.remove(\"display-initial\")\n  }\n\n  open() {\n    this.filterTarget.classList.add(\"display-initial\")\n    this.filterTarget.classList.remove(\"display-none-on-mobile\")\n  }\n}\n", "// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from \"./application\"\n\nimport AutocompleteController from \"./autocomplete_controller\"\napplication.register(\"autocomplete\", AutocompleteController)\n\nimport FilterSearchController from \"./filter_search_controller\"\napplication.register(\"filter-search\", FilterSearchController)\n\nimport FilterController from \"./filter_controller\"\napplication.register(\"filter\", FilterController)\n", "import { initAll } from \"govuk-frontend\";\nimport \"./controllers\"\n\ninitAll();\n"],
  "mappings": "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",
  "names": ["root", "factory", "exports", "module", "define", "amd", "self", "t", "e", "n", "isCallable", "tryToString", "$TypeError", "TypeError", "argument", "isPossiblePrototype", "$String", "String", "charAt", "S", "index", "unicode", "length", "isPrototypeOf", "it", "Prototype", "isObject", "toIndexedObject", "toAbsoluteIndex", "lengthOfArrayLike", "createMethod", "IS_INCLUDES", "$this", "el", "fromIndex", "O", "value", "includes", "indexOf", "bind", "uncurryThis", "IndexedObject", "toObject", "arraySpeciesCreate", "push", "TYPE", "IS_MAP", "IS_FILTER", "IS_SOME", "IS_EVERY", "IS_FIND_INDEX", "IS_FILTER_REJECT", "NO_HOLES", "callbackfn", "that", "specificCreate", "result", "boundFunction", "create", "target", "forEach", "map", "filter", "some", "every", "find", "findIndex", "filterReject", "fails", "wellKnownSymbol", "V8_VERSION", "SPECIES", "METHOD_NAME", "array", "constructor", "foo", "Boolean", "method", "call", "DESCRIPTORS", "isArray", "getOwnPropertyDescriptor", "Object", "SILENT_ON_NON_WRITABLE_LENGTH_SET", "this", "defineProperty", "writable", "error", "isConstructor", "$Array", "Array", "originalArray", "C", "prototype", "undefined", "arraySpeciesConstructor", "anObject", "iteratorClose", "iterator", "fn", "ENTRIES", "toString", "stringSlice", "slice", "TO_STRING_TAG_SUPPORT", "classofRaw", "TO_STRING_TAG", "$Object", "CORRECT_ARGUMENTS", "arguments", "tag", "key", "callee", "hasOwn", "ownKeys", "getOwnPropertyDescriptorModule", "definePropertyModule", "source", "exceptions", "keys", "f", "i", "F", "getPrototypeOf", "done", "createPropertyDescriptor", "object", "bitmap", "enumerable", "configurable", "makeBuiltIn", "name", "descriptor", "get", "getter", "set", "setter", "defineGlobalProperty", "options", "simple", "global", "unsafe", "nonConfigurable", "nonWritable", "defineBuiltIn", "src", "document", "EXISTS", "createElement", "navigator", "userAgent", "match", "version", "process", "Deno", "versions", "v8", "split", "$Error", "Error", "replace", "TEST", "stack", "V8_OR_CHAKRA_STACK_ENTRY", "IS_V8_OR_CHAKRA_STACK", "test", "dropEntries", "prepareStackTrace", "createNonEnumerableProperty", "clearErrorStack", "ERROR_STACK_INSTALLABLE", "captureStackTrace", "copyConstructorProperties", "isForced", "targetProperty", "sourceProperty", "TARGET", "GLOBAL", "STATIC", "stat", "dontCallGetSet", "forced", "sham", "exec", "regexpExec", "RegExpPrototype", "RegExp", "KEY", "FORCED", "SHAM", "SYMBOL", "DELEGATES_TO_SYMBOL", "DELEGATES_TO_EXEC", "execCalled", "re", "flags", "nativeRegExpMethod", "methods", "nativeMethod", "regexp", "str", "arg2", "forceStringMethod", "$exec", "NATIVE_BIND", "FunctionPrototype", "Function", "apply", "Reflect", "aCallable", "hasOwnProperty", "getDescriptor", "PROPER", "CONFIGURABLE", "uncurryThisWithBind", "namespace", "obj", "next", "isNullOrUndefined", "V", "P", "func", "check", "Math", "globalThis", "window", "g", "getBuiltIn", "a", "classof", "propertyIsEnumerable", "setPrototypeOf", "dummy", "Wrapper", "NewTarget", "NewTargetPrototype", "store", "functionToString", "inspectSource", "cause", "has", "NATIVE_WEAK_MAP", "shared", "sharedKey", "hiddenKeys", "OBJECT_ALREADY_INITIALIZED", "WeakMap", "state", "metadata", "facade", "STATE", "enforce", "getterFor", "type", "documentAll", "all", "noop", "construct", "constructorRegExp", "INCORRECT_TO_STRING", "isConstructorModern", "isConstructorLegacy", "called", "replacement", "feature", "detection", "data", "normalize", "POLYFILL", "NATIVE", "string", "toLowerCase", "USE_SYMBOL_AS_UID", "$Symbol", "getMethod", "kind", "innerResult", "innerError", "defineBuiltIns", "InternalStateModule", "IteratorPrototype", "createIterResultObject", "ITERATOR_HELPER", "WRAP_FOR_VALID_ITERATOR", "setInternalState", "createIteratorProxyPrototype", "IS_ITERATOR", "getInternalState", "nextHandler", "returnMethod", "inner", "WrapForValidIteratorPrototype", "IteratorHelperPrototype", "IteratorProxy", "record", "counter", "getIteratorDirect", "createIteratorProxy", "callWithSafeIterationClosing", "mapper", "PrototypeOfArrayIteratorPrototype", "arrayIterator", "IS_PURE", "ITERATOR", "BUGGY_SAFARI_ITERATORS", "toLength", "CONFIGURABLE_FUNCTION_NAME", "enforceInternalState", "join", "CONFIGURABLE_LENGTH", "TEMPLATE", "arity", "ceil", "floor", "trunc", "x", "$default", "objectKeys", "getOwnPropertySymbolsModule", "propertyIsEnumerableModule", "$assign", "assign", "concat", "b", "A", "B", "symbol", "Symbol", "alphabet", "chr", "T", "argumentsLength", "getOwnPropertySymbols", "j", "activeXDocument", "definePropertiesModule", "enumBugKeys", "html", "documentCreateElement", "PROTOTYPE", "SCRIPT", "IE_PROTO", "EmptyConstructor", "scriptTag", "content", "LT", "NullProtoObjectViaActiveX", "write", "close", "temp", "parentWindow", "NullProtoObject", "ActiveXObject", "iframeDocument", "iframe", "JS", "domain", "style", "display", "appendChild", "contentWindow", "open", "Properties", "V8_PROTOTYPE_DEFINE_BUG", "defineProperties", "props", "IE8_DOM_DEFINE", "toPropertyKey", "$defineProperty", "$getOwnPropertyDescriptor", "ENUMERABLE", "WRITABLE", "Attributes", "current", "internalObjectKeys", "getOwnPropertyNames", "CORRECT_PROTOTYPE_GETTER", "ObjectPrototype", "names", "$propertyIsEnumerable", "NASHORN_BUG", "uncurryThisAccessor", "aPossiblePrototype", "CORRECT_SETTER", "proto", "__proto__", "input", "pref", "val", "valueOf", "getOwnPropertyNamesModule", "Target", "Source", "R", "re1", "re2", "regexpFlags", "stickyHelpers", "UNSUPPORTED_DOT_ALL", "UNSUPPORTED_NCG", "nativeReplace", "nativeExec", "patchedExec", "UPDATES_LAST_INDEX_WRONG", "lastIndex", "UNSUPPORTED_Y", "BROKEN_CARET", "NPCG_INCLUDED", "reCopy", "group", "raw", "groups", "sticky", "charsAdded", "strCopy", "multiline", "hasIndices", "ignoreCase", "dotAll", "unicodeSets", "$RegExp", "MISSED_STICKY", "uid", "SHARED", "mode", "copyright", "license", "toIntegerOrInfinity", "requireObjectCoercible", "charCodeAt", "CONVERT_TO_STRING", "pos", "first", "second", "position", "size", "codeAt", "max", "min", "integer", "number", "len", "isSymbol", "ordinaryToPrimitive", "TO_PRIMITIVE", "exoticToPrim", "toPrimitive", "id", "postfix", "random", "NATIVE_SYMBOL", "WellKnownSymbolsStore", "createWellKnownSymbol", "withoutSetter", "proxyAccessor", "inheritIfRequired", "normalizeStringArgument", "installErrorCause", "installErrorStack", "FULL_NAME", "wrapper", "IS_AGGREGATE_ERROR", "STACK_TRACE_LIMIT", "OPTIONS_POSITION", "path", "ERROR_NAME", "OriginalError", "OriginalErrorPrototype", "BaseError", "WrappedError", "message", "$", "doesNotExceedSafeInteger", "createProperty", "arrayMethodHasSpeciesSupport", "IS_CONCAT_SPREADABLE", "IS_CONCAT_SPREADABLE_SUPPORT", "isConcatSpreadable", "spreadable", "arg", "k", "E", "$filter", "arrayMethodIsStrict", "nativeJoin", "separator", "$map", "setArrayLength", "properErrorOnNonWritableLength", "item", "argCount", "wrapErrorConstructorWithCause", "WEB_ASSEMBLY", "WebAssembly", "exportGlobalErrorCauseWrapper", "exportWebAssemblyErrorCauseWrapper", "init", "FUNCTION_NAME_EXISTS", "defineBuiltInAccessor", "nameRE", "regExpExec", "fixRegExpWellKnownSymbolLogic", "advanceStringIndex", "MATCH", "nativeMatch", "maybeCallNative", "matcher", "rx", "res", "fullUnicode", "matchStr", "anInstance", "CONSTRUCTOR", "NativeIterator", "IteratorConstructor", "defineIteratorPrototypeAccessor", "Iterator", "predicate", "real", "__webpack_module_cache__", "__webpack_require__", "moduleId", "cachedModule", "__webpack_modules__", "d", "definition", "o", "prop", "VNode", "EMPTY_CHILDREN", "h", "nodeName", "attributes", "lastSimple", "child", "children", "pop", "p", "vnode", "extend", "applyRef", "ref", "defer", "Promise", "resolve", "then", "setTimeout", "IS_NON_DIMENSIONAL", "items", "enqueueRender", "component", "_dirty", "debounceRendering", "rerender", "renderComponent", "isSameNodeType", "node", "hydrating", "splitText", "_componentConstructor", "isNamedNode", "normalizedNodeName", "getNodeProps", "defaultProps", "removeNode", "parentNode", "removeChild", "setAccessor", "old", "isSvg", "cssText", "innerHTML", "__html", "useCapture", "substring", "addEventListener", "eventProxy", "removeEventListener", "_listeners", "removeAttribute", "ns", "removeAttributeNS", "setAttributeNS", "setAttribute", "className", "event", "mounts", "diffLevel", "isSvgMode", "flushMounts", "c", "shift", "afterMount", "componentDidMount", "diff", "dom", "context", "mountAll", "parent", "componentRoot", "ownerSVGElement", "ret", "idiff", "out", "prevSvgMode", "_component", "nodeValue", "createTextNode", "replaceChild", "recollectNodeTree", "vnodeName", "originalComponent", "oldDom", "isDirectOwner", "isOwner", "_parentComponent", "setComponentProps", "base", "unmountComponent", "createComponent", "nextBase", "createElementNS", "firstChild", "fc", "vchildren", "nextSibling", "isHydrating", "vchild", "originalChildren", "childNodes", "keyed", "keyedLen", "childrenLen", "vlen", "_child", "__key", "trim", "insertBefore", "dangerouslySetInnerHTML", "attrs", "unmountOnly", "removeChildren", "lastChild", "previousSibling", "recyclerComponents", "Ctor", "inst", "render", "Component", "doRender", "splice", "renderMode", "_disable", "__ref", "getDerivedStateFromProps", "componentWillMount", "componentWillReceiveProps", "prevContext", "prevProps", "syncComponentUpdates", "isChild", "rendered", "cbase", "previousProps", "previousState", "prevState", "previousContext", "isUpdate", "initialBase", "initialChildComponent", "skip", "snapshot", "shouldComponentUpdate", "componentWillUpdate", "getChildContext", "getSnapshotBeforeUpdate", "toUnmount", "childComponent", "childProps", "baseParent", "componentRef", "componentDidUpdate", "afterUpdate", "_renderCallbacks", "beforeUnmount", "componentWillUnmount", "merge", "setState", "callback", "forceUpdate", "Status", "_Component", "_this", "_len", "args", "_key", "bump", "debounced", "_proto", "wait", "immediate", "timeout", "debounceStatusUpdate", "shouldSilence", "isInFocus", "validChoiceMade", "_ref", "silenced", "callNow", "clearTimeout", "_ref2", "queryLength", "_this$props", "minQueryLength", "selectedOption", "selectedOptionIndex", "tQueryTooShort", "tNoResults", "tSelectedOption", "tResults", "_this$state", "queryTooShort", "noResults", "contentSelectedOption", "border", "clip", "height", "marginBottom", "marginRight", "overflow", "padding", "whiteSpace", "width", "role", "xmlns", "focusable", "stroke", "fill", "points", "r", "keyCodes", "isIosDevice", "Autocomplete", "elementReferences", "focused", "hovered", "menuOpen", "defaultValue", "query", "selected", "ariaHint", "handleComponentBlur", "_assertThisInitialized", "handleKeyDown", "handleUpArrow", "handleDownArrow", "handleEnter", "handlePrintableKey", "handleListMouseLeave", "handleOptionBlur", "handleOptionClick", "handleOptionFocus", "handleOptionMouseDown", "handleOptionMouseEnter", "handleInputBlur", "handleInputChange", "handleInputClick", "handleInputFocus", "pollInputElement", "getDirectInputChanges", "isQueryAnOption", "_this2", "entry", "templateInputValue", "$pollInput", "_this3", "inputReference", "componentLostFocus", "focusedChanged", "focus", "focusedInput", "componentGainedFocus", "inputElement", "setSelectionRange", "hasAutoselect", "autoselect", "inputValueTemplate", "templates", "inputValue", "templateSuggestion", "suggestionTemplate", "suggestion", "newState", "newQuery", "confirmOnBlur", "onConfirm", "_this$state2", "focusingOutsideComponent", "relatedTarget", "focusingInput", "focusingAnotherOption", "keepMenuOpen", "_this$state3", "_this4", "minLength", "showAllValues", "queryEmpty", "queryChanged", "queryLongEnough", "optionsAvailable", "_this$state4", "shouldReopenMenu", "preventDefault", "_this$state5", "_this5", "_this$state6", "handleSpace", "_this6", "keyCode", "dropdownArrow", "_this7", "_this$props2", "cssNamespace", "displayMenu", "placeholder", "required", "tStatusQueryTooShort", "tStatusNoResults", "tStatusSelectedOption", "tStatusResults", "tAssistiveHint", "dropdownArrowFactory", "menuAttributes", "inputClasses", "hintClasses", "menuClasses", "_this$state7", "inputFocused", "noOptionsAvailable", "queryNotEmpty", "showNoOptionsFound", "wrapperClassName", "statusClassName", "dropdownArrowClassName", "optionFocused", "optionClassName", "hintClassName", "selectedOptionText", "hintValue", "substr", "assistiveHintID", "ariaProps", "inputClassName", "inputClassList", "menuClassName", "menuClassList", "class", "computedMenuAttributes", "onMouseLeave", "onKeyDown", "readonly", "tabIndex", "_extends", "autoComplete", "onClick", "onBlur", "onInput", "onFocus", "option", "optionModifierFocused", "optionModifierOdd", "iosPosinsetHtml", "onMouseDown", "onMouseEnter", "optionEl", "accessibleAutocomplete", "element", "createSimpleEngine", "DropdownArrowDown", "values", "syncResults", "enhanceSelectElement", "configurationOptions", "selectElement", "availableOptions", "preserveNullOptions", "textContent", "innerText", "requestedOption", "selectedIndex", "debounce", "isObject", "result", "getFragmentFromUrl", "url", "includes", "undefined", "split", "pop", "getBreakpoint", "name", "property", "value", "window", "getComputedStyle", "document", "documentElement", "getPropertyValue", "setFocus", "$element", "options", "_options$onBeforeFocu", "isFocusable", "getAttribute", "setAttribute", "onFocus", "addEventListener", "onBlur", "once", "_options$onBlur", "call", "removeAttribute", "onBeforeFocus", "focus", "isInitialised", "$root", "moduleName", "HTMLElement", "hasAttribute", "isSupported", "$scope", "body", "classList", "contains", "isArray", "option", "Array", "isObject", "formatErrorMessage", "Component", "message", "GOVUKFrontendError", "Error", "constructor", "args", "name", "SupportError", "$scope", "document", "body", "supportMessage", "HTMLScriptElement", "prototype", "ConfigError", "ElementError", "messageOrOptions", "message", "component", "identifier", "element", "expectedType", "formatErrorMessage", "InitError", "componentOrMessage", "Component", "$root", "_$root", "constructor", "childConstructor", "moduleName", "InitError", "elementType", "ElementError", "element", "component", "identifier", "expectedType", "name", "checkSupport", "checkInitialised", "setAttribute", "isInitialised", "isSupported", "SupportError", "HTMLElement", "configOverride", "Symbol", "for", "ConfigurableComponent", "Component", "param", "config", "_config", "constructor", "$root", "childConstructor", "isObject", "defaults", "ConfigError", "formatErrorMessage", "datasetConfig", "normaliseDataset", "_$root", "dataset", "mergeConfigs", "normaliseString", "value", "property", "trimmedValue", "trim", "output", "outputType", "type", "includes", "length", "isFinite", "Number", "schema", "out", "entries", "Object", "properties", "entry", "namespace", "field", "toString", "extractConfigByNamespace", "configObjects", "formattedConfigObject", "configObject", "key", "keys", "option", "override", "validateConfig", "validationErrors", "name", "conditions", "errors", "Array", "isArray", "required", "errorMessage", "every", "push", "newObject", "current", "keyParts", "split", "index", "I18n", "constructor", "translations", "config", "_config$locale", "locale", "document", "documentElement", "lang", "t", "lookupKey", "options", "Error", "translation", "count", "translationPluralForm", "getPluralSuffix", "match", "replacePlaceholders", "translationString", "formatter", "Intl", "NumberFormat", "supportedLocalesOf", "length", "undefined", "replace", "placeholderWithBraces", "placeholderKey", "Object", "prototype", "hasOwnProperty", "call", "placeholderValue", "format", "hasIntlPluralRulesSupport", "Boolean", "window", "PluralRules", "Number", "isFinite", "preferredForm", "select", "selectPluralFormUsingFallbackRules", "console", "warn", "Math", "abs", "floor", "ruleset", "getPluralRulesForLocale", "pluralRules", "localeShort", "split", "pluralRule", "pluralRulesMap", "languages", "includes", "arabic", "chinese", "french", "german", "irish", "russian", "scottish", "spanish", "welsh", "n", "lastTwo", "last", "Accordion", "ConfigurableComponent", "constructor", "$root", "config", "i18n", "controlsClass", "showAllClass", "showAllTextClass", "sectionClass", "sectionExpandedClass", "sectionButtonClass", "sectionHeaderClass", "sectionHeadingClass", "sectionHeadingDividerClass", "sectionHeadingTextClass", "sectionHeadingTextFocusClass", "sectionShowHideToggleClass", "sectionShowHideToggleFocusClass", "sectionShowHideTextClass", "upChevronIconClass", "downChevronIconClass", "sectionSummaryClass", "sectionSummaryFocusClass", "sectionContentClass", "$sections", "$showAllButton", "$showAllIcon", "$showAllText", "I18n", "querySelectorAll", "length", "ElementError", "component", "identifier", "initControls", "initSectionHeaders", "updateShowAllButton", "areAllSectionsOpen", "document", "createElement", "setAttribute", "classList", "add", "appendChild", "$accordionControls", "insertBefore", "firstChild", "addEventListener", "onShowOrHideAllToggle", "event", "onBeforeMatch", "forEach", "$section", "i", "$header", "querySelector", "constructHeaderMarkup", "setExpanded", "isExpanded", "onSectionToggle", "setInitialState", "index", "$span", "$heading", "$summary", "$button", "id", "attr", "Array", "from", "attributes", "name", "value", "$headingText", "$headingTextFocus", "childNodes", "$child", "$showHideToggle", "$showHideToggleFocus", "$showHideText", "$showHideIcon", "getButtonPunctuationEl", "$summarySpan", "$summarySpanFocus", "remove", "removeChild", "$fragment", "target", "Element", "closest", "nowExpanded", "storeState", "expanded", "$content", "newButtonText", "t", "textContent", "ariaLabelParts", "push", "trim", "ariaLabelMessage", "join", "removeAttribute", "contains", "every", "toString", "toggle", "getIdentifier", "getAttribute", "rememberExpanded", "window", "sessionStorage", "setItem", "exception", "state", "getItem", "$punctuationEl", "moduleName", "defaults", "Object", "freeze", "hideAllSections", "hideSection", "hideSectionAriaLabel", "showAllSections", "showSection", "showSectionAriaLabel", "schema", "properties", "type", "DEBOUNCE_TIMEOUT_IN_SECONDS", "Button", "ConfigurableComponent", "constructor", "$root", "config", "debounceFormSubmitTimer", "addEventListener", "event", "handleKeyDown", "debounce", "$target", "target", "key", "HTMLElement", "getAttribute", "preventDefault", "click", "preventDoubleClick", "window", "setTimeout", "moduleName", "defaults", "Object", "freeze", "schema", "properties", "type", "closestAttributeValue", "$element", "attributeName", "$closestElementWithAttribute", "closest", "getAttribute", "CharacterCount", "ConfigurableComponent", "configOverride", "datasetConfig", "configOverrides", "maxlength", "undefined", "maxwords", "constructor", "$root", "config", "_ref", "_this$config$maxwords", "$textarea", "$visibleCountMessage", "$screenReaderCountMessage", "lastInputTimestamp", "lastInputValue", "valueChecker", "i18n", "maxLength", "querySelector", "HTMLTextAreaElement", "HTMLInputElement", "ElementError", "component", "element", "expectedType", "identifier", "errors", "validateConfig", "schema", "ConfigError", "formatErrorMessage", "I18n", "locale", "closestAttributeValue", "Infinity", "textareaDescriptionId", "id", "$textareaDescription", "document", "getElementById", "textContent", "match", "t", "count", "insertAdjacentElement", "createElement", "className", "setAttribute", "classList", "add", "removeAttribute", "bindChangeEvents", "window", "addEventListener", "updateCountMessage", "handleKeyUp", "handleFocus", "handleBlur", "updateVisibleCountMessage", "Date", "now", "setInterval", "updateIfValueChanged", "clearInterval", "value", "updateScreenReaderCountMessage", "remainingNumber", "isError", "toggle", "isOverThreshold", "getCountMessage", "text", "_text$match", "tokens", "length", "countType", "formatCountMessage", "translationKeySuffix", "Math", "abs", "threshold", "currentLength", "thresholdValue", "moduleName", "defaults", "Object", "freeze", "charactersUnderLimit", "one", "other", "charactersAtLimit", "charactersOverLimit", "wordsUnderLimit", "wordsAtLimit", "wordsOverLimit", "textareaDescription", "properties", "type", "anyOf", "required", "errorMessage", "Checkboxes", "Component", "constructor", "$root", "$inputs", "querySelectorAll", "length", "ElementError", "component", "identifier", "forEach", "$input", "targetId", "getAttribute", "document", "getElementById", "setAttribute", "removeAttribute", "window", "addEventListener", "syncAllConditionalReveals", "event", "handleClick", "syncConditionalRevealWithInputState", "$target", "classList", "contains", "inputIsChecked", "checked", "toString", "toggle", "unCheckAllInputsExcept", "allInputsWithSameName", "name", "$inputWithSameName", "hasSameFormOwner", "form", "unCheckExclusiveInputs", "allInputsWithSameNameAndExclusiveBehaviour", "$exclusiveInput", "$clickedInput", "target", "HTMLInputElement", "type", "hasAriaControls", "hasBehaviourExclusive", "moduleName", "ErrorSummary", "ConfigurableComponent", "constructor", "$root", "config", "disableAutoFocus", "setFocus", "addEventListener", "event", "handleClick", "$target", "target", "focusTarget", "preventDefault", "HTMLAnchorElement", "inputId", "getFragmentFromUrl", "href", "$input", "document", "getElementById", "$legendOrLabel", "getAssociatedLegendOrLabel", "scrollIntoView", "focus", "preventScroll", "_document$querySelect", "$fieldset", "closest", "$legends", "getElementsByTagName", "length", "$candidateLegend", "HTMLInputElement", "type", "legendTop", "getBoundingClientRect", "top", "inputRect", "height", "window", "innerHeight", "inputBottom", "querySelector", "getAttribute", "moduleName", "defaults", "Object", "freeze", "schema", "properties", "ExitThisPage", "ConfigurableComponent", "constructor", "$root", "config", "i18n", "$button", "$skiplinkButton", "$updateSpan", "$indicatorContainer", "$overlay", "keypressCounter", "lastKeyWasModified", "timeoutTime", "keypressTimeoutId", "timeoutMessageId", "querySelector", "HTMLAnchorElement", "ElementError", "component", "element", "expectedType", "identifier", "I18n", "document", "buildIndicator", "initUpdateSpan", "initButtonClickHandler", "body", "dataset", "addEventListener", "handleKeypress", "bind", "govukFrontendExitThisPageKeypress", "window", "resetPage", "createElement", "setAttribute", "className", "appendChild", "handleClick", "i", "$indicator", "updateIndicator", "classList", "toggle", "$indicators", "querySelectorAll", "forEach", "index", "exitPage", "textContent", "add", "t", "location", "href", "event", "preventDefault", "key", "clearTimeout", "setKeypressTimer", "resetKeypressTimer", "shiftKey", "setTimeout", "remove", "moduleName", "defaults", "Object", "freeze", "activated", "timedOut", "pressTwoMoreTimes", "pressOneMoreTime", "schema", "properties", "type", "FileUpload", "ConfigurableComponent", "constructor", "$root", "config", "$input", "$button", "$status", "i18n", "id", "querySelector", "ElementError", "component", "identifier", "type", "formatErrorMessage", "setAttribute", "I18n", "locale", "closestAttributeValue", "$label", "findLabel", "document", "createElement", "classList", "add", "ariaDescribedBy", "getAttribute", "className", "innerText", "t", "appendChild", "commaSpan", "containerSpan", "buttonSpan", "insertAdjacentText", "instructionSpan", "addEventListener", "onClick", "bind", "event", "preventDefault", "insertAdjacentElement", "onChange", "updateDisabledState", "observeDisabledState", "$announcements", "onDrop", "updateDropzoneVisibility", "enteredAnotherElement", "disabled", "hideDraggingState", "target", "Node", "contains", "dataTransfer", "isContainingFiles", "showDraggingState", "remove", "files", "dispatchEvent", "CustomEvent", "fileCount", "length", "name", "count", "click", "observer", "MutationObserver", "mutationList", "mutation", "attributeName", "observe", "attributes", "toggle", "moduleName", "defaults", "Object", "freeze", "chooseFilesButton", "dropInstruction", "noFileChosen", "multipleFilesChosen", "one", "other", "enteredDropZone", "leftDropZone", "schema", "properties", "hasNoTypesInfo", "types", "isDraggingFiles", "some", "Header", "Component", "constructor", "$root", "$menuButton", "$menu", "menuIsOpen", "mql", "querySelector", "menuId", "getAttribute", "ElementError", "component", "identifier", "document", "getElementById", "element", "setupResponsiveChecks", "addEventListener", "handleMenuButtonClick", "breakpoint", "getBreakpoint", "value", "property", "window", "matchMedia", "checkMode", "addListener", "matches", "removeAttribute", "setAttribute", "toString", "moduleName", "NotificationBanner", "ConfigurableComponent", "constructor", "$root", "config", "getAttribute", "disableAutoFocus", "setFocus", "moduleName", "defaults", "Object", "freeze", "schema", "properties", "type", "PasswordInput", "ConfigurableComponent", "constructor", "$root", "config", "i18n", "$input", "$showHideButton", "$screenReaderStatusMessage", "querySelector", "HTMLInputElement", "ElementError", "component", "element", "expectedType", "identifier", "type", "HTMLButtonElement", "I18n", "locale", "closestAttributeValue", "removeAttribute", "document", "createElement", "className", "setAttribute", "insertAdjacentElement", "addEventListener", "toggle", "bind", "form", "hide", "window", "event", "persisted", "preventDefault", "show", "setType", "isHidden", "prefixButton", "prefixStatus", "innerText", "t", "moduleName", "defaults", "Object", "freeze", "showPassword", "hidePassword", "showPasswordAriaLabel", "hidePasswordAriaLabel", "passwordShownAnnouncement", "passwordHiddenAnnouncement", "schema", "properties", "Radios", "Component", "constructor", "$root", "$inputs", "querySelectorAll", "length", "ElementError", "component", "identifier", "forEach", "$input", "targetId", "getAttribute", "document", "getElementById", "setAttribute", "removeAttribute", "window", "addEventListener", "syncAllConditionalReveals", "event", "handleClick", "syncConditionalRevealWithInputState", "$target", "classList", "contains", "inputIsChecked", "checked", "toString", "toggle", "$clickedInput", "target", "HTMLInputElement", "type", "$allInputs", "$clickedInputForm", "form", "$clickedInputName", "name", "hasSameFormOwner", "hasSameName", "moduleName", "ServiceNavigation", "Component", "constructor", "$root", "$menuButton", "$menu", "menuIsOpen", "mql", "querySelector", "menuId", "getAttribute", "ElementError", "component", "identifier", "document", "getElementById", "element", "setupResponsiveChecks", "addEventListener", "handleMenuButtonClick", "breakpoint", "getBreakpoint", "value", "property", "window", "matchMedia", "checkMode", "addListener", "matches", "removeAttribute", "setAttribute", "toString", "moduleName", "SkipLink", "Component", "constructor", "$root", "_this$$root$getAttrib", "hash", "href", "getAttribute", "url", "window", "URL", "error", "ElementError", "origin", "location", "pathname", "linkedElementId", "getFragmentFromUrl", "$linkedElement", "document", "getElementById", "component", "element", "identifier", "addEventListener", "setFocus", "onBeforeFocus", "classList", "add", "onBlur", "remove", "elementType", "HTMLAnchorElement", "moduleName", "Tabs", "Component", "constructor", "$root", "$tabs", "$tabList", "$tabListItems", "jsHiddenClass", "changingHash", "boundTabClick", "boundTabKeydown", "boundOnHashChange", "mql", "querySelectorAll", "length", "ElementError", "component", "identifier", "onTabClick", "bind", "onTabKeydown", "onHashChange", "querySelector", "setupResponsiveChecks", "breakpoint", "getBreakpoint", "value", "property", "window", "matchMedia", "addEventListener", "checkMode", "addListener", "_this$mql", "matches", "setup", "teardown", "_this$getTab", "setAttribute", "forEach", "$item", "$tab", "setAttributes", "hideTab", "$activeTab", "getTab", "location", "hash", "showTab", "removeAttribute", "removeEventListener", "unsetAttributes", "$tabWithHash", "$previousTab", "getCurrentTab", "focus", "unhighlightTab", "hidePanel", "highlightTab", "showPanel", "panelId", "getFragmentFromUrl", "href", "$panel", "getPanel", "id", "classList", "add", "remove", "event", "$currentTab", "$nextTab", "currentTarget", "HTMLAnchorElement", "preventDefault", "createHistoryEntry", "key", "activatePreviousTab", "activateNextTab", "parentElement", "$nextTabListItem", "nextElementSibling", "$previousTabListItem", "previousElementSibling", "moduleName", "initAll", "config", "_config$scope", "isSupported", "onError", "SupportError", "console", "log", "components", "Accordion", "accordion", "Button", "button", "CharacterCount", "characterCount", "Checkboxes", "ErrorSummary", "errorSummary", "ExitThisPage", "exitThisPage", "FileUpload", "fileUpload", "Header", "NotificationBanner", "notificationBanner", "PasswordInput", "passwordInput", "Radios", "ServiceNavigation", "SkipLink", "Tabs", "options", "scope", "document", "forEach", "Component", "createAll", "createAllOptions", "$scope", "_createAllOptions$sco", "HTMLElement", "$elements", "querySelectorAll", "moduleName", "component", "Array", "from", "map", "$element", "error", "element", "filter", "Boolean", "application", "error", "match", "oldValue", "error", "constructor", "application", "element", "accessibleAutocomplete", "debounce"]
}