{"version":3,"file":"js/application-f96b36114fd778f68f14.js","sources":["webpack:///webpack/bootstrap","webpack:///./app/javascript/controllers sync _controller\\.js$","webpack:///./app/javascript/controllers/index.js","webpack:///./app/javascript/controllers/multiple_choice_question_controller.js","webpack:///./app/javascript/controllers/reveal_controller.js","webpack:///./app/javascript/controllers/select_toggle_controller.js","webpack:///./app/javascript/controllers/stepper_controller.js","webpack:///./app/javascript/packs/application.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js","webpack:///./node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js","webpack:///./node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js","webpack:///./node_modules/@stimulus/core/dist/action.js","webpack:///./node_modules/@stimulus/core/dist/action_descriptor.js","webpack:///./node_modules/@stimulus/core/dist/application.js","webpack:///./node_modules/@stimulus/core/dist/binding.js","webpack:///./node_modules/@stimulus/core/dist/binding_observer.js","webpack:///./node_modules/@stimulus/core/dist/blessing.js","webpack:///./node_modules/@stimulus/core/dist/class_map.js","webpack:///./node_modules/@stimulus/core/dist/class_properties.js","webpack:///./node_modules/@stimulus/core/dist/context.js","webpack:///./node_modules/@stimulus/core/dist/controller.js","webpack:///./node_modules/@stimulus/core/dist/data_map.js","webpack:///./node_modules/@stimulus/core/dist/definition.js","webpack:///./node_modules/@stimulus/core/dist/dispatcher.js","webpack:///./node_modules/@stimulus/core/dist/event_listener.js","webpack:///./node_modules/@stimulus/core/dist/guide.js","webpack:///./node_modules/@stimulus/core/dist/index.js","webpack:///./node_modules/@stimulus/core/dist/inheritable_statics.js","webpack:///./node_modules/@stimulus/core/dist/module.js","webpack:///./node_modules/@stimulus/core/dist/router.js","webpack:///./node_modules/@stimulus/core/dist/schema.js","webpack:///./node_modules/@stimulus/core/dist/scope.js","webpack:///./node_modules/@stimulus/core/dist/scope_observer.js","webpack:///./node_modules/@stimulus/core/dist/selectors.js","webpack:///./node_modules/@stimulus/core/dist/string_helpers.js","webpack:///./node_modules/@stimulus/core/dist/target_properties.js","webpack:///./node_modules/@stimulus/core/dist/target_set.js","webpack:///./node_modules/@stimulus/core/dist/value_observer.js","webpack:///./node_modules/@stimulus/core/dist/value_properties.js","webpack:///./node_modules/@stimulus/multimap/dist/index.js","webpack:///./node_modules/@stimulus/multimap/dist/indexed_multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/multimap.js","webpack:///./node_modules/@stimulus/multimap/dist/set_operations.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/attribute_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/element_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/index.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/string_map_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/token_list_observer.js","webpack:///./node_modules/@stimulus/mutation-observers/dist/value_list_observer.js","webpack:///./node_modules/@stimulus/webpack-helpers/dist/index.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///./node_modules/stimulus/index.js","webpack:///./node_modules/stimulus/webpack-helpers.js"],"sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"application\": 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \"-\" + {\"0\":\"cdc0b7333b8832904bc5\"}[chunkId] + \".chunk.js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/packs/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./app/javascript/packs/application.js\");\n","var map = {\n\t\"./multiple_choice_question_controller.js\": \"./app/javascript/controllers/multiple_choice_question_controller.js\",\n\t\"./reveal_controller.js\": \"./app/javascript/controllers/reveal_controller.js\",\n\t\"./select_toggle_controller.js\": \"./app/javascript/controllers/select_toggle_controller.js\",\n\t\"./stepper_controller.js\": \"./app/javascript/controllers/stepper_controller.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"./app/javascript/controllers sync recursive _controller\\\\.js$\";","// Load all the controllers within this directory and all subdirectories.\n// Controller files must be named *_controller.js.\n\nimport { Application } from 'stimulus'\nimport { definitionsFromContext } from 'stimulus/webpack-helpers'\n\nconst application = Application.start()\nconst context = require.context('controllers', true, /_controller\\.js$/)\napplication.load(definitionsFromContext(context))\n","import { Controller } from 'stimulus'\n\nexport default class extends Controller {\n  static values = {\n    maximumSelectable: Number\n  }\n\n  static targets = ['checkbox']\n\n  update () {\n    if (!this.maximumSelectableValue) return\n\n    const [checked, unchecked] = partition(this.checkboxTargets, c => c.checked)\n    const disabled = checked.length >= this.maximumSelectableValue\n\n    unchecked.forEach(function (c) { c.disabled = disabled })\n  }\n}\n\nfunction partition (collection, predicate) {\n  return collection.reduce(\n    (acc, item) => {\n      acc[!predicate(item) | 0].push(item)\n      return acc\n    },\n    [[], []]\n  )\n}\n","import { Controller } from 'stimulus'\n\nexport default class extends Controller {\n  static targets = ['content']\n  static classes = ['hidden']\n\n  show () {\n    this.contentTarget.classList.remove(this.hiddenClass)\n  }\n\n  hide () {\n    this.contentTarget.classList.add(this.hiddenClass)\n  }\n}\n","import { Controller } from 'stimulus'\n\nexport default class extends Controller {\n  static targets = ['select', 'match', 'toggleable']\n\n  connect () {\n    this.toggle()\n  }\n\n  toggle () {\n    const checkedOption = this.selectTarget.querySelector(':checked')\n    const matchTargetIsSelected = checkedOption && checkedOption.isSameNode(this.matchTarget)\n    this.toggleableTarget.hidden = !matchTargetIsSelected\n    this.toggleableTarget.querySelectorAll('input').forEach(function (element) {\n      element.disabled = !matchTargetIsSelected\n    })\n  }\n}\n","import { Controller } from 'stimulus'\n\nexport default class extends Controller {\n  static targets = ['step', 'progress']\n  static values = { step: Number }\n  static classes = ['invalid']\n\n  next (event) {\n    if (this.isLastStep) {\n      return\n    }\n\n    if (event.target.matches('form')) {\n      return event.preventDefault()\n    }\n\n    if (this.validateCurrentStep()) {\n      this.stepValue++\n    }\n  }\n\n  previous () {\n    this.stepValue--\n  }\n\n  validateCurrentStep (event) {\n    let valid = true\n    this.currentStep.querySelectorAll('input, select').forEach(element => {\n      const formField = element.closest('.form-field')\n      if (element.checkValidity()) {\n        formField && formField.classList.remove(this.invalidClass)\n      } else {\n        formField && formField.classList.add(this.invalidClass)\n        valid = false\n      }\n    })\n\n    if (event && !valid) {\n      event.preventDefault()\n      event.stopPropagation()\n    }\n\n    return valid\n  }\n\n  stepValueChanged () {\n    this.showCurrentStep()\n    this.scrollIntoViewIfNeeded()\n    this.updateProgress()\n  }\n\n  showCurrentStep () {\n    this.stepTargets.forEach((element, step) => {\n      element.hidden = step !== this.stepValue\n    })\n  }\n\n  scrollIntoViewIfNeeded () {\n    const isInView = this.currentStep.offsetTop > window.scrollY\n    if (isInView) {\n      return\n    }\n\n    this.currentStep.scrollIntoView({ behavior: 'smooth' })\n  }\n\n  updateProgress () {\n    if (!this.hasProgressTarget) {\n      return\n    }\n\n    this.progressTarget.style.width = `${(this.stepValue + 1) / this.stepTargets.length * 100}%`\n    this.progressTarget.innerText = `Seite ${this.stepValue + 1}/${this.stepTargets.length}`\n  }\n\n  get currentStep () {\n    return this.stepTargets.find(element => !element.hidden)\n  }\n\n  get isLastStep () {\n    const lastStep = this.stepTargets[this.stepTargets.length - 1]\n    return lastStep === this.currentStep\n  }\n}\n","import '@hotwired/turbo-rails'\nimport 'controllers'\n","module.exports = require(\"regenerator-runtime\");\n","import _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nvar consumer;\nexport function getConsumer() {\n  return _getConsumer.apply(this, arguments);\n}\n\nfunction _getConsumer() {\n  _getConsumer = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n    var _yield$import, createConsumer;\n\n    return _regeneratorRuntime.wrap(function _callee$(_context) {\n      while (1) {\n        switch (_context.prev = _context.next) {\n          case 0:\n            if (!consumer) {\n              _context.next = 2;\n              break;\n            }\n\n            return _context.abrupt(\"return\", consumer);\n\n          case 2:\n            _context.next = 4;\n            return import(\"@rails/actioncable/src\");\n\n          case 4:\n            _yield$import = _context.sent;\n            createConsumer = _yield$import.createConsumer;\n            return _context.abrupt(\"return\", setConsumer(createConsumer()));\n\n          case 7:\n          case \"end\":\n            return _context.stop();\n        }\n      }\n    }, _callee);\n  }));\n  return _getConsumer.apply(this, arguments);\n}\n\nexport function setConsumer(newConsumer) {\n  return consumer = newConsumer;\n}\nexport function subscribeTo(_x, _x2) {\n  return _subscribeTo.apply(this, arguments);\n}\n\nfunction _subscribeTo() {\n  _subscribeTo = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(channel, mixin) {\n    var _yield$getConsumer, subscriptions;\n\n    return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n      while (1) {\n        switch (_context2.prev = _context2.next) {\n          case 0:\n            _context2.next = 2;\n            return getConsumer();\n\n          case 2:\n            _yield$getConsumer = _context2.sent;\n            subscriptions = _yield$getConsumer.subscriptions;\n            return _context2.abrupt(\"return\", subscriptions.create(channel, mixin));\n\n          case 5:\n          case \"end\":\n            return _context2.stop();\n        }\n      }\n    }, _callee2);\n  }));\n  return _subscribeTo.apply(this, arguments);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nimport { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\";\nimport { subscribeTo } from \"./cable\";\n\nvar TurboCableStreamSourceElement = /*#__PURE__*/function (_HTMLElement) {\n  _inherits(TurboCableStreamSourceElement, _HTMLElement);\n\n  var _super = _createSuper(TurboCableStreamSourceElement);\n\n  function TurboCableStreamSourceElement() {\n    _classCallCheck(this, TurboCableStreamSourceElement);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(TurboCableStreamSourceElement, [{\n    key: \"connectedCallback\",\n    value: function () {\n      var _connectedCallback = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                connectStreamSource(this);\n                _context.next = 3;\n                return subscribeTo(this.channel, {\n                  received: this.dispatchMessageEvent.bind(this)\n                });\n\n              case 3:\n                this.subscription = _context.sent;\n\n              case 4:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this);\n      }));\n\n      function connectedCallback() {\n        return _connectedCallback.apply(this, arguments);\n      }\n\n      return connectedCallback;\n    }()\n  }, {\n    key: \"disconnectedCallback\",\n    value: function disconnectedCallback() {\n      disconnectStreamSource(this);\n      if (this.subscription) this.subscription.unsubscribe();\n    }\n  }, {\n    key: \"dispatchMessageEvent\",\n    value: function dispatchMessageEvent(data) {\n      var event = new MessageEvent(\"message\", {\n        data: data\n      });\n      return this.dispatchEvent(event);\n    }\n  }, {\n    key: \"channel\",\n    get: function get() {\n      var channel = this.getAttribute(\"channel\");\n      var signed_stream_name = this.getAttribute(\"signed-stream-name\");\n      return {\n        channel: channel,\n        signed_stream_name: signed_stream_name\n      };\n    }\n  }]);\n\n  return TurboCableStreamSourceElement;\n}( /*#__PURE__*/_wrapNativeSuper(HTMLElement));\n\ncustomElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement);","import \"./cable_stream_source_element\";\nimport * as Turbo from \"@hotwired/turbo\";\nexport { Turbo };\nimport * as cable from \"./cable\";\nexport { cable };","var _templateObject, _templateObject2;\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]); if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nimport _regeneratorRuntime from \"@babel/runtime/regenerator\";\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction _construct(Parent, args, Class) { if (_isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/*\nTurbo 7.0.0-beta.5\nCopyright © 2021 Basecamp, LLC\n */\n(function () {\n  if (window.Reflect === undefined || window.customElements === undefined || window.customElements.polyfillWrapFlushCallback) {\n    return;\n  }\n\n  var BuiltInHTMLElement = HTMLElement;\n  var wrapperForTheName = {\n    'HTMLElement': function HTMLElement() {\n      return Reflect.construct(BuiltInHTMLElement, [], this.constructor);\n    }\n  };\n  window.HTMLElement = wrapperForTheName['HTMLElement'];\n  HTMLElement.prototype = BuiltInHTMLElement.prototype;\n  HTMLElement.prototype.constructor = HTMLElement;\n  Object.setPrototypeOf(HTMLElement, BuiltInHTMLElement);\n})();\n\nvar submittersByForm = new WeakMap();\n\nfunction findSubmitterFromClickTarget(target) {\n  var element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n  var candidate = element ? element.closest(\"input, button\") : null;\n  return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\n\nfunction clickCaptured(event) {\n  var submitter = findSubmitterFromClickTarget(event.target);\n\n  if (submitter && submitter.form) {\n    submittersByForm.set(submitter.form, submitter);\n  }\n}\n\n(function () {\n  if (\"SubmitEvent\" in window) return;\n  addEventListener(\"click\", clickCaptured, true);\n  Object.defineProperty(Event.prototype, \"submitter\", {\n    get: function get() {\n      if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n        return submittersByForm.get(this.target);\n      }\n    }\n  });\n})();\n\nvar FrameLoadingStyle;\n\n(function (FrameLoadingStyle) {\n  FrameLoadingStyle[\"eager\"] = \"eager\";\n  FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\n\nvar FrameElement = /*#__PURE__*/function (_HTMLElement) {\n  _inherits(FrameElement, _HTMLElement);\n\n  var _super = _createSuper(FrameElement);\n\n  function FrameElement() {\n    var _this;\n\n    _classCallCheck(this, FrameElement);\n\n    _this = _super.call(this);\n    _this.loaded = Promise.resolve();\n    _this.delegate = new FrameElement.delegateConstructor(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(FrameElement, [{\n    key: \"connectedCallback\",\n    value: function connectedCallback() {\n      this.delegate.connect();\n    }\n  }, {\n    key: \"disconnectedCallback\",\n    value: function disconnectedCallback() {\n      this.delegate.disconnect();\n    }\n  }, {\n    key: \"attributeChangedCallback\",\n    value: function attributeChangedCallback(name) {\n      if (name == \"loading\") {\n        this.delegate.loadingStyleChanged();\n      } else if (name == \"src\") {\n        this.delegate.sourceURLChanged();\n      } else {\n        this.delegate.disabledChanged();\n      }\n    }\n  }, {\n    key: \"src\",\n    get: function get() {\n      return this.getAttribute(\"src\");\n    },\n    set: function set(value) {\n      if (value) {\n        this.setAttribute(\"src\", value);\n      } else {\n        this.removeAttribute(\"src\");\n      }\n    }\n  }, {\n    key: \"loading\",\n    get: function get() {\n      return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n    },\n    set: function set(value) {\n      if (value) {\n        this.setAttribute(\"loading\", value);\n      } else {\n        this.removeAttribute(\"loading\");\n      }\n    }\n  }, {\n    key: \"disabled\",\n    get: function get() {\n      return this.hasAttribute(\"disabled\");\n    },\n    set: function set(value) {\n      if (value) {\n        this.setAttribute(\"disabled\", \"\");\n      } else {\n        this.removeAttribute(\"disabled\");\n      }\n    }\n  }, {\n    key: \"autoscroll\",\n    get: function get() {\n      return this.hasAttribute(\"autoscroll\");\n    },\n    set: function set(value) {\n      if (value) {\n        this.setAttribute(\"autoscroll\", \"\");\n      } else {\n        this.removeAttribute(\"autoscroll\");\n      }\n    }\n  }, {\n    key: \"complete\",\n    get: function get() {\n      return !this.delegate.isLoading;\n    }\n  }, {\n    key: \"isActive\",\n    get: function get() {\n      return this.ownerDocument === document && !this.isPreview;\n    }\n  }, {\n    key: \"isPreview\",\n    get: function get() {\n      var _a, _b;\n\n      return (_b = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.documentElement) === null || _b === void 0 ? void 0 : _b.hasAttribute(\"data-turbo-preview\");\n    }\n  }], [{\n    key: \"observedAttributes\",\n    get: function get() {\n      return [\"disabled\", \"loading\", \"src\"];\n    }\n  }]);\n\n  return FrameElement;\n}( /*#__PURE__*/_wrapNativeSuper(HTMLElement));\n\nfunction frameLoadingStyleFromString(style) {\n  switch (style.toLowerCase()) {\n    case \"lazy\":\n      return FrameLoadingStyle.lazy;\n\n    default:\n      return FrameLoadingStyle.eager;\n  }\n}\n\nfunction expandURL(locatable) {\n  return new URL(locatable.toString(), document.baseURI);\n}\n\nfunction getAnchor(url) {\n  var anchorMatch;\n\n  if (url.hash) {\n    return url.hash.slice(1);\n  } else if (anchorMatch = url.href.match(/#(.*)$/)) {\n    return anchorMatch[1];\n  } else {\n    return \"\";\n  }\n}\n\nfunction getExtension(url) {\n  return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\n\nfunction isHTML(url) {\n  return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml))$/);\n}\n\nfunction isPrefixedBy(baseURL, url) {\n  var prefix = getPrefix(url);\n  return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\n\nfunction toCacheKey(url) {\n  var anchorLength = url.hash.length;\n\n  if (anchorLength < 2) {\n    return url.href;\n  } else {\n    return url.href.slice(0, -anchorLength);\n  }\n}\n\nfunction urlsAreEqual(left, right) {\n  return expandURL(left).href == expandURL(right).href;\n}\n\nfunction getPathComponents(url) {\n  return url.pathname.split(\"/\").slice(1);\n}\n\nfunction getLastPathComponent(url) {\n  return getPathComponents(url).slice(-1)[0];\n}\n\nfunction getPrefix(url) {\n  return addTrailingSlash(url.origin + url.pathname);\n}\n\nfunction addTrailingSlash(value) {\n  return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nvar FetchResponse = /*#__PURE__*/function () {\n  function FetchResponse(response) {\n    _classCallCheck(this, FetchResponse);\n\n    this.response = response;\n  }\n\n  _createClass(FetchResponse, [{\n    key: \"succeeded\",\n    get: function get() {\n      return this.response.ok;\n    }\n  }, {\n    key: \"failed\",\n    get: function get() {\n      return !this.succeeded;\n    }\n  }, {\n    key: \"clientError\",\n    get: function get() {\n      return this.statusCode >= 400 && this.statusCode <= 499;\n    }\n  }, {\n    key: \"serverError\",\n    get: function get() {\n      return this.statusCode >= 500 && this.statusCode <= 599;\n    }\n  }, {\n    key: \"redirected\",\n    get: function get() {\n      return this.response.redirected;\n    }\n  }, {\n    key: \"location\",\n    get: function get() {\n      return expandURL(this.response.url);\n    }\n  }, {\n    key: \"isHTML\",\n    get: function get() {\n      return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n    }\n  }, {\n    key: \"statusCode\",\n    get: function get() {\n      return this.response.status;\n    }\n  }, {\n    key: \"contentType\",\n    get: function get() {\n      return this.header(\"Content-Type\");\n    }\n  }, {\n    key: \"responseText\",\n    get: function get() {\n      return this.response.text();\n    }\n  }, {\n    key: \"responseHTML\",\n    get: function get() {\n      if (this.isHTML) {\n        return this.response.text();\n      } else {\n        return Promise.resolve(undefined);\n      }\n    }\n  }, {\n    key: \"header\",\n    value: function header(name) {\n      return this.response.headers.get(name);\n    }\n  }]);\n\n  return FetchResponse;\n}();\n\nfunction dispatch(eventName) {\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n      target = _ref.target,\n      cancelable = _ref.cancelable,\n      detail = _ref.detail;\n\n  var event = new CustomEvent(eventName, {\n    cancelable: cancelable,\n    bubbles: true,\n    detail: detail\n  });\n  void (target || document.documentElement).dispatchEvent(event);\n  return event;\n}\n\nfunction nextAnimationFrame() {\n  return new Promise(function (resolve) {\n    return requestAnimationFrame(function () {\n      return resolve();\n    });\n  });\n}\n\nfunction nextEventLoopTick() {\n  return new Promise(function (resolve) {\n    return setTimeout(function () {\n      return resolve();\n    }, 0);\n  });\n}\n\nfunction nextMicrotask() {\n  return Promise.resolve();\n}\n\nfunction parseHTMLDocument() {\n  var html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n  return new DOMParser().parseFromString(html, \"text/html\");\n}\n\nfunction unindent(strings) {\n  for (var _len = arguments.length, values = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n    values[_key - 1] = arguments[_key];\n  }\n\n  var lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n  var match = lines[0].match(/^\\s+/);\n  var indent = match ? match[0].length : 0;\n  return lines.map(function (line) {\n    return line.slice(indent);\n  }).join(\"\\n\");\n}\n\nfunction interpolate(strings, values) {\n  return strings.reduce(function (result, string, i) {\n    var value = values[i] == undefined ? \"\" : values[i];\n    return result + string + value;\n  }, \"\");\n}\n\nfunction uuid() {\n  return Array.apply(null, {\n    length: 36\n  }).map(function (_, i) {\n    if (i == 8 || i == 13 || i == 18 || i == 23) {\n      return \"-\";\n    } else if (i == 14) {\n      return \"4\";\n    } else if (i == 19) {\n      return (Math.floor(Math.random() * 4) + 8).toString(16);\n    } else {\n      return Math.floor(Math.random() * 15).toString(16);\n    }\n  }).join(\"\");\n}\n\nvar FetchMethod;\n\n(function (FetchMethod) {\n  FetchMethod[FetchMethod[\"get\"] = 0] = \"get\";\n  FetchMethod[FetchMethod[\"post\"] = 1] = \"post\";\n  FetchMethod[FetchMethod[\"put\"] = 2] = \"put\";\n  FetchMethod[FetchMethod[\"patch\"] = 3] = \"patch\";\n  FetchMethod[FetchMethod[\"delete\"] = 4] = \"delete\";\n})(FetchMethod || (FetchMethod = {}));\n\nfunction fetchMethodFromString(method) {\n  switch (method.toLowerCase()) {\n    case \"get\":\n      return FetchMethod.get;\n\n    case \"post\":\n      return FetchMethod.post;\n\n    case \"put\":\n      return FetchMethod.put;\n\n    case \"patch\":\n      return FetchMethod.patch;\n\n    case \"delete\":\n      return FetchMethod.delete;\n  }\n}\n\nvar FetchRequest = /*#__PURE__*/function () {\n  function FetchRequest(delegate, method, location) {\n    var body = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : new URLSearchParams();\n\n    _classCallCheck(this, FetchRequest);\n\n    this.abortController = new AbortController();\n    this.delegate = delegate;\n    this.method = method;\n    this.headers = this.defaultHeaders;\n\n    if (this.isIdempotent) {\n      this.url = mergeFormDataEntries(location, _toConsumableArray(body.entries()));\n    } else {\n      this.body = body;\n      this.url = location;\n    }\n  }\n\n  _createClass(FetchRequest, [{\n    key: \"location\",\n    get: function get() {\n      return this.url;\n    }\n  }, {\n    key: \"params\",\n    get: function get() {\n      return this.url.searchParams;\n    }\n  }, {\n    key: \"entries\",\n    get: function get() {\n      return this.body ? Array.from(this.body.entries()) : [];\n    }\n  }, {\n    key: \"cancel\",\n    value: function cancel() {\n      this.abortController.abort();\n    }\n  }, {\n    key: \"perform\",\n    value: function () {\n      var _perform = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {\n        var _a, _b, fetchOptions, response;\n\n        return _regeneratorRuntime.wrap(function _callee$(_context) {\n          while (1) {\n            switch (_context.prev = _context.next) {\n              case 0:\n                fetchOptions = this.fetchOptions;\n                (_b = (_a = this.delegate).prepareHeadersForRequest) === null || _b === void 0 ? void 0 : _b.call(_a, this.headers, this);\n                dispatch(\"turbo:before-fetch-request\", {\n                  detail: {\n                    fetchOptions: fetchOptions\n                  }\n                });\n                _context.prev = 3;\n                this.delegate.requestStarted(this);\n                _context.next = 7;\n                return fetch(this.url.href, fetchOptions);\n\n              case 7:\n                response = _context.sent;\n                _context.next = 10;\n                return this.receive(response);\n\n              case 10:\n                return _context.abrupt(\"return\", _context.sent);\n\n              case 13:\n                _context.prev = 13;\n                _context.t0 = _context[\"catch\"](3);\n                this.delegate.requestErrored(this, _context.t0);\n                throw _context.t0;\n\n              case 17:\n                _context.prev = 17;\n                this.delegate.requestFinished(this);\n                return _context.finish(17);\n\n              case 20:\n              case \"end\":\n                return _context.stop();\n            }\n          }\n        }, _callee, this, [[3, 13, 17, 20]]);\n      }));\n\n      function perform() {\n        return _perform.apply(this, arguments);\n      }\n\n      return perform;\n    }()\n  }, {\n    key: \"receive\",\n    value: function () {\n      var _receive = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(response) {\n        var fetchResponse, event;\n        return _regeneratorRuntime.wrap(function _callee2$(_context2) {\n          while (1) {\n            switch (_context2.prev = _context2.next) {\n              case 0:\n                fetchResponse = new FetchResponse(response);\n                event = dispatch(\"turbo:before-fetch-response\", {\n                  cancelable: true,\n                  detail: {\n                    fetchResponse: fetchResponse\n                  }\n                });\n\n                if (event.defaultPrevented) {\n                  this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n                } else if (fetchResponse.succeeded) {\n                  this.delegate.requestSucceededWithResponse(this, fetchResponse);\n                } else {\n                  this.delegate.requestFailedWithResponse(this, fetchResponse);\n                }\n\n                return _context2.abrupt(\"return\", fetchResponse);\n\n              case 4:\n              case \"end\":\n                return _context2.stop();\n            }\n          }\n        }, _callee2, this);\n      }));\n\n      function receive(_x) {\n        return _receive.apply(this, arguments);\n      }\n\n      return receive;\n    }()\n  }, {\n    key: \"fetchOptions\",\n    get: function get() {\n      return {\n        method: FetchMethod[this.method].toUpperCase(),\n        credentials: \"same-origin\",\n        headers: this.headers,\n        redirect: \"follow\",\n        body: this.body,\n        signal: this.abortSignal\n      };\n    }\n  }, {\n    key: \"defaultHeaders\",\n    get: function get() {\n      return {\n        \"Accept\": \"text/html, application/xhtml+xml\"\n      };\n    }\n  }, {\n    key: \"isIdempotent\",\n    get: function get() {\n      return this.method == FetchMethod.get;\n    }\n  }, {\n    key: \"abortSignal\",\n    get: function get() {\n      return this.abortController.signal;\n    }\n  }]);\n\n  return FetchRequest;\n}();\n\nfunction mergeFormDataEntries(url, entries) {\n  var currentSearchParams = new URLSearchParams(url.search);\n\n  var _iterator = _createForOfIteratorHelper(entries),\n      _step;\n\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var _ref4 = _step.value;\n\n      var _ref3 = _slicedToArray(_ref4, 2);\n\n      var name = _ref3[0];\n      var value = _ref3[1];\n      if (value instanceof File) continue;\n\n      if (currentSearchParams.has(name)) {\n        currentSearchParams.delete(name);\n        url.searchParams.set(name, value);\n      } else {\n        url.searchParams.append(name, value);\n      }\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n\n  return url;\n}\n\nvar AppearanceObserver = /*#__PURE__*/function () {\n  function AppearanceObserver(delegate, element) {\n    var _this2 = this;\n\n    _classCallCheck(this, AppearanceObserver);\n\n    this.started = false;\n\n    this.intersect = function (entries) {\n      var lastEntry = entries.slice(-1)[0];\n\n      if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n        _this2.delegate.elementAppearedInViewport(_this2.element);\n      }\n    };\n\n    this.delegate = delegate;\n    this.element = element;\n    this.intersectionObserver = new IntersectionObserver(this.intersect);\n  }\n\n  _createClass(AppearanceObserver, [{\n    key: \"start\",\n    value: function start() {\n      if (!this.started) {\n        this.started = true;\n        this.intersectionObserver.observe(this.element);\n      }\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      if (this.started) {\n        this.started = false;\n        this.intersectionObserver.unobserve(this.element);\n      }\n    }\n  }]);\n\n  return AppearanceObserver;\n}();\n\nvar StreamMessage = /*#__PURE__*/function () {\n  function StreamMessage(html) {\n    _classCallCheck(this, StreamMessage);\n\n    this.templateElement = document.createElement(\"template\");\n    this.templateElement.innerHTML = html;\n  }\n\n  _createClass(StreamMessage, [{\n    key: \"fragment\",\n    get: function get() {\n      var fragment = document.createDocumentFragment();\n\n      var _iterator2 = _createForOfIteratorHelper(this.foreignElements),\n          _step2;\n\n      try {\n        for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n          var element = _step2.value;\n          fragment.appendChild(document.importNode(element, true));\n        }\n      } catch (err) {\n        _iterator2.e(err);\n      } finally {\n        _iterator2.f();\n      }\n\n      return fragment;\n    }\n  }, {\n    key: \"foreignElements\",\n    get: function get() {\n      return this.templateChildren.reduce(function (streamElements, child) {\n        if (child.tagName.toLowerCase() == \"turbo-stream\") {\n          return [].concat(_toConsumableArray(streamElements), [child]);\n        } else {\n          return streamElements;\n        }\n      }, []);\n    }\n  }, {\n    key: \"templateChildren\",\n    get: function get() {\n      return Array.from(this.templateElement.content.children);\n    }\n  }], [{\n    key: \"wrap\",\n    value: function wrap(message) {\n      if (typeof message == \"string\") {\n        return new this(message);\n      } else {\n        return message;\n      }\n    }\n  }]);\n\n  return StreamMessage;\n}();\n\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nvar FormSubmissionState;\n\n(function (FormSubmissionState) {\n  FormSubmissionState[FormSubmissionState[\"initialized\"] = 0] = \"initialized\";\n  FormSubmissionState[FormSubmissionState[\"requesting\"] = 1] = \"requesting\";\n  FormSubmissionState[FormSubmissionState[\"waiting\"] = 2] = \"waiting\";\n  FormSubmissionState[FormSubmissionState[\"receiving\"] = 3] = \"receiving\";\n  FormSubmissionState[FormSubmissionState[\"stopping\"] = 4] = \"stopping\";\n  FormSubmissionState[FormSubmissionState[\"stopped\"] = 5] = \"stopped\";\n})(FormSubmissionState || (FormSubmissionState = {}));\n\nvar FormEnctype;\n\n(function (FormEnctype) {\n  FormEnctype[\"urlEncoded\"] = \"application/x-www-form-urlencoded\";\n  FormEnctype[\"multipart\"] = \"multipart/form-data\";\n  FormEnctype[\"plain\"] = \"text/plain\";\n})(FormEnctype || (FormEnctype = {}));\n\nfunction formEnctypeFromString(encoding) {\n  switch (encoding.toLowerCase()) {\n    case FormEnctype.multipart:\n      return FormEnctype.multipart;\n\n    case FormEnctype.plain:\n      return FormEnctype.plain;\n\n    default:\n      return FormEnctype.urlEncoded;\n  }\n}\n\nvar FormSubmission = /*#__PURE__*/function () {\n  function FormSubmission(delegate, formElement, submitter) {\n    var mustRedirect = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n    _classCallCheck(this, FormSubmission);\n\n    this.state = FormSubmissionState.initialized;\n    this.delegate = delegate;\n    this.formElement = formElement;\n    this.submitter = submitter;\n    this.formData = buildFormData(formElement, submitter);\n    this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body);\n    this.mustRedirect = mustRedirect;\n  }\n\n  _createClass(FormSubmission, [{\n    key: \"method\",\n    get: function get() {\n      var _a;\n\n      var method = ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formmethod\")) || this.formElement.getAttribute(\"method\") || \"\";\n      return fetchMethodFromString(method.toLowerCase()) || FetchMethod.get;\n    }\n  }, {\n    key: \"action\",\n    get: function get() {\n      var _a;\n\n      return ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formaction\")) || this.formElement.action;\n    }\n  }, {\n    key: \"location\",\n    get: function get() {\n      return expandURL(this.action);\n    }\n  }, {\n    key: \"body\",\n    get: function get() {\n      if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n        return new URLSearchParams(this.stringFormData);\n      } else {\n        return this.formData;\n      }\n    }\n  }, {\n    key: \"enctype\",\n    get: function get() {\n      var _a;\n\n      return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n    }\n  }, {\n    key: \"isIdempotent\",\n    get: function get() {\n      return this.fetchRequest.isIdempotent;\n    }\n  }, {\n    key: \"stringFormData\",\n    get: function get() {\n      return _toConsumableArray(this.formData).reduce(function (entries, _ref5) {\n        var _ref6 = _slicedToArray(_ref5, 2),\n            name = _ref6[0],\n            value = _ref6[1];\n\n        return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n      }, []);\n    }\n  }, {\n    key: \"start\",\n    value: function () {\n      var _start = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {\n        var _FormSubmissionState, initialized, requesting;\n\n        return _regeneratorRuntime.wrap(function _callee3$(_context3) {\n          while (1) {\n            switch (_context3.prev = _context3.next) {\n              case 0:\n                _FormSubmissionState = FormSubmissionState, initialized = _FormSubmissionState.initialized, requesting = _FormSubmissionState.requesting;\n\n                if (!(this.state == initialized)) {\n                  _context3.next = 4;\n                  break;\n                }\n\n                this.state = requesting;\n                return _context3.abrupt(\"return\", this.fetchRequest.perform());\n\n              case 4:\n              case \"end\":\n                return _context3.stop();\n            }\n          }\n        }, _callee3, this);\n      }));\n\n      function start() {\n        return _start.apply(this, arguments);\n      }\n\n      return start;\n    }()\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      var _FormSubmissionState2 = FormSubmissionState,\n          stopping = _FormSubmissionState2.stopping,\n          stopped = _FormSubmissionState2.stopped;\n\n      if (this.state != stopping && this.state != stopped) {\n        this.state = stopping;\n        this.fetchRequest.cancel();\n        return true;\n      }\n    }\n  }, {\n    key: \"prepareHeadersForRequest\",\n    value: function prepareHeadersForRequest(headers, request) {\n      if (!request.isIdempotent) {\n        var token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n\n        if (token) {\n          headers[\"X-CSRF-Token\"] = token;\n        }\n\n        headers[\"Accept\"] = [StreamMessage.contentType, headers[\"Accept\"]].join(\", \");\n      }\n    }\n  }, {\n    key: \"requestStarted\",\n    value: function requestStarted(request) {\n      this.state = FormSubmissionState.waiting;\n      dispatch(\"turbo:submit-start\", {\n        target: this.formElement,\n        detail: {\n          formSubmission: this\n        }\n      });\n      this.delegate.formSubmissionStarted(this);\n    }\n  }, {\n    key: \"requestPreventedHandlingResponse\",\n    value: function requestPreventedHandlingResponse(request, response) {\n      this.result = {\n        success: response.succeeded,\n        fetchResponse: response\n      };\n    }\n  }, {\n    key: \"requestSucceededWithResponse\",\n    value: function requestSucceededWithResponse(request, response) {\n      if (response.clientError || response.serverError) {\n        this.delegate.formSubmissionFailedWithResponse(this, response);\n      } else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n        var error = new Error(\"Form responses must redirect to another location\");\n        this.delegate.formSubmissionErrored(this, error);\n      } else {\n        this.state = FormSubmissionState.receiving;\n        this.result = {\n          success: true,\n          fetchResponse: response\n        };\n        this.delegate.formSubmissionSucceededWithResponse(this, response);\n      }\n    }\n  }, {\n    key: \"requestFailedWithResponse\",\n    value: function requestFailedWithResponse(request, response) {\n      this.result = {\n        success: false,\n        fetchResponse: response\n      };\n      this.delegate.formSubmissionFailedWithResponse(this, response);\n    }\n  }, {\n    key: \"requestErrored\",\n    value: function requestErrored(request, error) {\n      this.result = {\n        success: false,\n        error: error\n      };\n      this.delegate.formSubmissionErrored(this, error);\n    }\n  }, {\n    key: \"requestFinished\",\n    value: function requestFinished(request) {\n      this.state = FormSubmissionState.stopped;\n      dispatch(\"turbo:submit-end\", {\n        target: this.formElement,\n        detail: Object.assign({\n          formSubmission: this\n        }, this.result)\n      });\n      this.delegate.formSubmissionFinished(this);\n    }\n  }, {\n    key: \"requestMustRedirect\",\n    value: function requestMustRedirect(request) {\n      return !request.isIdempotent && this.mustRedirect;\n    }\n  }]);\n\n  return FormSubmission;\n}();\n\nfunction buildFormData(formElement, submitter) {\n  var formData = new FormData(formElement);\n  var name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n  var value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n\n  if (name && value != null && formData.get(name) != value) {\n    formData.append(name, value);\n  }\n\n  return formData;\n}\n\nfunction getCookieValue(cookieName) {\n  if (cookieName != null) {\n    var cookies = document.cookie ? document.cookie.split(\"; \") : [];\n    var cookie = cookies.find(function (cookie) {\n      return cookie.startsWith(cookieName);\n    });\n\n    if (cookie) {\n      var value = cookie.split(\"=\").slice(1).join(\"=\");\n      return value ? decodeURIComponent(value) : undefined;\n    }\n  }\n}\n\nfunction getMetaContent(name) {\n  var element = document.querySelector(\"meta[name=\\\"\".concat(name, \"\\\"]\"));\n  return element && element.content;\n}\n\nfunction responseSucceededWithoutRedirect(response) {\n  return response.statusCode == 200 && !response.redirected;\n}\n\nvar Snapshot = /*#__PURE__*/function () {\n  function Snapshot(element) {\n    _classCallCheck(this, Snapshot);\n\n    this.element = element;\n  }\n\n  _createClass(Snapshot, [{\n    key: \"children\",\n    get: function get() {\n      return _toConsumableArray(this.element.children);\n    }\n  }, {\n    key: \"hasAnchor\",\n    value: function hasAnchor(anchor) {\n      return this.getElementForAnchor(anchor) != null;\n    }\n  }, {\n    key: \"getElementForAnchor\",\n    value: function getElementForAnchor(anchor) {\n      try {\n        return this.element.querySelector(\"[id='\".concat(anchor, \"'], a[name='\").concat(anchor, \"']\"));\n      } catch (_a) {\n        return null;\n      }\n    }\n  }, {\n    key: \"isConnected\",\n    get: function get() {\n      return this.element.isConnected;\n    }\n  }, {\n    key: \"firstAutofocusableElement\",\n    get: function get() {\n      return this.element.querySelector(\"[autofocus]\");\n    }\n  }, {\n    key: \"permanentElements\",\n    get: function get() {\n      return _toConsumableArray(this.element.querySelectorAll(\"[id][data-turbo-permanent]\"));\n    }\n  }, {\n    key: \"getPermanentElementById\",\n    value: function getPermanentElementById(id) {\n      return this.element.querySelector(\"#\".concat(id, \"[data-turbo-permanent]\"));\n    }\n  }, {\n    key: \"getPermanentElementMapForSnapshot\",\n    value: function getPermanentElementMapForSnapshot(snapshot) {\n      var permanentElementMap = {};\n\n      var _iterator3 = _createForOfIteratorHelper(this.permanentElements),\n          _step3;\n\n      try {\n        for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {\n          var currentPermanentElement = _step3.value;\n          var id = currentPermanentElement.id;\n          var newPermanentElement = snapshot.getPermanentElementById(id);\n\n          if (newPermanentElement) {\n            permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n          }\n        }\n      } catch (err) {\n        _iterator3.e(err);\n      } finally {\n        _iterator3.f();\n      }\n\n      return permanentElementMap;\n    }\n  }]);\n\n  return Snapshot;\n}();\n\nvar FormInterceptor = /*#__PURE__*/function () {\n  function FormInterceptor(delegate, element) {\n    var _this3 = this;\n\n    _classCallCheck(this, FormInterceptor);\n\n    this.submitBubbled = function (event) {\n      if (event.target instanceof HTMLFormElement) {\n        var form = event.target;\n        var submitter = event.submitter || undefined;\n\n        if (_this3.delegate.shouldInterceptFormSubmission(form, submitter)) {\n          event.preventDefault();\n          event.stopImmediatePropagation();\n\n          _this3.delegate.formSubmissionIntercepted(form, submitter);\n        }\n      }\n    };\n\n    this.delegate = delegate;\n    this.element = element;\n  }\n\n  _createClass(FormInterceptor, [{\n    key: \"start\",\n    value: function start() {\n      this.element.addEventListener(\"submit\", this.submitBubbled);\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      this.element.removeEventListener(\"submit\", this.submitBubbled);\n    }\n  }]);\n\n  return FormInterceptor;\n}();\n\nvar View = /*#__PURE__*/function () {\n  function View(delegate, element) {\n    _classCallCheck(this, View);\n\n    this.delegate = delegate;\n    this.element = element;\n  }\n\n  _createClass(View, [{\n    key: \"scrollToAnchor\",\n    value: function scrollToAnchor(anchor) {\n      var element = this.snapshot.getElementForAnchor(anchor);\n\n      if (element) {\n        this.scrollToElement(element);\n      } else {\n        this.scrollToPosition({\n          x: 0,\n          y: 0\n        });\n      }\n    }\n  }, {\n    key: \"scrollToElement\",\n    value: function scrollToElement(element) {\n      element.scrollIntoView();\n    }\n  }, {\n    key: \"scrollToPosition\",\n    value: function scrollToPosition(_ref7) {\n      var x = _ref7.x,\n          y = _ref7.y;\n      this.scrollRoot.scrollTo(x, y);\n    }\n  }, {\n    key: \"scrollRoot\",\n    get: function get() {\n      return window;\n    }\n  }, {\n    key: \"render\",\n    value: function () {\n      var _render = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee4(renderer) {\n        var isPreview, shouldRender, snapshot;\n        return _regeneratorRuntime.wrap(function _callee4$(_context4) {\n          while (1) {\n            switch (_context4.prev = _context4.next) {\n              case 0:\n                if (!this.renderer) {\n                  _context4.next = 2;\n                  break;\n                }\n\n                throw new Error(\"rendering is already in progress\");\n\n              case 2:\n                isPreview = renderer.isPreview, shouldRender = renderer.shouldRender, snapshot = renderer.newSnapshot;\n\n                if (!shouldRender) {\n                  _context4.next = 17;\n                  break;\n                }\n\n                _context4.prev = 4;\n                this.renderer = renderer;\n                this.prepareToRenderSnapshot(renderer);\n                this.delegate.viewWillRenderSnapshot(snapshot, isPreview);\n                _context4.next = 10;\n                return this.renderSnapshot(renderer);\n\n              case 10:\n                this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n                this.finishRenderingSnapshot(renderer);\n\n              case 12:\n                _context4.prev = 12;\n                delete this.renderer;\n                return _context4.finish(12);\n\n              case 15:\n                _context4.next = 18;\n                break;\n\n              case 17:\n                this.invalidate();\n\n              case 18:\n              case \"end\":\n                return _context4.stop();\n            }\n          }\n        }, _callee4, this, [[4,, 12, 15]]);\n      }));\n\n      function render(_x2) {\n        return _render.apply(this, arguments);\n      }\n\n      return render;\n    }()\n  }, {\n    key: \"invalidate\",\n    value: function invalidate() {\n      this.delegate.viewInvalidated();\n    }\n  }, {\n    key: \"prepareToRenderSnapshot\",\n    value: function prepareToRenderSnapshot(renderer) {\n      this.markAsPreview(renderer.isPreview);\n      renderer.prepareToRender();\n    }\n  }, {\n    key: \"markAsPreview\",\n    value: function markAsPreview(isPreview) {\n      if (isPreview) {\n        this.element.setAttribute(\"data-turbo-preview\", \"\");\n      } else {\n        this.element.removeAttribute(\"data-turbo-preview\");\n      }\n    }\n  }, {\n    key: \"renderSnapshot\",\n    value: function () {\n      var _renderSnapshot = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee5(renderer) {\n        return _regeneratorRuntime.wrap(function _callee5$(_context5) {\n          while (1) {\n            switch (_context5.prev = _context5.next) {\n              case 0:\n                _context5.next = 2;\n                return renderer.render();\n\n              case 2:\n              case \"end\":\n                return _context5.stop();\n            }\n          }\n        }, _callee5);\n      }));\n\n      function renderSnapshot(_x3) {\n        return _renderSnapshot.apply(this, arguments);\n      }\n\n      return renderSnapshot;\n    }()\n  }, {\n    key: \"finishRenderingSnapshot\",\n    value: function finishRenderingSnapshot(renderer) {\n      renderer.finishRendering();\n    }\n  }]);\n\n  return View;\n}();\n\nvar FrameView = /*#__PURE__*/function (_View) {\n  _inherits(FrameView, _View);\n\n  var _super2 = _createSuper(FrameView);\n\n  function FrameView() {\n    _classCallCheck(this, FrameView);\n\n    return _super2.apply(this, arguments);\n  }\n\n  _createClass(FrameView, [{\n    key: \"invalidate\",\n    value: function invalidate() {\n      this.element.innerHTML = \"\";\n    }\n  }, {\n    key: \"snapshot\",\n    get: function get() {\n      return new Snapshot(this.element);\n    }\n  }]);\n\n  return FrameView;\n}(View);\n\nvar LinkInterceptor = /*#__PURE__*/function () {\n  function LinkInterceptor(delegate, element) {\n    var _this4 = this;\n\n    _classCallCheck(this, LinkInterceptor);\n\n    this.clickBubbled = function (event) {\n      if (_this4.respondsToEventTarget(event.target)) {\n        _this4.clickEvent = event;\n      } else {\n        delete _this4.clickEvent;\n      }\n    };\n\n    this.linkClicked = function (event) {\n      if (_this4.clickEvent && _this4.respondsToEventTarget(event.target) && event.target instanceof Element) {\n        if (_this4.delegate.shouldInterceptLinkClick(event.target, event.detail.url)) {\n          _this4.clickEvent.preventDefault();\n\n          event.preventDefault();\n\n          _this4.delegate.linkClickIntercepted(event.target, event.detail.url);\n        }\n      }\n\n      delete _this4.clickEvent;\n    };\n\n    this.willVisit = function () {\n      delete _this4.clickEvent;\n    };\n\n    this.delegate = delegate;\n    this.element = element;\n  }\n\n  _createClass(LinkInterceptor, [{\n    key: \"start\",\n    value: function start() {\n      this.element.addEventListener(\"click\", this.clickBubbled);\n      document.addEventListener(\"turbo:click\", this.linkClicked);\n      document.addEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      this.element.removeEventListener(\"click\", this.clickBubbled);\n      document.removeEventListener(\"turbo:click\", this.linkClicked);\n      document.removeEventListener(\"turbo:before-visit\", this.willVisit);\n    }\n  }, {\n    key: \"respondsToEventTarget\",\n    value: function respondsToEventTarget(target) {\n      var element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n      return element && element.closest(\"turbo-frame, html\") == this.element;\n    }\n  }]);\n\n  return LinkInterceptor;\n}();\n\nvar Bardo = /*#__PURE__*/function () {\n  function Bardo(permanentElementMap) {\n    _classCallCheck(this, Bardo);\n\n    this.permanentElementMap = permanentElementMap;\n  }\n\n  _createClass(Bardo, [{\n    key: \"enter\",\n    value: function enter() {\n      for (var id in this.permanentElementMap) {\n        var _this$permanentElemen = _slicedToArray(this.permanentElementMap[id], 2),\n            newPermanentElement = _this$permanentElemen[1];\n\n        this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n      }\n    }\n  }, {\n    key: \"leave\",\n    value: function leave() {\n      for (var id in this.permanentElementMap) {\n        var _this$permanentElemen2 = _slicedToArray(this.permanentElementMap[id], 1),\n            currentPermanentElement = _this$permanentElemen2[0];\n\n        this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n        this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n      }\n    }\n  }, {\n    key: \"replaceNewPermanentElementWithPlaceholder\",\n    value: function replaceNewPermanentElementWithPlaceholder(permanentElement) {\n      var placeholder = createPlaceholderForPermanentElement(permanentElement);\n      permanentElement.replaceWith(placeholder);\n    }\n  }, {\n    key: \"replaceCurrentPermanentElementWithClone\",\n    value: function replaceCurrentPermanentElementWithClone(permanentElement) {\n      var clone = permanentElement.cloneNode(true);\n      permanentElement.replaceWith(clone);\n    }\n  }, {\n    key: \"replacePlaceholderWithPermanentElement\",\n    value: function replacePlaceholderWithPermanentElement(permanentElement) {\n      var placeholder = this.getPlaceholderById(permanentElement.id);\n      placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n    }\n  }, {\n    key: \"getPlaceholderById\",\n    value: function getPlaceholderById(id) {\n      return this.placeholders.find(function (element) {\n        return element.content == id;\n      });\n    }\n  }, {\n    key: \"placeholders\",\n    get: function get() {\n      return _toConsumableArray(document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\"));\n    }\n  }], [{\n    key: \"preservingPermanentElements\",\n    value: function preservingPermanentElements(permanentElementMap, callback) {\n      var bardo = new this(permanentElementMap);\n      bardo.enter();\n      callback();\n      bardo.leave();\n    }\n  }]);\n\n  return Bardo;\n}();\n\nfunction createPlaceholderForPermanentElement(permanentElement) {\n  var element = document.createElement(\"meta\");\n  element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n  element.setAttribute(\"content\", permanentElement.id);\n  return element;\n}\n\nvar Renderer = /*#__PURE__*/function () {\n  function Renderer(currentSnapshot, newSnapshot, isPreview) {\n    var _this5 = this;\n\n    _classCallCheck(this, Renderer);\n\n    this.currentSnapshot = currentSnapshot;\n    this.newSnapshot = newSnapshot;\n    this.isPreview = isPreview;\n    this.promise = new Promise(function (resolve, reject) {\n      return _this5.resolvingFunctions = {\n        resolve: resolve,\n        reject: reject\n      };\n    });\n  }\n\n  _createClass(Renderer, [{\n    key: \"shouldRender\",\n    get: function get() {\n      return true;\n    }\n  }, {\n    key: \"prepareToRender\",\n    value: function prepareToRender() {\n      return;\n    }\n  }, {\n    key: \"finishRendering\",\n    value: function finishRendering() {\n      if (this.resolvingFunctions) {\n        this.resolvingFunctions.resolve();\n        delete this.resolvingFunctions;\n      }\n    }\n  }, {\n    key: \"createScriptElement\",\n    value: function createScriptElement(element) {\n      if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n        return element;\n      } else {\n        var createdScriptElement = document.createElement(\"script\");\n        createdScriptElement.textContent = element.textContent;\n        createdScriptElement.async = false;\n        copyElementAttributes(createdScriptElement, element);\n        return createdScriptElement;\n      }\n    }\n  }, {\n    key: \"preservingPermanentElements\",\n    value: function preservingPermanentElements(callback) {\n      Bardo.preservingPermanentElements(this.permanentElementMap, callback);\n    }\n  }, {\n    key: \"focusFirstAutofocusableElement\",\n    value: function focusFirstAutofocusableElement() {\n      var element = this.connectedSnapshot.firstAutofocusableElement;\n\n      if (elementIsFocusable(element)) {\n        element.focus();\n      }\n    }\n  }, {\n    key: \"connectedSnapshot\",\n    get: function get() {\n      return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n    }\n  }, {\n    key: \"currentElement\",\n    get: function get() {\n      return this.currentSnapshot.element;\n    }\n  }, {\n    key: \"newElement\",\n    get: function get() {\n      return this.newSnapshot.element;\n    }\n  }, {\n    key: \"permanentElementMap\",\n    get: function get() {\n      return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n    }\n  }]);\n\n  return Renderer;\n}();\n\nfunction copyElementAttributes(destinationElement, sourceElement) {\n  for (var _i2 = 0, _arr2 = _toConsumableArray(sourceElement.attributes); _i2 < _arr2.length; _i2++) {\n    var _ref9 = _arr2[_i2];\n    var name = _ref9.name;\n    var value = _ref9.value;\n    destinationElement.setAttribute(name, value);\n  }\n}\n\nfunction elementIsFocusable(element) {\n  return element && typeof element.focus == \"function\";\n}\n\nvar FrameRenderer = /*#__PURE__*/function (_Renderer) {\n  _inherits(FrameRenderer, _Renderer);\n\n  var _super3 = _createSuper(FrameRenderer);\n\n  function FrameRenderer() {\n    _classCallCheck(this, FrameRenderer);\n\n    return _super3.apply(this, arguments);\n  }\n\n  _createClass(FrameRenderer, [{\n    key: \"shouldRender\",\n    get: function get() {\n      return true;\n    }\n  }, {\n    key: \"render\",\n    value: function () {\n      var _render2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {\n        var _this6 = this;\n\n        return _regeneratorRuntime.wrap(function _callee6$(_context6) {\n          while (1) {\n            switch (_context6.prev = _context6.next) {\n              case 0:\n                _context6.next = 2;\n                return nextAnimationFrame();\n\n              case 2:\n                this.preservingPermanentElements(function () {\n                  _this6.loadFrameElement();\n                });\n                this.scrollFrameIntoView();\n                _context6.next = 6;\n                return nextAnimationFrame();\n\n              case 6:\n                this.focusFirstAutofocusableElement();\n\n              case 7:\n              case \"end\":\n                return _context6.stop();\n            }\n          }\n        }, _callee6, this);\n      }));\n\n      function render() {\n        return _render2.apply(this, arguments);\n      }\n\n      return render;\n    }()\n  }, {\n    key: \"loadFrameElement\",\n    value: function loadFrameElement() {\n      var _a;\n\n      var destinationRange = document.createRange();\n      destinationRange.selectNodeContents(this.currentElement);\n      destinationRange.deleteContents();\n      var frameElement = this.newElement;\n      var sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n\n      if (sourceRange) {\n        sourceRange.selectNodeContents(frameElement);\n        this.currentElement.appendChild(sourceRange.extractContents());\n      }\n    }\n  }, {\n    key: \"scrollFrameIntoView\",\n    value: function scrollFrameIntoView() {\n      if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n        var element = this.currentElement.firstElementChild;\n        var block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n\n        if (element) {\n          element.scrollIntoView({\n            block: block\n          });\n          return true;\n        }\n      }\n\n      return false;\n    }\n  }]);\n\n  return FrameRenderer;\n}(Renderer);\n\nfunction readScrollLogicalPosition(value, defaultValue) {\n  if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n    return value;\n  } else {\n    return defaultValue;\n  }\n}\n\nvar ProgressBar = /*#__PURE__*/function () {\n  function ProgressBar() {\n    var _this7 = this;\n\n    _classCallCheck(this, ProgressBar);\n\n    this.hiding = false;\n    this.value = 0;\n    this.visible = false;\n\n    this.trickle = function () {\n      _this7.setValue(_this7.value + Math.random() / 100);\n    };\n\n    this.stylesheetElement = this.createStylesheetElement();\n    this.progressElement = this.createProgressElement();\n    this.installStylesheetElement();\n    this.setValue(0);\n  }\n\n  _createClass(ProgressBar, [{\n    key: \"show\",\n    value: function show() {\n      if (!this.visible) {\n        this.visible = true;\n        this.installProgressElement();\n        this.startTrickling();\n      }\n    }\n  }, {\n    key: \"hide\",\n    value: function hide() {\n      var _this8 = this;\n\n      if (this.visible && !this.hiding) {\n        this.hiding = true;\n        this.fadeProgressElement(function () {\n          _this8.uninstallProgressElement();\n\n          _this8.stopTrickling();\n\n          _this8.visible = false;\n          _this8.hiding = false;\n        });\n      }\n    }\n  }, {\n    key: \"setValue\",\n    value: function setValue(value) {\n      this.value = value;\n      this.refresh();\n    }\n  }, {\n    key: \"installStylesheetElement\",\n    value: function installStylesheetElement() {\n      document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n    }\n  }, {\n    key: \"installProgressElement\",\n    value: function installProgressElement() {\n      this.progressElement.style.width = \"0\";\n      this.progressElement.style.opacity = \"1\";\n      document.documentElement.insertBefore(this.progressElement, document.body);\n      this.refresh();\n    }\n  }, {\n    key: \"fadeProgressElement\",\n    value: function fadeProgressElement(callback) {\n      this.progressElement.style.opacity = \"0\";\n      setTimeout(callback, ProgressBar.animationDuration * 1.5);\n    }\n  }, {\n    key: \"uninstallProgressElement\",\n    value: function uninstallProgressElement() {\n      if (this.progressElement.parentNode) {\n        document.documentElement.removeChild(this.progressElement);\n      }\n    }\n  }, {\n    key: \"startTrickling\",\n    value: function startTrickling() {\n      if (!this.trickleInterval) {\n        this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n      }\n    }\n  }, {\n    key: \"stopTrickling\",\n    value: function stopTrickling() {\n      window.clearInterval(this.trickleInterval);\n      delete this.trickleInterval;\n    }\n  }, {\n    key: \"refresh\",\n    value: function refresh() {\n      var _this9 = this;\n\n      requestAnimationFrame(function () {\n        _this9.progressElement.style.width = \"\".concat(10 + _this9.value * 90, \"%\");\n      });\n    }\n  }, {\n    key: \"createStylesheetElement\",\n    value: function createStylesheetElement() {\n      var element = document.createElement(\"style\");\n      element.type = \"text/css\";\n      element.textContent = ProgressBar.defaultCSS;\n      return element;\n    }\n  }, {\n    key: \"createProgressElement\",\n    value: function createProgressElement() {\n      var element = document.createElement(\"div\");\n      element.className = \"turbo-progress-bar\";\n      return element;\n    }\n  }], [{\n    key: \"defaultCSS\",\n    get: function get() {\n      return unindent(_templateObject || (_templateObject = _taggedTemplateLiteral([\"\\n      .turbo-progress-bar {\\n        position: fixed;\\n        display: block;\\n        top: 0;\\n        left: 0;\\n        height: 3px;\\n        background: #0076ff;\\n        z-index: 9999;\\n        transition:\\n          width \", \"ms ease-out,\\n          opacity \", \"ms \", \"ms ease-in;\\n        transform: translate3d(0, 0, 0);\\n      }\\n    \"])), ProgressBar.animationDuration, ProgressBar.animationDuration / 2, ProgressBar.animationDuration / 2);\n    }\n  }]);\n\n  return ProgressBar;\n}();\n\nProgressBar.animationDuration = 300;\n\nvar HeadSnapshot = /*#__PURE__*/function (_Snapshot) {\n  _inherits(HeadSnapshot, _Snapshot);\n\n  var _super4 = _createSuper(HeadSnapshot);\n\n  function HeadSnapshot() {\n    var _this10;\n\n    _classCallCheck(this, HeadSnapshot);\n\n    _this10 = _super4.apply(this, arguments);\n    _this10.detailsByOuterHTML = _this10.children.reduce(function (result, element) {\n      var outerHTML = element.outerHTML;\n      var details = outerHTML in result ? result[outerHTML] : {\n        type: elementType(element),\n        tracked: elementIsTracked(element),\n        elements: []\n      };\n      return Object.assign(Object.assign({}, result), _defineProperty({}, outerHTML, Object.assign(Object.assign({}, details), {\n        elements: [].concat(_toConsumableArray(details.elements), [element])\n      })));\n    }, {});\n    return _this10;\n  }\n\n  _createClass(HeadSnapshot, [{\n    key: \"trackedElementSignature\",\n    get: function get() {\n      var _this11 = this;\n\n      return Object.keys(this.detailsByOuterHTML).filter(function (outerHTML) {\n        return _this11.detailsByOuterHTML[outerHTML].tracked;\n      }).join(\"\");\n    }\n  }, {\n    key: \"getScriptElementsNotInSnapshot\",\n    value: function getScriptElementsNotInSnapshot(snapshot) {\n      return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n    }\n  }, {\n    key: \"getStylesheetElementsNotInSnapshot\",\n    value: function getStylesheetElementsNotInSnapshot(snapshot) {\n      return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n    }\n  }, {\n    key: \"getElementsMatchingTypeNotInSnapshot\",\n    value: function getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n      var _this12 = this;\n\n      return Object.keys(this.detailsByOuterHTML).filter(function (outerHTML) {\n        return !(outerHTML in snapshot.detailsByOuterHTML);\n      }).map(function (outerHTML) {\n        return _this12.detailsByOuterHTML[outerHTML];\n      }).filter(function (_ref10) {\n        var type = _ref10.type;\n        return type == matchedType;\n      }).map(function (_ref11) {\n        var _ref11$elements = _slicedToArray(_ref11.elements, 1),\n            element = _ref11$elements[0];\n\n        return element;\n      });\n    }\n  }, {\n    key: \"provisionalElements\",\n    get: function get() {\n      var _this13 = this;\n\n      return Object.keys(this.detailsByOuterHTML).reduce(function (result, outerHTML) {\n        var _this13$detailsByOute = _this13.detailsByOuterHTML[outerHTML],\n            type = _this13$detailsByOute.type,\n            tracked = _this13$detailsByOute.tracked,\n            elements = _this13$detailsByOute.elements;\n\n        if (type == null && !tracked) {\n          return [].concat(_toConsumableArray(result), _toConsumableArray(elements));\n        } else if (elements.length > 1) {\n          return [].concat(_toConsumableArray(result), _toConsumableArray(elements.slice(1)));\n        } else {\n          return result;\n        }\n      }, []);\n    }\n  }, {\n    key: \"getMetaValue\",\n    value: function getMetaValue(name) {\n      var element = this.findMetaElementByName(name);\n      return element ? element.getAttribute(\"content\") : null;\n    }\n  }, {\n    key: \"findMetaElementByName\",\n    value: function findMetaElementByName(name) {\n      var _this14 = this;\n\n      return Object.keys(this.detailsByOuterHTML).reduce(function (result, outerHTML) {\n        var _this14$detailsByOute = _slicedToArray(_this14.detailsByOuterHTML[outerHTML].elements, 1),\n            element = _this14$detailsByOute[0];\n\n        return elementIsMetaElementWithName(element, name) ? element : result;\n      }, undefined);\n    }\n  }]);\n\n  return HeadSnapshot;\n}(Snapshot);\n\nfunction elementType(element) {\n  if (elementIsScript(element)) {\n    return \"script\";\n  } else if (elementIsStylesheet(element)) {\n    return \"stylesheet\";\n  }\n}\n\nfunction elementIsTracked(element) {\n  return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\n\nfunction elementIsScript(element) {\n  var tagName = element.tagName.toLowerCase();\n  return tagName == \"script\";\n}\n\nfunction elementIsStylesheet(element) {\n  var tagName = element.tagName.toLowerCase();\n  return tagName == \"style\" || tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\";\n}\n\nfunction elementIsMetaElementWithName(element, name) {\n  var tagName = element.tagName.toLowerCase();\n  return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\n\nvar PageSnapshot = /*#__PURE__*/function (_Snapshot2) {\n  _inherits(PageSnapshot, _Snapshot2);\n\n  var _super5 = _createSuper(PageSnapshot);\n\n  function PageSnapshot(element, headSnapshot) {\n    var _this15;\n\n    _classCallCheck(this, PageSnapshot);\n\n    _this15 = _super5.call(this, element);\n    _this15.headSnapshot = headSnapshot;\n    return _this15;\n  }\n\n  _createClass(PageSnapshot, [{\n    key: \"clone\",\n    value: function clone() {\n      return new PageSnapshot(this.element.cloneNode(true), this.headSnapshot);\n    }\n  }, {\n    key: \"headElement\",\n    get: function get() {\n      return this.headSnapshot.element;\n    }\n  }, {\n    key: \"rootLocation\",\n    get: function get() {\n      var _a;\n\n      var root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n      return expandURL(root);\n    }\n  }, {\n    key: \"cacheControlValue\",\n    get: function get() {\n      return this.getSetting(\"cache-control\");\n    }\n  }, {\n    key: \"isPreviewable\",\n    get: function get() {\n      return this.cacheControlValue != \"no-preview\";\n    }\n  }, {\n    key: \"isCacheable\",\n    get: function get() {\n      return this.cacheControlValue != \"no-cache\";\n    }\n  }, {\n    key: \"isVisitable\",\n    get: function get() {\n      return this.getSetting(\"visit-control\") != \"reload\";\n    }\n  }, {\n    key: \"getSetting\",\n    value: function getSetting(name) {\n      return this.headSnapshot.getMetaValue(\"turbo-\".concat(name));\n    }\n  }], [{\n    key: \"fromHTMLString\",\n    value: function fromHTMLString() {\n      var html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n      return this.fromDocument(parseHTMLDocument(html));\n    }\n  }, {\n    key: \"fromElement\",\n    value: function fromElement(element) {\n      return this.fromDocument(element.ownerDocument);\n    }\n  }, {\n    key: \"fromDocument\",\n    value: function fromDocument(_ref12) {\n      var head = _ref12.head,\n          body = _ref12.body;\n      return new this(body, new HeadSnapshot(head));\n    }\n  }]);\n\n  return PageSnapshot;\n}(Snapshot);\n\nvar TimingMetric;\n\n(function (TimingMetric) {\n  TimingMetric[\"visitStart\"] = \"visitStart\";\n  TimingMetric[\"requestStart\"] = \"requestStart\";\n  TimingMetric[\"requestEnd\"] = \"requestEnd\";\n  TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\n\nvar VisitState;\n\n(function (VisitState) {\n  VisitState[\"initialized\"] = \"initialized\";\n  VisitState[\"started\"] = \"started\";\n  VisitState[\"canceled\"] = \"canceled\";\n  VisitState[\"failed\"] = \"failed\";\n  VisitState[\"completed\"] = \"completed\";\n})(VisitState || (VisitState = {}));\n\nvar defaultOptions = {\n  action: \"advance\",\n  historyChanged: false\n};\nvar SystemStatusCode;\n\n(function (SystemStatusCode) {\n  SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n  SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n  SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\n\nvar Visit = /*#__PURE__*/function () {\n  function Visit(delegate, location, restorationIdentifier) {\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n    _classCallCheck(this, Visit);\n\n    this.identifier = uuid();\n    this.timingMetrics = {};\n    this.followedRedirect = false;\n    this.historyChanged = false;\n    this.scrolled = false;\n    this.snapshotCached = false;\n    this.state = VisitState.initialized;\n    this.delegate = delegate;\n    this.location = location;\n    this.restorationIdentifier = restorationIdentifier || uuid();\n\n    var _Object$assign2 = Object.assign(Object.assign({}, defaultOptions), options),\n        action = _Object$assign2.action,\n        historyChanged = _Object$assign2.historyChanged,\n        referrer = _Object$assign2.referrer,\n        snapshotHTML = _Object$assign2.snapshotHTML,\n        response = _Object$assign2.response;\n\n    this.action = action;\n    this.historyChanged = historyChanged;\n    this.referrer = referrer;\n    this.snapshotHTML = snapshotHTML;\n    this.response = response;\n  }\n\n  _createClass(Visit, [{\n    key: \"adapter\",\n    get: function get() {\n      return this.delegate.adapter;\n    }\n  }, {\n    key: \"view\",\n    get: function get() {\n      return this.delegate.view;\n    }\n  }, {\n    key: \"history\",\n    get: function get() {\n      return this.delegate.history;\n    }\n  }, {\n    key: \"restorationData\",\n    get: function get() {\n      return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n    }\n  }, {\n    key: \"start\",\n    value: function start() {\n      if (this.state == VisitState.initialized) {\n        this.recordTimingMetric(TimingMetric.visitStart);\n        this.state = VisitState.started;\n        this.adapter.visitStarted(this);\n        this.delegate.visitStarted(this);\n      }\n    }\n  }, {\n    key: \"cancel\",\n    value: function cancel() {\n      if (this.state == VisitState.started) {\n        if (this.request) {\n          this.request.cancel();\n        }\n\n        this.cancelRender();\n        this.state = VisitState.canceled;\n      }\n    }\n  }, {\n    key: \"complete\",\n    value: function complete() {\n      if (this.state == VisitState.started) {\n        this.recordTimingMetric(TimingMetric.visitEnd);\n        this.state = VisitState.completed;\n        this.adapter.visitCompleted(this);\n        this.delegate.visitCompleted(this);\n      }\n    }\n  }, {\n    key: \"fail\",\n    value: function fail() {\n      if (this.state == VisitState.started) {\n        this.state = VisitState.failed;\n        this.adapter.visitFailed(this);\n      }\n    }\n  }, {\n    key: \"changeHistory\",\n    value: function changeHistory() {\n      var _a;\n\n      if (!this.historyChanged) {\n        var actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n        var method = this.getHistoryMethodForAction(actionForHistory);\n        this.history.update(method, this.location, this.restorationIdentifier);\n        this.historyChanged = true;\n      }\n    }\n  }, {\n    key: \"issueRequest\",\n    value: function issueRequest() {\n      if (this.hasPreloadedResponse()) {\n        this.simulateRequest();\n      } else if (this.shouldIssueRequest() && !this.request) {\n        this.request = new FetchRequest(this, FetchMethod.get, this.location);\n        this.request.perform();\n      }\n    }\n  }, {\n    key: \"simulateRequest\",\n    value: function simulateRequest() {\n      if (this.response) {\n        this.startRequest();\n        this.recordResponse();\n        this.finishRequest();\n      }\n    }\n  }, {\n    key: \"startRequest\",\n    value: function startRequest() {\n      this.recordTimingMetric(TimingMetric.requestStart);\n      this.adapter.visitRequestStarted(this);\n    }\n  }, {\n    key: \"recordResponse\",\n    value: function recordResponse() {\n      var response = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.response;\n      this.response = response;\n\n      if (response) {\n        var statusCode = response.statusCode;\n\n        if (isSuccessful(statusCode)) {\n          this.adapter.visitRequestCompleted(this);\n        } else {\n          this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n        }\n      }\n    }\n  }, {\n    key: \"finishRequest\",\n    value: function finishRequest() {\n      this.recordTimingMetric(TimingMetric.requestEnd);\n      this.adapter.visitRequestFinished(this);\n    }\n  }, {\n    key: \"loadResponse\",\n    value: function loadResponse() {\n      var _this16 = this;\n\n      if (this.response) {\n        var _this$response = this.response,\n            statusCode = _this$response.statusCode,\n            responseHTML = _this$response.responseHTML;\n        this.render( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee7() {\n          return _regeneratorRuntime.wrap(function _callee7$(_context7) {\n            while (1) {\n              switch (_context7.prev = _context7.next) {\n                case 0:\n                  _this16.cacheSnapshot();\n\n                  if (!(isSuccessful(statusCode) && responseHTML != null)) {\n                    _context7.next = 8;\n                    break;\n                  }\n\n                  _context7.next = 4;\n                  return _this16.view.renderPage(PageSnapshot.fromHTMLString(responseHTML));\n\n                case 4:\n                  _this16.adapter.visitRendered(_this16);\n\n                  _this16.complete();\n\n                  _context7.next = 12;\n                  break;\n\n                case 8:\n                  _context7.next = 10;\n                  return _this16.view.renderError(PageSnapshot.fromHTMLString(responseHTML));\n\n                case 10:\n                  _this16.adapter.visitRendered(_this16);\n\n                  _this16.fail();\n\n                case 12:\n                case \"end\":\n                  return _context7.stop();\n              }\n            }\n          }, _callee7);\n        })));\n      }\n    }\n  }, {\n    key: \"getCachedSnapshot\",\n    value: function getCachedSnapshot() {\n      var snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\n\n      if (snapshot && (!getAnchor(this.location) || snapshot.hasAnchor(getAnchor(this.location)))) {\n        if (this.action == \"restore\" || snapshot.isPreviewable) {\n          return snapshot;\n        }\n      }\n    }\n  }, {\n    key: \"getPreloadedSnapshot\",\n    value: function getPreloadedSnapshot() {\n      if (this.snapshotHTML) {\n        return PageSnapshot.fromHTMLString(this.snapshotHTML);\n      }\n    }\n  }, {\n    key: \"hasCachedSnapshot\",\n    value: function hasCachedSnapshot() {\n      return this.getCachedSnapshot() != null;\n    }\n  }, {\n    key: \"loadCachedSnapshot\",\n    value: function loadCachedSnapshot() {\n      var _this17 = this;\n\n      var snapshot = this.getCachedSnapshot();\n\n      if (snapshot) {\n        var isPreview = this.shouldIssueRequest();\n        this.render( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee8() {\n          return _regeneratorRuntime.wrap(function _callee8$(_context8) {\n            while (1) {\n              switch (_context8.prev = _context8.next) {\n                case 0:\n                  _this17.cacheSnapshot();\n\n                  _context8.next = 3;\n                  return _this17.view.renderPage(snapshot, isPreview);\n\n                case 3:\n                  _this17.adapter.visitRendered(_this17);\n\n                  if (!isPreview) {\n                    _this17.complete();\n                  }\n\n                case 5:\n                case \"end\":\n                  return _context8.stop();\n              }\n            }\n          }, _callee8);\n        })));\n      }\n    }\n  }, {\n    key: \"followRedirect\",\n    value: function followRedirect() {\n      if (this.redirectedToLocation && !this.followedRedirect) {\n        this.location = this.redirectedToLocation;\n        this.history.replace(this.redirectedToLocation, this.restorationIdentifier);\n        this.followedRedirect = true;\n      }\n    }\n  }, {\n    key: \"requestStarted\",\n    value: function requestStarted() {\n      this.startRequest();\n    }\n  }, {\n    key: \"requestPreventedHandlingResponse\",\n    value: function requestPreventedHandlingResponse(request, response) {}\n  }, {\n    key: \"requestSucceededWithResponse\",\n    value: function () {\n      var _requestSucceededWithResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee9(request, response) {\n        var responseHTML;\n        return _regeneratorRuntime.wrap(function _callee9$(_context9) {\n          while (1) {\n            switch (_context9.prev = _context9.next) {\n              case 0:\n                _context9.next = 2;\n                return response.responseHTML;\n\n              case 2:\n                responseHTML = _context9.sent;\n\n                if (responseHTML == undefined) {\n                  this.recordResponse({\n                    statusCode: SystemStatusCode.contentTypeMismatch\n                  });\n                } else {\n                  this.redirectedToLocation = response.redirected ? response.location : undefined;\n                  this.recordResponse({\n                    statusCode: response.statusCode,\n                    responseHTML: responseHTML\n                  });\n                }\n\n              case 4:\n              case \"end\":\n                return _context9.stop();\n            }\n          }\n        }, _callee9, this);\n      }));\n\n      function requestSucceededWithResponse(_x4, _x5) {\n        return _requestSucceededWithResponse.apply(this, arguments);\n      }\n\n      return requestSucceededWithResponse;\n    }()\n  }, {\n    key: \"requestFailedWithResponse\",\n    value: function () {\n      var _requestFailedWithResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee10(request, response) {\n        var responseHTML;\n        return _regeneratorRuntime.wrap(function _callee10$(_context10) {\n          while (1) {\n            switch (_context10.prev = _context10.next) {\n              case 0:\n                _context10.next = 2;\n                return response.responseHTML;\n\n              case 2:\n                responseHTML = _context10.sent;\n\n                if (responseHTML == undefined) {\n                  this.recordResponse({\n                    statusCode: SystemStatusCode.contentTypeMismatch\n                  });\n                } else {\n                  this.recordResponse({\n                    statusCode: response.statusCode,\n                    responseHTML: responseHTML\n                  });\n                }\n\n              case 4:\n              case \"end\":\n                return _context10.stop();\n            }\n          }\n        }, _callee10, this);\n      }));\n\n      function requestFailedWithResponse(_x6, _x7) {\n        return _requestFailedWithResponse.apply(this, arguments);\n      }\n\n      return requestFailedWithResponse;\n    }()\n  }, {\n    key: \"requestErrored\",\n    value: function requestErrored(request, error) {\n      this.recordResponse({\n        statusCode: SystemStatusCode.networkFailure\n      });\n    }\n  }, {\n    key: \"requestFinished\",\n    value: function requestFinished() {\n      this.finishRequest();\n    }\n  }, {\n    key: \"performScroll\",\n    value: function performScroll() {\n      if (!this.scrolled) {\n        if (this.action == \"restore\") {\n          this.scrollToRestoredPosition() || this.scrollToTop();\n        } else {\n          this.scrollToAnchor() || this.scrollToTop();\n        }\n\n        this.scrolled = true;\n      }\n    }\n  }, {\n    key: \"scrollToRestoredPosition\",\n    value: function scrollToRestoredPosition() {\n      var scrollPosition = this.restorationData.scrollPosition;\n\n      if (scrollPosition) {\n        this.view.scrollToPosition(scrollPosition);\n        return true;\n      }\n    }\n  }, {\n    key: \"scrollToAnchor\",\n    value: function scrollToAnchor() {\n      if (getAnchor(this.location) != null) {\n        this.view.scrollToAnchor(getAnchor(this.location));\n        return true;\n      }\n    }\n  }, {\n    key: \"scrollToTop\",\n    value: function scrollToTop() {\n      this.view.scrollToPosition({\n        x: 0,\n        y: 0\n      });\n    }\n  }, {\n    key: \"recordTimingMetric\",\n    value: function recordTimingMetric(metric) {\n      this.timingMetrics[metric] = new Date().getTime();\n    }\n  }, {\n    key: \"getTimingMetrics\",\n    value: function getTimingMetrics() {\n      return Object.assign({}, this.timingMetrics);\n    }\n  }, {\n    key: \"getHistoryMethodForAction\",\n    value: function getHistoryMethodForAction(action) {\n      switch (action) {\n        case \"replace\":\n          return history.replaceState;\n\n        case \"advance\":\n        case \"restore\":\n          return history.pushState;\n      }\n    }\n  }, {\n    key: \"hasPreloadedResponse\",\n    value: function hasPreloadedResponse() {\n      return _typeof(this.response) == \"object\";\n    }\n  }, {\n    key: \"shouldIssueRequest\",\n    value: function shouldIssueRequest() {\n      return this.action == \"restore\" ? !this.hasCachedSnapshot() : true;\n    }\n  }, {\n    key: \"cacheSnapshot\",\n    value: function cacheSnapshot() {\n      if (!this.snapshotCached) {\n        this.view.cacheSnapshot();\n        this.snapshotCached = true;\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function () {\n      var _render3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee11(callback) {\n        var _this18 = this;\n\n        return _regeneratorRuntime.wrap(function _callee11$(_context11) {\n          while (1) {\n            switch (_context11.prev = _context11.next) {\n              case 0:\n                this.cancelRender();\n                _context11.next = 3;\n                return new Promise(function (resolve) {\n                  _this18.frame = requestAnimationFrame(function () {\n                    return resolve();\n                  });\n                });\n\n              case 3:\n                callback();\n                delete this.frame;\n                this.performScroll();\n\n              case 6:\n              case \"end\":\n                return _context11.stop();\n            }\n          }\n        }, _callee11, this);\n      }));\n\n      function render(_x8) {\n        return _render3.apply(this, arguments);\n      }\n\n      return render;\n    }()\n  }, {\n    key: \"cancelRender\",\n    value: function cancelRender() {\n      if (this.frame) {\n        cancelAnimationFrame(this.frame);\n        delete this.frame;\n      }\n    }\n  }]);\n\n  return Visit;\n}();\n\nfunction isSuccessful(statusCode) {\n  return statusCode >= 200 && statusCode < 300;\n}\n\nvar BrowserAdapter = /*#__PURE__*/function () {\n  function BrowserAdapter(session) {\n    var _this19 = this;\n\n    _classCallCheck(this, BrowserAdapter);\n\n    this.progressBar = new ProgressBar();\n\n    this.showProgressBar = function () {\n      _this19.progressBar.show();\n    };\n\n    this.session = session;\n  }\n\n  _createClass(BrowserAdapter, [{\n    key: \"visitProposedToLocation\",\n    value: function visitProposedToLocation(location, options) {\n      this.navigator.startVisit(location, uuid(), options);\n    }\n  }, {\n    key: \"visitStarted\",\n    value: function visitStarted(visit) {\n      visit.issueRequest();\n      visit.changeHistory();\n      visit.loadCachedSnapshot();\n    }\n  }, {\n    key: \"visitRequestStarted\",\n    value: function visitRequestStarted(visit) {\n      this.progressBar.setValue(0);\n\n      if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n        this.showProgressBarAfterDelay();\n      } else {\n        this.showProgressBar();\n      }\n    }\n  }, {\n    key: \"visitRequestCompleted\",\n    value: function visitRequestCompleted(visit) {\n      visit.loadResponse();\n    }\n  }, {\n    key: \"visitRequestFailedWithStatusCode\",\n    value: function visitRequestFailedWithStatusCode(visit, statusCode) {\n      switch (statusCode) {\n        case SystemStatusCode.networkFailure:\n        case SystemStatusCode.timeoutFailure:\n        case SystemStatusCode.contentTypeMismatch:\n          return this.reload();\n\n        default:\n          return visit.loadResponse();\n      }\n    }\n  }, {\n    key: \"visitRequestFinished\",\n    value: function visitRequestFinished(visit) {\n      this.progressBar.setValue(1);\n      this.hideProgressBar();\n    }\n  }, {\n    key: \"visitCompleted\",\n    value: function visitCompleted(visit) {\n      visit.followRedirect();\n    }\n  }, {\n    key: \"pageInvalidated\",\n    value: function pageInvalidated() {\n      this.reload();\n    }\n  }, {\n    key: \"visitFailed\",\n    value: function visitFailed(visit) {}\n  }, {\n    key: \"visitRendered\",\n    value: function visitRendered(visit) {}\n  }, {\n    key: \"showProgressBarAfterDelay\",\n    value: function showProgressBarAfterDelay() {\n      this.progressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n    }\n  }, {\n    key: \"hideProgressBar\",\n    value: function hideProgressBar() {\n      this.progressBar.hide();\n\n      if (this.progressBarTimeout != null) {\n        window.clearTimeout(this.progressBarTimeout);\n        delete this.progressBarTimeout;\n      }\n    }\n  }, {\n    key: \"reload\",\n    value: function reload() {\n      window.location.reload();\n    }\n  }, {\n    key: \"navigator\",\n    get: function get() {\n      return this.session.navigator;\n    }\n  }]);\n\n  return BrowserAdapter;\n}();\n\nvar FormSubmitObserver = /*#__PURE__*/function () {\n  function FormSubmitObserver(delegate) {\n    var _this20 = this;\n\n    _classCallCheck(this, FormSubmitObserver);\n\n    this.started = false;\n\n    this.submitCaptured = function () {\n      removeEventListener(\"submit\", _this20.submitBubbled, false);\n      addEventListener(\"submit\", _this20.submitBubbled, false);\n    };\n\n    this.submitBubbled = function (event) {\n      if (!event.defaultPrevented) {\n        var form = event.target instanceof HTMLFormElement ? event.target : undefined;\n        var submitter = event.submitter || undefined;\n\n        if (form) {\n          var method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.method;\n\n          if (method != \"dialog\" && _this20.delegate.willSubmitForm(form, submitter)) {\n            event.preventDefault();\n\n            _this20.delegate.formSubmitted(form, submitter);\n          }\n        }\n      }\n    };\n\n    this.delegate = delegate;\n  }\n\n  _createClass(FormSubmitObserver, [{\n    key: \"start\",\n    value: function start() {\n      if (!this.started) {\n        addEventListener(\"submit\", this.submitCaptured, true);\n        this.started = true;\n      }\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      if (this.started) {\n        removeEventListener(\"submit\", this.submitCaptured, true);\n        this.started = false;\n      }\n    }\n  }]);\n\n  return FormSubmitObserver;\n}();\n\nvar FrameRedirector = /*#__PURE__*/function () {\n  function FrameRedirector(element) {\n    _classCallCheck(this, FrameRedirector);\n\n    this.element = element;\n    this.linkInterceptor = new LinkInterceptor(this, element);\n    this.formInterceptor = new FormInterceptor(this, element);\n  }\n\n  _createClass(FrameRedirector, [{\n    key: \"start\",\n    value: function start() {\n      this.linkInterceptor.start();\n      this.formInterceptor.start();\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      this.linkInterceptor.stop();\n      this.formInterceptor.stop();\n    }\n  }, {\n    key: \"shouldInterceptLinkClick\",\n    value: function shouldInterceptLinkClick(element, url) {\n      return this.shouldRedirect(element);\n    }\n  }, {\n    key: \"linkClickIntercepted\",\n    value: function linkClickIntercepted(element, url) {\n      var frame = this.findFrameElement(element);\n\n      if (frame) {\n        frame.src = url;\n      }\n    }\n  }, {\n    key: \"shouldInterceptFormSubmission\",\n    value: function shouldInterceptFormSubmission(element, submitter) {\n      return this.shouldRedirect(element, submitter);\n    }\n  }, {\n    key: \"formSubmissionIntercepted\",\n    value: function formSubmissionIntercepted(element, submitter) {\n      var frame = this.findFrameElement(element);\n\n      if (frame) {\n        frame.delegate.formSubmissionIntercepted(element, submitter);\n      }\n    }\n  }, {\n    key: \"shouldRedirect\",\n    value: function shouldRedirect(element, submitter) {\n      var frame = this.findFrameElement(element);\n      return frame ? frame != element.closest(\"turbo-frame\") : false;\n    }\n  }, {\n    key: \"findFrameElement\",\n    value: function findFrameElement(element) {\n      var id = element.getAttribute(\"data-turbo-frame\");\n\n      if (id && id != \"_top\") {\n        var frame = this.element.querySelector(\"#\".concat(id, \":not([disabled])\"));\n\n        if (frame instanceof FrameElement) {\n          return frame;\n        }\n      }\n    }\n  }]);\n\n  return FrameRedirector;\n}();\n\nvar History = /*#__PURE__*/function () {\n  function History(delegate) {\n    var _this21 = this;\n\n    _classCallCheck(this, History);\n\n    this.restorationIdentifier = uuid();\n    this.restorationData = {};\n    this.started = false;\n    this.pageLoaded = false;\n\n    this.onPopState = function (event) {\n      if (_this21.shouldHandlePopState()) {\n        var _ref15 = event.state || {},\n            turbo = _ref15.turbo;\n\n        if (turbo) {\n          _this21.location = new URL(window.location.href);\n          var restorationIdentifier = turbo.restorationIdentifier;\n          _this21.restorationIdentifier = restorationIdentifier;\n\n          _this21.delegate.historyPoppedToLocationWithRestorationIdentifier(_this21.location, restorationIdentifier);\n        }\n      }\n    };\n\n    this.onPageLoad = /*#__PURE__*/function () {\n      var _ref16 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee12(event) {\n        return _regeneratorRuntime.wrap(function _callee12$(_context12) {\n          while (1) {\n            switch (_context12.prev = _context12.next) {\n              case 0:\n                _context12.next = 2;\n                return nextMicrotask();\n\n              case 2:\n                _this21.pageLoaded = true;\n\n              case 3:\n              case \"end\":\n                return _context12.stop();\n            }\n          }\n        }, _callee12);\n      }));\n\n      return function (_x9) {\n        return _ref16.apply(this, arguments);\n      };\n    }();\n\n    this.delegate = delegate;\n  }\n\n  _createClass(History, [{\n    key: \"start\",\n    value: function start() {\n      if (!this.started) {\n        addEventListener(\"popstate\", this.onPopState, false);\n        addEventListener(\"load\", this.onPageLoad, false);\n        this.started = true;\n        this.replace(new URL(window.location.href));\n      }\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      if (this.started) {\n        removeEventListener(\"popstate\", this.onPopState, false);\n        removeEventListener(\"load\", this.onPageLoad, false);\n        this.started = false;\n      }\n    }\n  }, {\n    key: \"push\",\n    value: function push(location, restorationIdentifier) {\n      this.update(history.pushState, location, restorationIdentifier);\n    }\n  }, {\n    key: \"replace\",\n    value: function replace(location, restorationIdentifier) {\n      this.update(history.replaceState, location, restorationIdentifier);\n    }\n  }, {\n    key: \"update\",\n    value: function update(method, location) {\n      var restorationIdentifier = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : uuid();\n      var state = {\n        turbo: {\n          restorationIdentifier: restorationIdentifier\n        }\n      };\n      method.call(history, state, \"\", location.href);\n      this.location = location;\n      this.restorationIdentifier = restorationIdentifier;\n    }\n  }, {\n    key: \"getRestorationDataForIdentifier\",\n    value: function getRestorationDataForIdentifier(restorationIdentifier) {\n      return this.restorationData[restorationIdentifier] || {};\n    }\n  }, {\n    key: \"updateRestorationData\",\n    value: function updateRestorationData(additionalData) {\n      var restorationIdentifier = this.restorationIdentifier;\n      var restorationData = this.restorationData[restorationIdentifier];\n      this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n    }\n  }, {\n    key: \"assumeControlOfScrollRestoration\",\n    value: function assumeControlOfScrollRestoration() {\n      var _a;\n\n      if (!this.previousScrollRestoration) {\n        this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n        history.scrollRestoration = \"manual\";\n      }\n    }\n  }, {\n    key: \"relinquishControlOfScrollRestoration\",\n    value: function relinquishControlOfScrollRestoration() {\n      if (this.previousScrollRestoration) {\n        history.scrollRestoration = this.previousScrollRestoration;\n        delete this.previousScrollRestoration;\n      }\n    }\n  }, {\n    key: \"shouldHandlePopState\",\n    value: function shouldHandlePopState() {\n      return this.pageIsLoaded();\n    }\n  }, {\n    key: \"pageIsLoaded\",\n    value: function pageIsLoaded() {\n      return this.pageLoaded || document.readyState == \"complete\";\n    }\n  }]);\n\n  return History;\n}();\n\nvar LinkClickObserver = /*#__PURE__*/function () {\n  function LinkClickObserver(delegate) {\n    var _this22 = this;\n\n    _classCallCheck(this, LinkClickObserver);\n\n    this.started = false;\n\n    this.clickCaptured = function () {\n      removeEventListener(\"click\", _this22.clickBubbled, false);\n      addEventListener(\"click\", _this22.clickBubbled, false);\n    };\n\n    this.clickBubbled = function (event) {\n      if (_this22.clickEventIsSignificant(event)) {\n        var link = _this22.findLinkFromClickTarget(event.target);\n\n        if (link) {\n          var _location = _this22.getLocationForLink(link);\n\n          if (_this22.delegate.willFollowLinkToLocation(link, _location)) {\n            event.preventDefault();\n\n            _this22.delegate.followedLinkToLocation(link, _location);\n          }\n        }\n      }\n    };\n\n    this.delegate = delegate;\n  }\n\n  _createClass(LinkClickObserver, [{\n    key: \"start\",\n    value: function start() {\n      if (!this.started) {\n        addEventListener(\"click\", this.clickCaptured, true);\n        this.started = true;\n      }\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      if (this.started) {\n        removeEventListener(\"click\", this.clickCaptured, true);\n        this.started = false;\n      }\n    }\n  }, {\n    key: \"clickEventIsSignificant\",\n    value: function clickEventIsSignificant(event) {\n      return !(event.target && event.target.isContentEditable || event.defaultPrevented || event.which > 1 || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey);\n    }\n  }, {\n    key: \"findLinkFromClickTarget\",\n    value: function findLinkFromClickTarget(target) {\n      if (target instanceof Element) {\n        return target.closest(\"a[href]:not([target^=_]):not([download])\");\n      }\n    }\n  }, {\n    key: \"getLocationForLink\",\n    value: function getLocationForLink(link) {\n      return expandURL(link.getAttribute(\"href\") || \"\");\n    }\n  }]);\n\n  return LinkClickObserver;\n}();\n\nfunction isAction(action) {\n  return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\n\nvar Navigator = /*#__PURE__*/function () {\n  function Navigator(delegate) {\n    _classCallCheck(this, Navigator);\n\n    this.delegate = delegate;\n  }\n\n  _createClass(Navigator, [{\n    key: \"proposeVisit\",\n    value: function proposeVisit(location) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n      if (this.delegate.allowsVisitingLocation(location)) {\n        this.delegate.visitProposedToLocation(location, options);\n      }\n    }\n  }, {\n    key: \"startVisit\",\n    value: function startVisit(locatable, restorationIdentifier) {\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      this.stop();\n      this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({\n        referrer: this.location\n      }, options));\n      this.currentVisit.start();\n    }\n  }, {\n    key: \"submitForm\",\n    value: function submitForm(form, submitter) {\n      this.stop();\n      this.formSubmission = new FormSubmission(this, form, submitter, true);\n\n      if (this.formSubmission.isIdempotent) {\n        this.proposeVisit(this.formSubmission.fetchRequest.url, {\n          action: this.getActionForFormSubmission(this.formSubmission)\n        });\n      } else {\n        this.formSubmission.start();\n      }\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      if (this.formSubmission) {\n        this.formSubmission.stop();\n        delete this.formSubmission;\n      }\n\n      if (this.currentVisit) {\n        this.currentVisit.cancel();\n        delete this.currentVisit;\n      }\n    }\n  }, {\n    key: \"adapter\",\n    get: function get() {\n      return this.delegate.adapter;\n    }\n  }, {\n    key: \"view\",\n    get: function get() {\n      return this.delegate.view;\n    }\n  }, {\n    key: \"history\",\n    get: function get() {\n      return this.delegate.history;\n    }\n  }, {\n    key: \"formSubmissionStarted\",\n    value: function formSubmissionStarted(formSubmission) {}\n  }, {\n    key: \"formSubmissionSucceededWithResponse\",\n    value: function () {\n      var _formSubmissionSucceededWithResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee13(formSubmission, fetchResponse) {\n        var responseHTML, statusCode, visitOptions;\n        return _regeneratorRuntime.wrap(function _callee13$(_context13) {\n          while (1) {\n            switch (_context13.prev = _context13.next) {\n              case 0:\n                if (!(formSubmission == this.formSubmission)) {\n                  _context13.next = 5;\n                  break;\n                }\n\n                _context13.next = 3;\n                return fetchResponse.responseHTML;\n\n              case 3:\n                responseHTML = _context13.sent;\n\n                if (responseHTML) {\n                  if (formSubmission.method != FetchMethod.get) {\n                    this.view.clearSnapshotCache();\n                  }\n\n                  statusCode = fetchResponse.statusCode;\n                  visitOptions = {\n                    response: {\n                      statusCode: statusCode,\n                      responseHTML: responseHTML\n                    }\n                  };\n                  this.proposeVisit(fetchResponse.location, visitOptions);\n                }\n\n              case 5:\n              case \"end\":\n                return _context13.stop();\n            }\n          }\n        }, _callee13, this);\n      }));\n\n      function formSubmissionSucceededWithResponse(_x10, _x11) {\n        return _formSubmissionSucceededWithResponse.apply(this, arguments);\n      }\n\n      return formSubmissionSucceededWithResponse;\n    }()\n  }, {\n    key: \"formSubmissionFailedWithResponse\",\n    value: function () {\n      var _formSubmissionFailedWithResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee14(formSubmission, fetchResponse) {\n        var responseHTML, snapshot;\n        return _regeneratorRuntime.wrap(function _callee14$(_context14) {\n          while (1) {\n            switch (_context14.prev = _context14.next) {\n              case 0:\n                _context14.next = 2;\n                return fetchResponse.responseHTML;\n\n              case 2:\n                responseHTML = _context14.sent;\n\n                if (!responseHTML) {\n                  _context14.next = 8;\n                  break;\n                }\n\n                snapshot = PageSnapshot.fromHTMLString(responseHTML);\n                _context14.next = 7;\n                return this.view.renderPage(snapshot);\n\n              case 7:\n                this.view.clearSnapshotCache();\n\n              case 8:\n              case \"end\":\n                return _context14.stop();\n            }\n          }\n        }, _callee14, this);\n      }));\n\n      function formSubmissionFailedWithResponse(_x12, _x13) {\n        return _formSubmissionFailedWithResponse.apply(this, arguments);\n      }\n\n      return formSubmissionFailedWithResponse;\n    }()\n  }, {\n    key: \"formSubmissionErrored\",\n    value: function formSubmissionErrored(formSubmission, error) {\n      console.error(error);\n    }\n  }, {\n    key: \"formSubmissionFinished\",\n    value: function formSubmissionFinished(formSubmission) {}\n  }, {\n    key: \"visitStarted\",\n    value: function visitStarted(visit) {\n      this.delegate.visitStarted(visit);\n    }\n  }, {\n    key: \"visitCompleted\",\n    value: function visitCompleted(visit) {\n      this.delegate.visitCompleted(visit);\n    }\n  }, {\n    key: \"location\",\n    get: function get() {\n      return this.history.location;\n    }\n  }, {\n    key: \"restorationIdentifier\",\n    get: function get() {\n      return this.history.restorationIdentifier;\n    }\n  }, {\n    key: \"getActionForFormSubmission\",\n    value: function getActionForFormSubmission(formSubmission) {\n      var formElement = formSubmission.formElement,\n          submitter = formSubmission.submitter;\n      var action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-action\")) || formElement.getAttribute(\"data-turbo-action\");\n      return isAction(action) ? action : \"advance\";\n    }\n  }]);\n\n  return Navigator;\n}();\n\nvar PageStage;\n\n(function (PageStage) {\n  PageStage[PageStage[\"initial\"] = 0] = \"initial\";\n  PageStage[PageStage[\"loading\"] = 1] = \"loading\";\n  PageStage[PageStage[\"interactive\"] = 2] = \"interactive\";\n  PageStage[PageStage[\"complete\"] = 3] = \"complete\";\n})(PageStage || (PageStage = {}));\n\nvar PageObserver = /*#__PURE__*/function () {\n  function PageObserver(delegate) {\n    var _this23 = this;\n\n    _classCallCheck(this, PageObserver);\n\n    this.stage = PageStage.initial;\n    this.started = false;\n\n    this.interpretReadyState = function () {\n      var readyState = _this23.readyState;\n\n      if (readyState == \"interactive\") {\n        _this23.pageIsInteractive();\n      } else if (readyState == \"complete\") {\n        _this23.pageIsComplete();\n      }\n    };\n\n    this.pageWillUnload = function () {\n      _this23.delegate.pageWillUnload();\n    };\n\n    this.delegate = delegate;\n  }\n\n  _createClass(PageObserver, [{\n    key: \"start\",\n    value: function start() {\n      if (!this.started) {\n        if (this.stage == PageStage.initial) {\n          this.stage = PageStage.loading;\n        }\n\n        document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n        addEventListener(\"pagehide\", this.pageWillUnload, false);\n        this.started = true;\n      }\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      if (this.started) {\n        document.removeEventListener(\"readystatechange\", this.interpretReadyState, false);\n        removeEventListener(\"pagehide\", this.pageWillUnload, false);\n        this.started = false;\n      }\n    }\n  }, {\n    key: \"pageIsInteractive\",\n    value: function pageIsInteractive() {\n      if (this.stage == PageStage.loading) {\n        this.stage = PageStage.interactive;\n        this.delegate.pageBecameInteractive();\n      }\n    }\n  }, {\n    key: \"pageIsComplete\",\n    value: function pageIsComplete() {\n      this.pageIsInteractive();\n\n      if (this.stage == PageStage.interactive) {\n        this.stage = PageStage.complete;\n        this.delegate.pageLoaded();\n      }\n    }\n  }, {\n    key: \"readyState\",\n    get: function get() {\n      return document.readyState;\n    }\n  }]);\n\n  return PageObserver;\n}();\n\nvar ScrollObserver = /*#__PURE__*/function () {\n  function ScrollObserver(delegate) {\n    var _this24 = this;\n\n    _classCallCheck(this, ScrollObserver);\n\n    this.started = false;\n\n    this.onScroll = function () {\n      _this24.updatePosition({\n        x: window.pageXOffset,\n        y: window.pageYOffset\n      });\n    };\n\n    this.delegate = delegate;\n  }\n\n  _createClass(ScrollObserver, [{\n    key: \"start\",\n    value: function start() {\n      if (!this.started) {\n        addEventListener(\"scroll\", this.onScroll, false);\n        this.onScroll();\n        this.started = true;\n      }\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      if (this.started) {\n        removeEventListener(\"scroll\", this.onScroll, false);\n        this.started = false;\n      }\n    }\n  }, {\n    key: \"updatePosition\",\n    value: function updatePosition(position) {\n      this.delegate.scrollPositionChanged(position);\n    }\n  }]);\n\n  return ScrollObserver;\n}();\n\nvar StreamObserver = /*#__PURE__*/function () {\n  function StreamObserver(delegate) {\n    var _this25 = this;\n\n    _classCallCheck(this, StreamObserver);\n\n    this.sources = new Set();\n    this.started = false;\n\n    this.inspectFetchResponse = function (event) {\n      var response = fetchResponseFromEvent(event);\n\n      if (response && fetchResponseIsStream(response)) {\n        event.preventDefault();\n\n        _this25.receiveMessageResponse(response);\n      }\n    };\n\n    this.receiveMessageEvent = function (event) {\n      if (_this25.started && typeof event.data == \"string\") {\n        _this25.receiveMessageHTML(event.data);\n      }\n    };\n\n    this.delegate = delegate;\n  }\n\n  _createClass(StreamObserver, [{\n    key: \"start\",\n    value: function start() {\n      if (!this.started) {\n        this.started = true;\n        addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n      }\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      if (this.started) {\n        this.started = false;\n        removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n      }\n    }\n  }, {\n    key: \"connectStreamSource\",\n    value: function connectStreamSource(source) {\n      if (!this.streamSourceIsConnected(source)) {\n        this.sources.add(source);\n        source.addEventListener(\"message\", this.receiveMessageEvent, false);\n      }\n    }\n  }, {\n    key: \"disconnectStreamSource\",\n    value: function disconnectStreamSource(source) {\n      if (this.streamSourceIsConnected(source)) {\n        this.sources.delete(source);\n        source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n      }\n    }\n  }, {\n    key: \"streamSourceIsConnected\",\n    value: function streamSourceIsConnected(source) {\n      return this.sources.has(source);\n    }\n  }, {\n    key: \"receiveMessageResponse\",\n    value: function () {\n      var _receiveMessageResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee15(response) {\n        var html;\n        return _regeneratorRuntime.wrap(function _callee15$(_context15) {\n          while (1) {\n            switch (_context15.prev = _context15.next) {\n              case 0:\n                _context15.next = 2;\n                return response.responseHTML;\n\n              case 2:\n                html = _context15.sent;\n\n                if (html) {\n                  this.receiveMessageHTML(html);\n                }\n\n              case 4:\n              case \"end\":\n                return _context15.stop();\n            }\n          }\n        }, _callee15, this);\n      }));\n\n      function receiveMessageResponse(_x14) {\n        return _receiveMessageResponse.apply(this, arguments);\n      }\n\n      return receiveMessageResponse;\n    }()\n  }, {\n    key: \"receiveMessageHTML\",\n    value: function receiveMessageHTML(html) {\n      this.delegate.receivedMessageFromStream(new StreamMessage(html));\n    }\n  }]);\n\n  return StreamObserver;\n}();\n\nfunction fetchResponseFromEvent(event) {\n  var _a;\n\n  var fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n\n  if (fetchResponse instanceof FetchResponse) {\n    return fetchResponse;\n  }\n}\n\nfunction fetchResponseIsStream(response) {\n  var _a;\n\n  var contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n  return contentType.startsWith(StreamMessage.contentType);\n}\n\nvar ErrorRenderer = /*#__PURE__*/function (_Renderer2) {\n  _inherits(ErrorRenderer, _Renderer2);\n\n  var _super6 = _createSuper(ErrorRenderer);\n\n  function ErrorRenderer() {\n    _classCallCheck(this, ErrorRenderer);\n\n    return _super6.apply(this, arguments);\n  }\n\n  _createClass(ErrorRenderer, [{\n    key: \"render\",\n    value: function () {\n      var _render4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee16() {\n        return _regeneratorRuntime.wrap(function _callee16$(_context16) {\n          while (1) {\n            switch (_context16.prev = _context16.next) {\n              case 0:\n                this.replaceHeadAndBody();\n                this.activateScriptElements();\n\n              case 2:\n              case \"end\":\n                return _context16.stop();\n            }\n          }\n        }, _callee16, this);\n      }));\n\n      function render() {\n        return _render4.apply(this, arguments);\n      }\n\n      return render;\n    }()\n  }, {\n    key: \"replaceHeadAndBody\",\n    value: function replaceHeadAndBody() {\n      var _document = document,\n          documentElement = _document.documentElement,\n          head = _document.head,\n          body = _document.body;\n      documentElement.replaceChild(this.newHead, head);\n      documentElement.replaceChild(this.newElement, body);\n    }\n  }, {\n    key: \"activateScriptElements\",\n    value: function activateScriptElements() {\n      var _iterator4 = _createForOfIteratorHelper(this.scriptElements),\n          _step4;\n\n      try {\n        for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {\n          var replaceableElement = _step4.value;\n          var parentNode = replaceableElement.parentNode;\n\n          if (parentNode) {\n            var element = this.createScriptElement(replaceableElement);\n            parentNode.replaceChild(element, replaceableElement);\n          }\n        }\n      } catch (err) {\n        _iterator4.e(err);\n      } finally {\n        _iterator4.f();\n      }\n    }\n  }, {\n    key: \"newHead\",\n    get: function get() {\n      return this.newSnapshot.headSnapshot.element;\n    }\n  }, {\n    key: \"scriptElements\",\n    get: function get() {\n      return _toConsumableArray(document.documentElement.querySelectorAll(\"script\"));\n    }\n  }]);\n\n  return ErrorRenderer;\n}(Renderer);\n\nvar PageRenderer = /*#__PURE__*/function (_Renderer3) {\n  _inherits(PageRenderer, _Renderer3);\n\n  var _super7 = _createSuper(PageRenderer);\n\n  function PageRenderer() {\n    _classCallCheck(this, PageRenderer);\n\n    return _super7.apply(this, arguments);\n  }\n\n  _createClass(PageRenderer, [{\n    key: \"shouldRender\",\n    get: function get() {\n      return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n    }\n  }, {\n    key: \"prepareToRender\",\n    value: function prepareToRender() {\n      this.mergeHead();\n    }\n  }, {\n    key: \"render\",\n    value: function () {\n      var _render5 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee17() {\n        return _regeneratorRuntime.wrap(function _callee17$(_context17) {\n          while (1) {\n            switch (_context17.prev = _context17.next) {\n              case 0:\n                this.replaceBody();\n\n              case 1:\n              case \"end\":\n                return _context17.stop();\n            }\n          }\n        }, _callee17, this);\n      }));\n\n      function render() {\n        return _render5.apply(this, arguments);\n      }\n\n      return render;\n    }()\n  }, {\n    key: \"finishRendering\",\n    value: function finishRendering() {\n      _get(_getPrototypeOf(PageRenderer.prototype), \"finishRendering\", this).call(this);\n\n      if (!this.isPreview) {\n        this.focusFirstAutofocusableElement();\n      }\n    }\n  }, {\n    key: \"currentHeadSnapshot\",\n    get: function get() {\n      return this.currentSnapshot.headSnapshot;\n    }\n  }, {\n    key: \"newHeadSnapshot\",\n    get: function get() {\n      return this.newSnapshot.headSnapshot;\n    }\n  }, {\n    key: \"newElement\",\n    get: function get() {\n      return this.newSnapshot.element;\n    }\n  }, {\n    key: \"mergeHead\",\n    value: function mergeHead() {\n      this.copyNewHeadStylesheetElements();\n      this.copyNewHeadScriptElements();\n      this.removeCurrentHeadProvisionalElements();\n      this.copyNewHeadProvisionalElements();\n    }\n  }, {\n    key: \"replaceBody\",\n    value: function replaceBody() {\n      var _this26 = this;\n\n      this.preservingPermanentElements(function () {\n        _this26.activateNewBody();\n\n        _this26.assignNewBody();\n      });\n    }\n  }, {\n    key: \"trackedElementsAreIdentical\",\n    get: function get() {\n      return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n    }\n  }, {\n    key: \"copyNewHeadStylesheetElements\",\n    value: function copyNewHeadStylesheetElements() {\n      var _iterator5 = _createForOfIteratorHelper(this.newHeadStylesheetElements),\n          _step5;\n\n      try {\n        for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {\n          var element = _step5.value;\n          document.head.appendChild(element);\n        }\n      } catch (err) {\n        _iterator5.e(err);\n      } finally {\n        _iterator5.f();\n      }\n    }\n  }, {\n    key: \"copyNewHeadScriptElements\",\n    value: function copyNewHeadScriptElements() {\n      var _iterator6 = _createForOfIteratorHelper(this.newHeadScriptElements),\n          _step6;\n\n      try {\n        for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {\n          var element = _step6.value;\n          document.head.appendChild(this.createScriptElement(element));\n        }\n      } catch (err) {\n        _iterator6.e(err);\n      } finally {\n        _iterator6.f();\n      }\n    }\n  }, {\n    key: \"removeCurrentHeadProvisionalElements\",\n    value: function removeCurrentHeadProvisionalElements() {\n      var _iterator7 = _createForOfIteratorHelper(this.currentHeadProvisionalElements),\n          _step7;\n\n      try {\n        for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {\n          var element = _step7.value;\n          document.head.removeChild(element);\n        }\n      } catch (err) {\n        _iterator7.e(err);\n      } finally {\n        _iterator7.f();\n      }\n    }\n  }, {\n    key: \"copyNewHeadProvisionalElements\",\n    value: function copyNewHeadProvisionalElements() {\n      var _iterator8 = _createForOfIteratorHelper(this.newHeadProvisionalElements),\n          _step8;\n\n      try {\n        for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {\n          var element = _step8.value;\n          document.head.appendChild(element);\n        }\n      } catch (err) {\n        _iterator8.e(err);\n      } finally {\n        _iterator8.f();\n      }\n    }\n  }, {\n    key: \"activateNewBody\",\n    value: function activateNewBody() {\n      document.adoptNode(this.newElement);\n      this.activateNewBodyScriptElements();\n    }\n  }, {\n    key: \"activateNewBodyScriptElements\",\n    value: function activateNewBodyScriptElements() {\n      var _iterator9 = _createForOfIteratorHelper(this.newBodyScriptElements),\n          _step9;\n\n      try {\n        for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {\n          var inertScriptElement = _step9.value;\n          var activatedScriptElement = this.createScriptElement(inertScriptElement);\n          inertScriptElement.replaceWith(activatedScriptElement);\n        }\n      } catch (err) {\n        _iterator9.e(err);\n      } finally {\n        _iterator9.f();\n      }\n    }\n  }, {\n    key: \"assignNewBody\",\n    value: function assignNewBody() {\n      if (document.body && this.newElement instanceof HTMLBodyElement) {\n        document.body.replaceWith(this.newElement);\n      } else {\n        document.documentElement.appendChild(this.newElement);\n      }\n    }\n  }, {\n    key: \"newHeadStylesheetElements\",\n    get: function get() {\n      return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n  }, {\n    key: \"newHeadScriptElements\",\n    get: function get() {\n      return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n  }, {\n    key: \"currentHeadProvisionalElements\",\n    get: function get() {\n      return this.currentHeadSnapshot.provisionalElements;\n    }\n  }, {\n    key: \"newHeadProvisionalElements\",\n    get: function get() {\n      return this.newHeadSnapshot.provisionalElements;\n    }\n  }, {\n    key: \"newBodyScriptElements\",\n    get: function get() {\n      return _toConsumableArray(this.newElement.querySelectorAll(\"script\"));\n    }\n  }]);\n\n  return PageRenderer;\n}(Renderer);\n\nvar SnapshotCache = /*#__PURE__*/function () {\n  function SnapshotCache(size) {\n    _classCallCheck(this, SnapshotCache);\n\n    this.keys = [];\n    this.snapshots = {};\n    this.size = size;\n  }\n\n  _createClass(SnapshotCache, [{\n    key: \"has\",\n    value: function has(location) {\n      return toCacheKey(location) in this.snapshots;\n    }\n  }, {\n    key: \"get\",\n    value: function get(location) {\n      if (this.has(location)) {\n        var snapshot = this.read(location);\n        this.touch(location);\n        return snapshot;\n      }\n    }\n  }, {\n    key: \"put\",\n    value: function put(location, snapshot) {\n      this.write(location, snapshot);\n      this.touch(location);\n      return snapshot;\n    }\n  }, {\n    key: \"clear\",\n    value: function clear() {\n      this.snapshots = {};\n    }\n  }, {\n    key: \"read\",\n    value: function read(location) {\n      return this.snapshots[toCacheKey(location)];\n    }\n  }, {\n    key: \"write\",\n    value: function write(location, snapshot) {\n      this.snapshots[toCacheKey(location)] = snapshot;\n    }\n  }, {\n    key: \"touch\",\n    value: function touch(location) {\n      var key = toCacheKey(location);\n      var index = this.keys.indexOf(key);\n      if (index > -1) this.keys.splice(index, 1);\n      this.keys.unshift(key);\n      this.trim();\n    }\n  }, {\n    key: \"trim\",\n    value: function trim() {\n      var _iterator10 = _createForOfIteratorHelper(this.keys.splice(this.size)),\n          _step10;\n\n      try {\n        for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {\n          var key = _step10.value;\n          delete this.snapshots[key];\n        }\n      } catch (err) {\n        _iterator10.e(err);\n      } finally {\n        _iterator10.f();\n      }\n    }\n  }]);\n\n  return SnapshotCache;\n}();\n\nvar PageView = /*#__PURE__*/function (_View2) {\n  _inherits(PageView, _View2);\n\n  var _super8 = _createSuper(PageView);\n\n  function PageView() {\n    var _this27;\n\n    _classCallCheck(this, PageView);\n\n    _this27 = _super8.apply(this, arguments);\n    _this27.snapshotCache = new SnapshotCache(10);\n    _this27.lastRenderedLocation = new URL(location.href);\n    return _this27;\n  }\n\n  _createClass(PageView, [{\n    key: \"renderPage\",\n    value: function renderPage(snapshot) {\n      var isPreview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var renderer = new PageRenderer(this.snapshot, snapshot, isPreview);\n      return this.render(renderer);\n    }\n  }, {\n    key: \"renderError\",\n    value: function renderError(snapshot) {\n      var renderer = new ErrorRenderer(this.snapshot, snapshot, false);\n      this.render(renderer);\n    }\n  }, {\n    key: \"clearSnapshotCache\",\n    value: function clearSnapshotCache() {\n      this.snapshotCache.clear();\n    }\n  }, {\n    key: \"cacheSnapshot\",\n    value: function () {\n      var _cacheSnapshot = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee18() {\n        var snapshot, _location2;\n\n        return _regeneratorRuntime.wrap(function _callee18$(_context18) {\n          while (1) {\n            switch (_context18.prev = _context18.next) {\n              case 0:\n                if (!this.shouldCacheSnapshot) {\n                  _context18.next = 6;\n                  break;\n                }\n\n                this.delegate.viewWillCacheSnapshot();\n                snapshot = this.snapshot, _location2 = this.lastRenderedLocation;\n                _context18.next = 5;\n                return nextEventLoopTick();\n\n              case 5:\n                this.snapshotCache.put(_location2, snapshot.clone());\n\n              case 6:\n              case \"end\":\n                return _context18.stop();\n            }\n          }\n        }, _callee18, this);\n      }));\n\n      function cacheSnapshot() {\n        return _cacheSnapshot.apply(this, arguments);\n      }\n\n      return cacheSnapshot;\n    }()\n  }, {\n    key: \"getCachedSnapshotForLocation\",\n    value: function getCachedSnapshotForLocation(location) {\n      return this.snapshotCache.get(location);\n    }\n  }, {\n    key: \"snapshot\",\n    get: function get() {\n      return PageSnapshot.fromElement(this.element);\n    }\n  }, {\n    key: \"shouldCacheSnapshot\",\n    get: function get() {\n      return this.snapshot.isCacheable;\n    }\n  }]);\n\n  return PageView;\n}(View);\n\nvar Session = /*#__PURE__*/function () {\n  function Session() {\n    _classCallCheck(this, Session);\n\n    this.navigator = new Navigator(this);\n    this.history = new History(this);\n    this.view = new PageView(this, document.documentElement);\n    this.adapter = new BrowserAdapter(this);\n    this.pageObserver = new PageObserver(this);\n    this.linkClickObserver = new LinkClickObserver(this);\n    this.formSubmitObserver = new FormSubmitObserver(this);\n    this.scrollObserver = new ScrollObserver(this);\n    this.streamObserver = new StreamObserver(this);\n    this.frameRedirector = new FrameRedirector(document.documentElement);\n    this.enabled = true;\n    this.progressBarDelay = 500;\n    this.started = false;\n  }\n\n  _createClass(Session, [{\n    key: \"start\",\n    value: function start() {\n      if (!this.started) {\n        this.pageObserver.start();\n        this.linkClickObserver.start();\n        this.formSubmitObserver.start();\n        this.scrollObserver.start();\n        this.streamObserver.start();\n        this.frameRedirector.start();\n        this.history.start();\n        this.started = true;\n        this.enabled = true;\n      }\n    }\n  }, {\n    key: \"disable\",\n    value: function disable() {\n      this.enabled = false;\n    }\n  }, {\n    key: \"stop\",\n    value: function stop() {\n      if (this.started) {\n        this.pageObserver.stop();\n        this.linkClickObserver.stop();\n        this.formSubmitObserver.stop();\n        this.scrollObserver.stop();\n        this.streamObserver.stop();\n        this.frameRedirector.stop();\n        this.history.stop();\n        this.started = false;\n      }\n    }\n  }, {\n    key: \"registerAdapter\",\n    value: function registerAdapter(adapter) {\n      this.adapter = adapter;\n    }\n  }, {\n    key: \"visit\",\n    value: function visit(location) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      this.navigator.proposeVisit(expandURL(location), options);\n    }\n  }, {\n    key: \"connectStreamSource\",\n    value: function connectStreamSource(source) {\n      this.streamObserver.connectStreamSource(source);\n    }\n  }, {\n    key: \"disconnectStreamSource\",\n    value: function disconnectStreamSource(source) {\n      this.streamObserver.disconnectStreamSource(source);\n    }\n  }, {\n    key: \"renderStreamMessage\",\n    value: function renderStreamMessage(message) {\n      document.documentElement.appendChild(StreamMessage.wrap(message).fragment);\n    }\n  }, {\n    key: \"clearCache\",\n    value: function clearCache() {\n      this.view.clearSnapshotCache();\n    }\n  }, {\n    key: \"setProgressBarDelay\",\n    value: function setProgressBarDelay(delay) {\n      this.progressBarDelay = delay;\n    }\n  }, {\n    key: \"location\",\n    get: function get() {\n      return this.history.location;\n    }\n  }, {\n    key: \"restorationIdentifier\",\n    get: function get() {\n      return this.history.restorationIdentifier;\n    }\n  }, {\n    key: \"historyPoppedToLocationWithRestorationIdentifier\",\n    value: function historyPoppedToLocationWithRestorationIdentifier(location) {\n      if (this.enabled) {\n        this.navigator.proposeVisit(location, {\n          action: \"restore\",\n          historyChanged: true\n        });\n      } else {\n        this.adapter.pageInvalidated();\n      }\n    }\n  }, {\n    key: \"scrollPositionChanged\",\n    value: function scrollPositionChanged(position) {\n      this.history.updateRestorationData({\n        scrollPosition: position\n      });\n    }\n  }, {\n    key: \"willFollowLinkToLocation\",\n    value: function willFollowLinkToLocation(link, location) {\n      return elementIsNavigable(link) && this.locationIsVisitable(location) && this.applicationAllowsFollowingLinkToLocation(link, location);\n    }\n  }, {\n    key: \"followedLinkToLocation\",\n    value: function followedLinkToLocation(link, location) {\n      var action = this.getActionForLink(link);\n      this.visit(location.href, {\n        action: action\n      });\n    }\n  }, {\n    key: \"allowsVisitingLocation\",\n    value: function allowsVisitingLocation(location) {\n      return this.applicationAllowsVisitingLocation(location);\n    }\n  }, {\n    key: \"visitProposedToLocation\",\n    value: function visitProposedToLocation(location, options) {\n      extendURLWithDeprecatedProperties(location);\n      this.adapter.visitProposedToLocation(location, options);\n    }\n  }, {\n    key: \"visitStarted\",\n    value: function visitStarted(visit) {\n      extendURLWithDeprecatedProperties(visit.location);\n      this.notifyApplicationAfterVisitingLocation(visit.location);\n    }\n  }, {\n    key: \"visitCompleted\",\n    value: function visitCompleted(visit) {\n      this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n    }\n  }, {\n    key: \"willSubmitForm\",\n    value: function willSubmitForm(form, submitter) {\n      return elementIsNavigable(form) && elementIsNavigable(submitter);\n    }\n  }, {\n    key: \"formSubmitted\",\n    value: function formSubmitted(form, submitter) {\n      this.navigator.submitForm(form, submitter);\n    }\n  }, {\n    key: \"pageBecameInteractive\",\n    value: function pageBecameInteractive() {\n      this.view.lastRenderedLocation = this.location;\n      this.notifyApplicationAfterPageLoad();\n    }\n  }, {\n    key: \"pageLoaded\",\n    value: function pageLoaded() {\n      this.history.assumeControlOfScrollRestoration();\n    }\n  }, {\n    key: \"pageWillUnload\",\n    value: function pageWillUnload() {\n      this.history.relinquishControlOfScrollRestoration();\n    }\n  }, {\n    key: \"receivedMessageFromStream\",\n    value: function receivedMessageFromStream(message) {\n      this.renderStreamMessage(message);\n    }\n  }, {\n    key: \"viewWillCacheSnapshot\",\n    value: function viewWillCacheSnapshot() {\n      this.notifyApplicationBeforeCachingSnapshot();\n    }\n  }, {\n    key: \"viewWillRenderSnapshot\",\n    value: function viewWillRenderSnapshot(_ref17, isPreview) {\n      var element = _ref17.element;\n      this.notifyApplicationBeforeRender(element);\n    }\n  }, {\n    key: \"viewRenderedSnapshot\",\n    value: function viewRenderedSnapshot(snapshot, isPreview) {\n      this.view.lastRenderedLocation = this.history.location;\n      this.notifyApplicationAfterRender();\n    }\n  }, {\n    key: \"viewInvalidated\",\n    value: function viewInvalidated() {\n      this.adapter.pageInvalidated();\n    }\n  }, {\n    key: \"applicationAllowsFollowingLinkToLocation\",\n    value: function applicationAllowsFollowingLinkToLocation(link, location) {\n      var event = this.notifyApplicationAfterClickingLinkToLocation(link, location);\n      return !event.defaultPrevented;\n    }\n  }, {\n    key: \"applicationAllowsVisitingLocation\",\n    value: function applicationAllowsVisitingLocation(location) {\n      var event = this.notifyApplicationBeforeVisitingLocation(location);\n      return !event.defaultPrevented;\n    }\n  }, {\n    key: \"notifyApplicationAfterClickingLinkToLocation\",\n    value: function notifyApplicationAfterClickingLinkToLocation(link, location) {\n      return dispatch(\"turbo:click\", {\n        target: link,\n        detail: {\n          url: location.href\n        },\n        cancelable: true\n      });\n    }\n  }, {\n    key: \"notifyApplicationBeforeVisitingLocation\",\n    value: function notifyApplicationBeforeVisitingLocation(location) {\n      return dispatch(\"turbo:before-visit\", {\n        detail: {\n          url: location.href\n        },\n        cancelable: true\n      });\n    }\n  }, {\n    key: \"notifyApplicationAfterVisitingLocation\",\n    value: function notifyApplicationAfterVisitingLocation(location) {\n      return dispatch(\"turbo:visit\", {\n        detail: {\n          url: location.href\n        }\n      });\n    }\n  }, {\n    key: \"notifyApplicationBeforeCachingSnapshot\",\n    value: function notifyApplicationBeforeCachingSnapshot() {\n      return dispatch(\"turbo:before-cache\");\n    }\n  }, {\n    key: \"notifyApplicationBeforeRender\",\n    value: function notifyApplicationBeforeRender(newBody) {\n      return dispatch(\"turbo:before-render\", {\n        detail: {\n          newBody: newBody\n        }\n      });\n    }\n  }, {\n    key: \"notifyApplicationAfterRender\",\n    value: function notifyApplicationAfterRender() {\n      return dispatch(\"turbo:render\");\n    }\n  }, {\n    key: \"notifyApplicationAfterPageLoad\",\n    value: function notifyApplicationAfterPageLoad() {\n      var timing = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      return dispatch(\"turbo:load\", {\n        detail: {\n          url: this.location.href,\n          timing: timing\n        }\n      });\n    }\n  }, {\n    key: \"getActionForLink\",\n    value: function getActionForLink(link) {\n      var action = link.getAttribute(\"data-turbo-action\");\n      return isAction(action) ? action : \"advance\";\n    }\n  }, {\n    key: \"locationIsVisitable\",\n    value: function locationIsVisitable(location) {\n      return isPrefixedBy(location, this.snapshot.rootLocation) && isHTML(location);\n    }\n  }, {\n    key: \"snapshot\",\n    get: function get() {\n      return this.view.snapshot;\n    }\n  }]);\n\n  return Session;\n}();\n\nfunction elementIsNavigable(element) {\n  var container = element === null || element === void 0 ? void 0 : element.closest(\"[data-turbo]\");\n\n  if (container) {\n    return container.getAttribute(\"data-turbo\") != \"false\";\n  } else {\n    return true;\n  }\n}\n\nfunction extendURLWithDeprecatedProperties(url) {\n  Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\n\nvar deprecatedLocationPropertyDescriptors = {\n  absoluteURL: {\n    get: function get() {\n      return this.toString();\n    }\n  }\n};\n\nvar FrameController = /*#__PURE__*/function () {\n  function FrameController(element) {\n    _classCallCheck(this, FrameController);\n\n    this.resolveVisitPromise = function () {};\n\n    this.connected = false;\n    this.hasBeenLoaded = false;\n    this.settingSourceURL = false;\n    this.element = element;\n    this.view = new FrameView(this, this.element);\n    this.appearanceObserver = new AppearanceObserver(this, this.element);\n    this.linkInterceptor = new LinkInterceptor(this, this.element);\n    this.formInterceptor = new FormInterceptor(this, this.element);\n  }\n\n  _createClass(FrameController, [{\n    key: \"connect\",\n    value: function connect() {\n      if (!this.connected) {\n        this.connected = true;\n\n        if (this.loadingStyle == FrameLoadingStyle.lazy) {\n          this.appearanceObserver.start();\n        }\n\n        this.linkInterceptor.start();\n        this.formInterceptor.start();\n        this.sourceURLChanged();\n      }\n    }\n  }, {\n    key: \"disconnect\",\n    value: function disconnect() {\n      if (this.connected) {\n        this.connected = false;\n        this.appearanceObserver.stop();\n        this.linkInterceptor.stop();\n        this.formInterceptor.stop();\n      }\n    }\n  }, {\n    key: \"disabledChanged\",\n    value: function disabledChanged() {\n      if (this.loadingStyle == FrameLoadingStyle.eager) {\n        this.loadSourceURL();\n      }\n    }\n  }, {\n    key: \"sourceURLChanged\",\n    value: function sourceURLChanged() {\n      if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n        this.loadSourceURL();\n      }\n    }\n  }, {\n    key: \"loadingStyleChanged\",\n    value: function loadingStyleChanged() {\n      if (this.loadingStyle == FrameLoadingStyle.lazy) {\n        this.appearanceObserver.start();\n      } else {\n        this.appearanceObserver.stop();\n        this.loadSourceURL();\n      }\n    }\n  }, {\n    key: \"loadSourceURL\",\n    value: function () {\n      var _loadSourceURL = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee19() {\n        var previousURL;\n        return _regeneratorRuntime.wrap(function _callee19$(_context19) {\n          while (1) {\n            switch (_context19.prev = _context19.next) {\n              case 0:\n                if (!(!this.settingSourceURL && this.enabled && this.isActive && this.sourceURL != this.currentURL)) {\n                  _context19.next = 16;\n                  break;\n                }\n\n                previousURL = this.currentURL;\n                this.currentURL = this.sourceURL;\n\n                if (!this.sourceURL) {\n                  _context19.next = 16;\n                  break;\n                }\n\n                _context19.prev = 4;\n                this.element.loaded = this.visit(this.sourceURL);\n                this.appearanceObserver.stop();\n                _context19.next = 9;\n                return this.element.loaded;\n\n              case 9:\n                this.hasBeenLoaded = true;\n                _context19.next = 16;\n                break;\n\n              case 12:\n                _context19.prev = 12;\n                _context19.t0 = _context19[\"catch\"](4);\n                this.currentURL = previousURL;\n                throw _context19.t0;\n\n              case 16:\n              case \"end\":\n                return _context19.stop();\n            }\n          }\n        }, _callee19, this, [[4, 12]]);\n      }));\n\n      function loadSourceURL() {\n        return _loadSourceURL.apply(this, arguments);\n      }\n\n      return loadSourceURL;\n    }()\n  }, {\n    key: \"loadResponse\",\n    value: function () {\n      var _loadResponse = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee20(fetchResponse) {\n        var html, _parseHTMLDocument, body, snapshot, renderer;\n\n        return _regeneratorRuntime.wrap(function _callee20$(_context20) {\n          while (1) {\n            switch (_context20.prev = _context20.next) {\n              case 0:\n                if (fetchResponse.redirected) {\n                  this.sourceURL = fetchResponse.response.url;\n                }\n\n                _context20.prev = 1;\n                _context20.next = 4;\n                return fetchResponse.responseHTML;\n\n              case 4:\n                html = _context20.sent;\n\n                if (!html) {\n                  _context20.next = 15;\n                  break;\n                }\n\n                _parseHTMLDocument = parseHTMLDocument(html), body = _parseHTMLDocument.body;\n                _context20.t0 = Snapshot;\n                _context20.next = 10;\n                return this.extractForeignFrameElement(body);\n\n              case 10:\n                _context20.t1 = _context20.sent;\n                snapshot = new _context20.t0(_context20.t1);\n                renderer = new FrameRenderer(this.view.snapshot, snapshot, false);\n                _context20.next = 15;\n                return this.view.render(renderer);\n\n              case 15:\n                _context20.next = 21;\n                break;\n\n              case 17:\n                _context20.prev = 17;\n                _context20.t2 = _context20[\"catch\"](1);\n                console.error(_context20.t2);\n                this.view.invalidate();\n\n              case 21:\n              case \"end\":\n                return _context20.stop();\n            }\n          }\n        }, _callee20, this, [[1, 17]]);\n      }));\n\n      function loadResponse(_x15) {\n        return _loadResponse.apply(this, arguments);\n      }\n\n      return loadResponse;\n    }()\n  }, {\n    key: \"elementAppearedInViewport\",\n    value: function elementAppearedInViewport(element) {\n      this.loadSourceURL();\n    }\n  }, {\n    key: \"shouldInterceptLinkClick\",\n    value: function shouldInterceptLinkClick(element, url) {\n      return this.shouldInterceptNavigation(element);\n    }\n  }, {\n    key: \"linkClickIntercepted\",\n    value: function linkClickIntercepted(element, url) {\n      this.navigateFrame(element, url);\n    }\n  }, {\n    key: \"shouldInterceptFormSubmission\",\n    value: function shouldInterceptFormSubmission(element, submitter) {\n      return this.shouldInterceptNavigation(element, submitter);\n    }\n  }, {\n    key: \"formSubmissionIntercepted\",\n    value: function formSubmissionIntercepted(element, submitter) {\n      if (this.formSubmission) {\n        this.formSubmission.stop();\n      }\n\n      this.formSubmission = new FormSubmission(this, element, submitter);\n\n      if (this.formSubmission.fetchRequest.isIdempotent) {\n        this.navigateFrame(element, this.formSubmission.fetchRequest.url.href);\n      } else {\n        var fetchRequest = this.formSubmission.fetchRequest;\n        this.prepareHeadersForRequest(fetchRequest.headers, fetchRequest);\n        this.formSubmission.start();\n      }\n    }\n  }, {\n    key: \"prepareHeadersForRequest\",\n    value: function prepareHeadersForRequest(headers, request) {\n      headers[\"Turbo-Frame\"] = this.id;\n    }\n  }, {\n    key: \"requestStarted\",\n    value: function requestStarted(request) {\n      this.element.setAttribute(\"busy\", \"\");\n    }\n  }, {\n    key: \"requestPreventedHandlingResponse\",\n    value: function requestPreventedHandlingResponse(request, response) {\n      this.resolveVisitPromise();\n    }\n  }, {\n    key: \"requestSucceededWithResponse\",\n    value: function () {\n      var _requestSucceededWithResponse2 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee21(request, response) {\n        return _regeneratorRuntime.wrap(function _callee21$(_context21) {\n          while (1) {\n            switch (_context21.prev = _context21.next) {\n              case 0:\n                _context21.next = 2;\n                return this.loadResponse(response);\n\n              case 2:\n                this.resolveVisitPromise();\n\n              case 3:\n              case \"end\":\n                return _context21.stop();\n            }\n          }\n        }, _callee21, this);\n      }));\n\n      function requestSucceededWithResponse(_x16, _x17) {\n        return _requestSucceededWithResponse2.apply(this, arguments);\n      }\n\n      return requestSucceededWithResponse;\n    }()\n  }, {\n    key: \"requestFailedWithResponse\",\n    value: function requestFailedWithResponse(request, response) {\n      console.error(response);\n      this.resolveVisitPromise();\n    }\n  }, {\n    key: \"requestErrored\",\n    value: function requestErrored(request, error) {\n      console.error(error);\n      this.resolveVisitPromise();\n    }\n  }, {\n    key: \"requestFinished\",\n    value: function requestFinished(request) {\n      this.element.removeAttribute(\"busy\");\n    }\n  }, {\n    key: \"formSubmissionStarted\",\n    value: function formSubmissionStarted(formSubmission) {\n      var frame = this.findFrameElement(formSubmission.formElement);\n      frame.setAttribute(\"busy\", \"\");\n    }\n  }, {\n    key: \"formSubmissionSucceededWithResponse\",\n    value: function formSubmissionSucceededWithResponse(formSubmission, response) {\n      var frame = this.findFrameElement(formSubmission.formElement);\n      frame.delegate.loadResponse(response);\n    }\n  }, {\n    key: \"formSubmissionFailedWithResponse\",\n    value: function formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n      this.element.delegate.loadResponse(fetchResponse);\n    }\n  }, {\n    key: \"formSubmissionErrored\",\n    value: function formSubmissionErrored(formSubmission, error) {\n      console.error(error);\n    }\n  }, {\n    key: \"formSubmissionFinished\",\n    value: function formSubmissionFinished(formSubmission) {\n      var frame = this.findFrameElement(formSubmission.formElement);\n      frame.removeAttribute(\"busy\");\n    }\n  }, {\n    key: \"viewWillRenderSnapshot\",\n    value: function viewWillRenderSnapshot(snapshot, isPreview) {}\n  }, {\n    key: \"viewRenderedSnapshot\",\n    value: function viewRenderedSnapshot(snapshot, isPreview) {}\n  }, {\n    key: \"viewInvalidated\",\n    value: function viewInvalidated() {}\n  }, {\n    key: \"visit\",\n    value: function () {\n      var _visit = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee22(url) {\n        var _this28 = this;\n\n        var request;\n        return _regeneratorRuntime.wrap(function _callee22$(_context22) {\n          while (1) {\n            switch (_context22.prev = _context22.next) {\n              case 0:\n                request = new FetchRequest(this, FetchMethod.get, expandURL(url));\n                return _context22.abrupt(\"return\", new Promise(function (resolve) {\n                  _this28.resolveVisitPromise = function () {\n                    _this28.resolveVisitPromise = function () {};\n\n                    resolve();\n                  };\n\n                  request.perform();\n                }));\n\n              case 2:\n              case \"end\":\n                return _context22.stop();\n            }\n          }\n        }, _callee22, this);\n      }));\n\n      function visit(_x18) {\n        return _visit.apply(this, arguments);\n      }\n\n      return visit;\n    }()\n  }, {\n    key: \"navigateFrame\",\n    value: function navigateFrame(element, url) {\n      var frame = this.findFrameElement(element);\n      frame.src = url;\n    }\n  }, {\n    key: \"findFrameElement\",\n    value: function findFrameElement(element) {\n      var _a;\n\n      var id = element.getAttribute(\"data-turbo-frame\") || this.element.getAttribute(\"target\");\n      return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n    }\n  }, {\n    key: \"extractForeignFrameElement\",\n    value: function () {\n      var _extractForeignFrameElement = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee23(container) {\n        var element, id;\n        return _regeneratorRuntime.wrap(function _callee23$(_context23) {\n          while (1) {\n            switch (_context23.prev = _context23.next) {\n              case 0:\n                id = CSS.escape(this.id);\n                _context23.prev = 1;\n\n                if (!(element = activateElement(container.querySelector(\"turbo-frame#\".concat(id)), this.currentURL))) {\n                  _context23.next = 4;\n                  break;\n                }\n\n                return _context23.abrupt(\"return\", element);\n\n              case 4:\n                if (!(element = activateElement(container.querySelector(\"turbo-frame[src][recurse~=\".concat(id, \"]\")), this.currentURL))) {\n                  _context23.next = 10;\n                  break;\n                }\n\n                _context23.next = 7;\n                return element.loaded;\n\n              case 7:\n                _context23.next = 9;\n                return this.extractForeignFrameElement(element);\n\n              case 9:\n                return _context23.abrupt(\"return\", _context23.sent);\n\n              case 10:\n                console.error(\"Response has no matching <turbo-frame id=\\\"\".concat(id, \"\\\"> element\"));\n                _context23.next = 16;\n                break;\n\n              case 13:\n                _context23.prev = 13;\n                _context23.t0 = _context23[\"catch\"](1);\n                console.error(_context23.t0);\n\n              case 16:\n                return _context23.abrupt(\"return\", new FrameElement());\n\n              case 17:\n              case \"end\":\n                return _context23.stop();\n            }\n          }\n        }, _callee23, this, [[1, 13]]);\n      }));\n\n      function extractForeignFrameElement(_x19) {\n        return _extractForeignFrameElement.apply(this, arguments);\n      }\n\n      return extractForeignFrameElement;\n    }()\n  }, {\n    key: \"shouldInterceptNavigation\",\n    value: function shouldInterceptNavigation(element, submitter) {\n      var id = element.getAttribute(\"data-turbo-frame\") || this.element.getAttribute(\"target\");\n\n      if (!this.enabled || id == \"_top\") {\n        return false;\n      }\n\n      if (id) {\n        var frameElement = getFrameElementById(id);\n\n        if (frameElement) {\n          return !frameElement.disabled;\n        }\n      }\n\n      if (!elementIsNavigable(element)) {\n        return false;\n      }\n\n      if (submitter && !elementIsNavigable(submitter)) {\n        return false;\n      }\n\n      return true;\n    }\n  }, {\n    key: \"id\",\n    get: function get() {\n      return this.element.id;\n    }\n  }, {\n    key: \"enabled\",\n    get: function get() {\n      return !this.element.disabled;\n    }\n  }, {\n    key: \"sourceURL\",\n    get: function get() {\n      if (this.element.src) {\n        return this.element.src;\n      }\n    },\n    set: function set(sourceURL) {\n      this.settingSourceURL = true;\n      this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n      this.settingSourceURL = false;\n    }\n  }, {\n    key: \"loadingStyle\",\n    get: function get() {\n      return this.element.loading;\n    }\n  }, {\n    key: \"isLoading\",\n    get: function get() {\n      return this.formSubmission !== undefined || this.resolveVisitPromise !== undefined;\n    }\n  }, {\n    key: \"isActive\",\n    get: function get() {\n      return this.element.isActive && this.connected;\n    }\n  }]);\n\n  return FrameController;\n}();\n\nfunction getFrameElementById(id) {\n  if (id != null) {\n    var element = document.getElementById(id);\n\n    if (element instanceof FrameElement) {\n      return element;\n    }\n  }\n}\n\nfunction activateElement(element, currentURL) {\n  if (element) {\n    var src = element.getAttribute(\"src\");\n\n    if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n      throw new Error(\"Matching <turbo-frame id=\\\"\".concat(element.id, \"\\\"> element has a source URL which references itself\"));\n    }\n\n    if (element.ownerDocument !== document) {\n      element = document.importNode(element, true);\n    }\n\n    if (element instanceof FrameElement) {\n      element.connectedCallback();\n      return element;\n    }\n  }\n}\n\nvar StreamActions = {\n  append: function append() {\n    var _a;\n\n    (_a = this.targetElement) === null || _a === void 0 ? void 0 : _a.append(this.templateContent);\n  },\n  prepend: function prepend() {\n    var _a;\n\n    (_a = this.targetElement) === null || _a === void 0 ? void 0 : _a.prepend(this.templateContent);\n  },\n  remove: function remove() {\n    var _a;\n\n    (_a = this.targetElement) === null || _a === void 0 ? void 0 : _a.remove();\n  },\n  replace: function replace() {\n    var _a;\n\n    (_a = this.targetElement) === null || _a === void 0 ? void 0 : _a.replaceWith(this.templateContent);\n  },\n  update: function update() {\n    if (this.targetElement) {\n      this.targetElement.innerHTML = \"\";\n      this.targetElement.append(this.templateContent);\n    }\n  }\n};\n\nvar StreamElement = /*#__PURE__*/function (_HTMLElement2) {\n  _inherits(StreamElement, _HTMLElement2);\n\n  var _super9 = _createSuper(StreamElement);\n\n  function StreamElement() {\n    _classCallCheck(this, StreamElement);\n\n    return _super9.apply(this, arguments);\n  }\n\n  _createClass(StreamElement, [{\n    key: \"connectedCallback\",\n    value: function () {\n      var _connectedCallback = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee24() {\n        return _regeneratorRuntime.wrap(function _callee24$(_context24) {\n          while (1) {\n            switch (_context24.prev = _context24.next) {\n              case 0:\n                _context24.prev = 0;\n                _context24.next = 3;\n                return this.render();\n\n              case 3:\n                _context24.next = 8;\n                break;\n\n              case 5:\n                _context24.prev = 5;\n                _context24.t0 = _context24[\"catch\"](0);\n                console.error(_context24.t0);\n\n              case 8:\n                _context24.prev = 8;\n                this.disconnect();\n                return _context24.finish(8);\n\n              case 11:\n              case \"end\":\n                return _context24.stop();\n            }\n          }\n        }, _callee24, this, [[0, 5, 8, 11]]);\n      }));\n\n      function connectedCallback() {\n        return _connectedCallback.apply(this, arguments);\n      }\n\n      return connectedCallback;\n    }()\n  }, {\n    key: \"render\",\n    value: function () {\n      var _render6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee26() {\n        var _this29 = this;\n\n        var _a;\n\n        return _regeneratorRuntime.wrap(function _callee26$(_context26) {\n          while (1) {\n            switch (_context26.prev = _context26.next) {\n              case 0:\n                return _context26.abrupt(\"return\", (_a = this.renderPromise) !== null && _a !== void 0 ? _a : this.renderPromise = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee25() {\n                  return _regeneratorRuntime.wrap(function _callee25$(_context25) {\n                    while (1) {\n                      switch (_context25.prev = _context25.next) {\n                        case 0:\n                          if (!_this29.dispatchEvent(_this29.beforeRenderEvent)) {\n                            _context25.next = 4;\n                            break;\n                          }\n\n                          _context25.next = 3;\n                          return nextAnimationFrame();\n\n                        case 3:\n                          _this29.performAction();\n\n                        case 4:\n                        case \"end\":\n                          return _context25.stop();\n                      }\n                    }\n                  }, _callee25);\n                }))());\n\n              case 1:\n              case \"end\":\n                return _context26.stop();\n            }\n          }\n        }, _callee26, this);\n      }));\n\n      function render() {\n        return _render6.apply(this, arguments);\n      }\n\n      return render;\n    }()\n  }, {\n    key: \"disconnect\",\n    value: function disconnect() {\n      try {\n        this.remove();\n      } catch (_a) {}\n    }\n  }, {\n    key: \"performAction\",\n    get: function get() {\n      if (this.action) {\n        var actionFunction = StreamActions[this.action];\n\n        if (actionFunction) {\n          return actionFunction;\n        }\n\n        this.raise(\"unknown action\");\n      }\n\n      this.raise(\"action attribute is missing\");\n    }\n  }, {\n    key: \"targetElement\",\n    get: function get() {\n      var _a;\n\n      if (this.target) {\n        return (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target);\n      }\n\n      this.raise(\"target attribute is missing\");\n    }\n  }, {\n    key: \"templateContent\",\n    get: function get() {\n      return this.templateElement.content;\n    }\n  }, {\n    key: \"templateElement\",\n    get: function get() {\n      if (this.firstElementChild instanceof HTMLTemplateElement) {\n        return this.firstElementChild;\n      }\n\n      this.raise(\"first child element must be a <template> element\");\n    }\n  }, {\n    key: \"action\",\n    get: function get() {\n      return this.getAttribute(\"action\");\n    }\n  }, {\n    key: \"target\",\n    get: function get() {\n      return this.getAttribute(\"target\");\n    }\n  }, {\n    key: \"raise\",\n    value: function raise(message) {\n      throw new Error(\"\".concat(this.description, \": \").concat(message));\n    }\n  }, {\n    key: \"description\",\n    get: function get() {\n      var _a, _b;\n\n      return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : \"<turbo-stream>\";\n    }\n  }, {\n    key: \"beforeRenderEvent\",\n    get: function get() {\n      return new CustomEvent(\"turbo:before-stream-render\", {\n        bubbles: true,\n        cancelable: true\n      });\n    }\n  }]);\n\n  return StreamElement;\n}( /*#__PURE__*/_wrapNativeSuper(HTMLElement));\n\nFrameElement.delegateConstructor = FrameController;\ncustomElements.define(\"turbo-frame\", FrameElement);\ncustomElements.define(\"turbo-stream\", StreamElement);\n\n(function () {\n  var element = document.currentScript;\n  if (!element) return;\n  if (element.hasAttribute(\"data-turbo-suppress-warning\")) return;\n\n  while (element = element.parentElement) {\n    if (element == document.body) {\n      return console.warn(unindent(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral([\"\\n        You are loading Turbo from a <script> element inside the <body> element. This is probably not what you meant to do!\\n\\n        Load your application\\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\\n\\n        For more information, see: https://turbo.hotwire.dev/handbook/building#working-with-script-elements\\n\\n        \\u2014\\u2014\\n        Suppress this warning by adding a \\\"data-turbo-suppress-warning\\\" attribute to: %s\\n      \"]))), element.outerHTML);\n    }\n  }\n})();\n\nvar session = new Session();\nvar navigator = session.navigator;\n\nfunction start() {\n  session.start();\n}\n\nfunction registerAdapter(adapter) {\n  session.registerAdapter(adapter);\n}\n\nfunction visit(location, options) {\n  session.visit(location, options);\n}\n\nfunction connectStreamSource(source) {\n  session.connectStreamSource(source);\n}\n\nfunction disconnectStreamSource(source) {\n  session.disconnectStreamSource(source);\n}\n\nfunction renderStreamMessage(message) {\n  session.renderStreamMessage(message);\n}\n\nfunction clearCache() {\n  session.clearCache();\n}\n\nfunction setProgressBarDelay(delay) {\n  session.setProgressBarDelay(delay);\n}\n\nstart();\nexport { clearCache, connectStreamSource, disconnectStreamSource, navigator, registerAdapter, renderStreamMessage, setProgressBarDelay, start, visit };","import { parseActionDescriptorString, stringifyEventTarget } from \"./action_descriptor\";\n\nvar Action =\n/** @class */\nfunction () {\n  function Action(element, index, descriptor) {\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  }\n\n  Action.forToken = function (token) {\n    return new this(token.element, token.index, parseActionDescriptorString(token.content));\n  };\n\n  Action.prototype.toString = function () {\n    var eventNameSuffix = this.eventTargetName ? \"@\" + this.eventTargetName : \"\";\n    return \"\" + this.eventName + eventNameSuffix + \"->\" + this.identifier + \"#\" + this.methodName;\n  };\n\n  Object.defineProperty(Action.prototype, \"eventTargetName\", {\n    get: function get() {\n      return stringifyEventTarget(this.eventTarget);\n    },\n    enumerable: false,\n    configurable: true\n  });\n  return Action;\n}();\n\nexport { Action };\nvar defaultEventNames = {\n  \"a\": function a(e) {\n    return \"click\";\n  },\n  \"button\": function button(e) {\n    return \"click\";\n  },\n  \"form\": function form(e) {\n    return \"submit\";\n  },\n  \"input\": function input(e) {\n    return e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\";\n  },\n  \"select\": function select(e) {\n    return \"change\";\n  },\n  \"textarea\": function textarea(e) {\n    return \"input\";\n  }\n};\nexport function getDefaultEventNameForElement(element) {\n  var tagName = element.tagName.toLowerCase();\n\n  if (tagName in defaultEventNames) {\n    return defaultEventNames[tagName](element);\n  }\n}\n\nfunction error(message) {\n  throw new Error(message);\n}","// capture nos.:            12   23 4               43   1 5   56 7      768 9  98\nvar descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nexport function parseActionDescriptorString(descriptorString) {\n  var source = descriptorString.trim();\n  var matches = source.match(descriptorPattern) || [];\n  return {\n    eventTarget: parseEventTarget(matches[4]),\n    eventName: matches[2],\n    eventOptions: matches[9] ? parseEventOptions(matches[9]) : {},\n    identifier: matches[5],\n    methodName: matches[7]\n  };\n}\n\nfunction parseEventTarget(eventTargetName) {\n  if (eventTargetName == \"window\") {\n    return window;\n  } else if (eventTargetName == \"document\") {\n    return document;\n  }\n}\n\nfunction parseEventOptions(eventOptions) {\n  return eventOptions.split(\":\").reduce(function (options, token) {\n    var _a;\n\n    return Object.assign(options, (_a = {}, _a[token.replace(/^!/, \"\")] = !/^!/.test(token), _a));\n  }, {});\n}\n\nexport function stringifyEventTarget(eventTarget) {\n  if (eventTarget == window) {\n    return \"window\";\n  } else if (eventTarget == document) {\n    return \"document\";\n  }\n}","var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\nvar __generator = this && this.__generator || function (thisArg, body) {\n  var _ = {\n    label: 0,\n    sent: function sent() {\n      if (t[0] & 1) throw t[1];\n      return t[1];\n    },\n    trys: [],\n    ops: []\n  },\n      f,\n      y,\n      t,\n      g;\n  return g = {\n    next: verb(0),\n    \"throw\": verb(1),\n    \"return\": verb(2)\n  }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n    return this;\n  }), g;\n\n  function verb(n) {\n    return function (v) {\n      return step([n, v]);\n    };\n  }\n\n  function step(op) {\n    if (f) throw new TypeError(\"Generator is already executing.\");\n\n    while (_) {\n      try {\n        if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n        if (y = 0, t) op = [op[0] & 2, t.value];\n\n        switch (op[0]) {\n          case 0:\n          case 1:\n            t = op;\n            break;\n\n          case 4:\n            _.label++;\n            return {\n              value: op[1],\n              done: false\n            };\n\n          case 5:\n            _.label++;\n            y = op[1];\n            op = [0];\n            continue;\n\n          case 7:\n            op = _.ops.pop();\n\n            _.trys.pop();\n\n            continue;\n\n          default:\n            if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n              _ = 0;\n              continue;\n            }\n\n            if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n              _.label = op[1];\n              break;\n            }\n\n            if (op[0] === 6 && _.label < t[1]) {\n              _.label = t[1];\n              t = op;\n              break;\n            }\n\n            if (t && _.label < t[2]) {\n              _.label = t[2];\n\n              _.ops.push(op);\n\n              break;\n            }\n\n            if (t[2]) _.ops.pop();\n\n            _.trys.pop();\n\n            continue;\n        }\n\n        op = body.call(thisArg, _);\n      } catch (e) {\n        op = [6, e];\n        y = 0;\n      } finally {\n        f = t = 0;\n      }\n    }\n\n    if (op[0] & 5) throw op[1];\n    return {\n      value: op[0] ? op[1] : void 0,\n      done: true\n    };\n  }\n};\n\nvar __spreadArrays = this && this.__spreadArrays || function () {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n    s += arguments[i].length;\n  }\n\n  for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n    for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n      r[k] = a[j];\n    }\n  }\n\n  return r;\n};\n\nimport { Dispatcher } from \"./dispatcher\";\nimport { Router } from \"./router\";\nimport { defaultSchema } from \"./schema\";\n\nvar Application =\n/** @class */\nfunction () {\n  function Application(element, schema) {\n    if (element === void 0) {\n      element = document.documentElement;\n    }\n\n    if (schema === void 0) {\n      schema = defaultSchema;\n    }\n\n    this.logger = console;\n    this.element = element;\n    this.schema = schema;\n    this.dispatcher = new Dispatcher(this);\n    this.router = new Router(this);\n  }\n\n  Application.start = function (element, schema) {\n    var application = new Application(element, schema);\n    application.start();\n    return application;\n  };\n\n  Application.prototype.start = function () {\n    return __awaiter(this, void 0, void 0, function () {\n      return __generator(this, function (_a) {\n        switch (_a.label) {\n          case 0:\n            return [4\n            /*yield*/\n            , domReady()];\n\n          case 1:\n            _a.sent();\n\n            this.dispatcher.start();\n            this.router.start();\n            return [2\n            /*return*/\n            ];\n        }\n      });\n    });\n  };\n\n  Application.prototype.stop = function () {\n    this.dispatcher.stop();\n    this.router.stop();\n  };\n\n  Application.prototype.register = function (identifier, controllerConstructor) {\n    this.load({\n      identifier: identifier,\n      controllerConstructor: controllerConstructor\n    });\n  };\n\n  Application.prototype.load = function (head) {\n    var _this = this;\n\n    var rest = [];\n\n    for (var _i = 1; _i < arguments.length; _i++) {\n      rest[_i - 1] = arguments[_i];\n    }\n\n    var definitions = Array.isArray(head) ? head : __spreadArrays([head], rest);\n    definitions.forEach(function (definition) {\n      return _this.router.loadDefinition(definition);\n    });\n  };\n\n  Application.prototype.unload = function (head) {\n    var _this = this;\n\n    var rest = [];\n\n    for (var _i = 1; _i < arguments.length; _i++) {\n      rest[_i - 1] = arguments[_i];\n    }\n\n    var identifiers = Array.isArray(head) ? head : __spreadArrays([head], rest);\n    identifiers.forEach(function (identifier) {\n      return _this.router.unloadIdentifier(identifier);\n    });\n  };\n\n  Object.defineProperty(Application.prototype, \"controllers\", {\n    // Controllers\n    get: function get() {\n      return this.router.contexts.map(function (context) {\n        return context.controller;\n      });\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  Application.prototype.getControllerForElementAndIdentifier = function (element, identifier) {\n    var context = this.router.getContextForElementAndIdentifier(element, identifier);\n    return context ? context.controller : null;\n  }; // Error handling\n\n\n  Application.prototype.handleError = function (error, message, detail) {\n    this.logger.error(\"%s\\n\\n%o\\n\\n%o\", message, error, detail);\n  };\n\n  return Application;\n}();\n\nexport { Application };\n\nfunction domReady() {\n  return new Promise(function (resolve) {\n    if (document.readyState == \"loading\") {\n      document.addEventListener(\"DOMContentLoaded\", resolve);\n    } else {\n      resolve();\n    }\n  });\n}","var Binding =\n/** @class */\nfunction () {\n  function Binding(context, action) {\n    this.context = context;\n    this.action = action;\n  }\n\n  Object.defineProperty(Binding.prototype, \"index\", {\n    get: function get() {\n      return this.action.index;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Binding.prototype, \"eventTarget\", {\n    get: function get() {\n      return this.action.eventTarget;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Binding.prototype, \"eventOptions\", {\n    get: function get() {\n      return this.action.eventOptions;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Binding.prototype, \"identifier\", {\n    get: function get() {\n      return this.context.identifier;\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  Binding.prototype.handleEvent = function (event) {\n    if (this.willBeInvokedByEvent(event)) {\n      this.invokeWithEvent(event);\n    }\n  };\n\n  Object.defineProperty(Binding.prototype, \"eventName\", {\n    get: function get() {\n      return this.action.eventName;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Binding.prototype, \"method\", {\n    get: function get() {\n      var method = this.controller[this.methodName];\n\n      if (typeof method == \"function\") {\n        return method;\n      }\n\n      throw new Error(\"Action \\\"\" + this.action + \"\\\" references undefined method \\\"\" + this.methodName + \"\\\"\");\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  Binding.prototype.invokeWithEvent = function (event) {\n    try {\n      this.method.call(this.controller, event);\n    } catch (error) {\n      var _a = this,\n          identifier = _a.identifier,\n          controller = _a.controller,\n          element = _a.element,\n          index = _a.index;\n\n      var detail = {\n        identifier: identifier,\n        controller: controller,\n        element: element,\n        index: index,\n        event: event\n      };\n      this.context.handleError(error, \"invoking action \\\"\" + this.action + \"\\\"\", detail);\n    }\n  };\n\n  Binding.prototype.willBeInvokedByEvent = function (event) {\n    var eventTarget = event.target;\n\n    if (this.element === eventTarget) {\n      return true;\n    } else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n      return this.scope.containsElement(eventTarget);\n    } else {\n      return this.scope.containsElement(this.action.element);\n    }\n  };\n\n  Object.defineProperty(Binding.prototype, \"controller\", {\n    get: function get() {\n      return this.context.controller;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Binding.prototype, \"methodName\", {\n    get: function get() {\n      return this.action.methodName;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Binding.prototype, \"element\", {\n    get: function get() {\n      return this.scope.element;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Binding.prototype, \"scope\", {\n    get: function get() {\n      return this.context.scope;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  return Binding;\n}();\n\nexport { Binding };","import { Action } from \"./action\";\nimport { Binding } from \"./binding\";\nimport { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar BindingObserver =\n/** @class */\nfunction () {\n  function BindingObserver(context, delegate) {\n    this.context = context;\n    this.delegate = delegate;\n    this.bindingsByAction = new Map();\n  }\n\n  BindingObserver.prototype.start = function () {\n    if (!this.valueListObserver) {\n      this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n      this.valueListObserver.start();\n    }\n  };\n\n  BindingObserver.prototype.stop = function () {\n    if (this.valueListObserver) {\n      this.valueListObserver.stop();\n      delete this.valueListObserver;\n      this.disconnectAllActions();\n    }\n  };\n\n  Object.defineProperty(BindingObserver.prototype, \"element\", {\n    get: function get() {\n      return this.context.element;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(BindingObserver.prototype, \"identifier\", {\n    get: function get() {\n      return this.context.identifier;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(BindingObserver.prototype, \"actionAttribute\", {\n    get: function get() {\n      return this.schema.actionAttribute;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(BindingObserver.prototype, \"schema\", {\n    get: function get() {\n      return this.context.schema;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(BindingObserver.prototype, \"bindings\", {\n    get: function get() {\n      return Array.from(this.bindingsByAction.values());\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  BindingObserver.prototype.connectAction = function (action) {\n    var binding = new Binding(this.context, action);\n    this.bindingsByAction.set(action, binding);\n    this.delegate.bindingConnected(binding);\n  };\n\n  BindingObserver.prototype.disconnectAction = function (action) {\n    var binding = this.bindingsByAction.get(action);\n\n    if (binding) {\n      this.bindingsByAction.delete(action);\n      this.delegate.bindingDisconnected(binding);\n    }\n  };\n\n  BindingObserver.prototype.disconnectAllActions = function () {\n    var _this = this;\n\n    this.bindings.forEach(function (binding) {\n      return _this.delegate.bindingDisconnected(binding);\n    });\n    this.bindingsByAction.clear();\n  }; // Value observer delegate\n\n\n  BindingObserver.prototype.parseValueForToken = function (token) {\n    var action = Action.forToken(token);\n\n    if (action.identifier == this.identifier) {\n      return action;\n    }\n  };\n\n  BindingObserver.prototype.elementMatchedValue = function (element, action) {\n    this.connectAction(action);\n  };\n\n  BindingObserver.prototype.elementUnmatchedValue = function (element, action) {\n    this.disconnectAction(action);\n  };\n\n  return BindingObserver;\n}();\n\nexport { BindingObserver };","var __extends = this && this.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\nvar __spreadArrays = this && this.__spreadArrays || function () {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n    s += arguments[i].length;\n  }\n\n  for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n    for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n      r[k] = a[j];\n    }\n  }\n\n  return r;\n};\n\nimport { readInheritableStaticArrayValues } from \"./inheritable_statics\";\n/** @hidden */\n\nexport function bless(constructor) {\n  return shadow(constructor, getBlessedProperties(constructor));\n}\n\nfunction shadow(constructor, properties) {\n  var shadowConstructor = extend(constructor);\n  var shadowProperties = getShadowProperties(constructor.prototype, properties);\n  Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n  return shadowConstructor;\n}\n\nfunction getBlessedProperties(constructor) {\n  var blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n  return blessings.reduce(function (blessedProperties, blessing) {\n    var properties = blessing(constructor);\n\n    for (var key in properties) {\n      var descriptor = blessedProperties[key] || {};\n      blessedProperties[key] = Object.assign(descriptor, properties[key]);\n    }\n\n    return blessedProperties;\n  }, {});\n}\n\nfunction getShadowProperties(prototype, properties) {\n  return getOwnKeys(properties).reduce(function (shadowProperties, key) {\n    var _a;\n\n    var descriptor = getShadowedDescriptor(prototype, properties, key);\n\n    if (descriptor) {\n      Object.assign(shadowProperties, (_a = {}, _a[key] = descriptor, _a));\n    }\n\n    return shadowProperties;\n  }, {});\n}\n\nfunction getShadowedDescriptor(prototype, properties, key) {\n  var shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n  var shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n\n  if (!shadowedByValue) {\n    var descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n\n    if (shadowingDescriptor) {\n      descriptor.get = shadowingDescriptor.get || descriptor.get;\n      descriptor.set = shadowingDescriptor.set || descriptor.set;\n    }\n\n    return descriptor;\n  }\n}\n\nvar getOwnKeys = function () {\n  if (typeof Object.getOwnPropertySymbols == \"function\") {\n    return function (object) {\n      return __spreadArrays(Object.getOwnPropertyNames(object), Object.getOwnPropertySymbols(object));\n    };\n  } else {\n    return Object.getOwnPropertyNames;\n  }\n}();\n\nvar extend = function () {\n  function extendWithReflect(constructor) {\n    function extended() {\n      var _newTarget = this && this instanceof extended ? this.constructor : void 0;\n\n      return Reflect.construct(constructor, arguments, _newTarget);\n    }\n\n    extended.prototype = Object.create(constructor.prototype, {\n      constructor: {\n        value: extended\n      }\n    });\n    Reflect.setPrototypeOf(extended, constructor);\n    return extended;\n  }\n\n  function testReflectExtension() {\n    var a = function a() {\n      this.a.call(this);\n    };\n\n    var b = extendWithReflect(a);\n\n    b.prototype.a = function () {};\n\n    return new b();\n  }\n\n  try {\n    testReflectExtension();\n    return extendWithReflect;\n  } catch (error) {\n    return function (constructor) {\n      return (\n        /** @class */\n        function (_super) {\n          __extends(extended, _super);\n\n          function extended() {\n            return _super !== null && _super.apply(this, arguments) || this;\n          }\n\n          return extended;\n        }(constructor)\n      );\n    };\n  }\n}();","var ClassMap =\n/** @class */\nfunction () {\n  function ClassMap(scope) {\n    this.scope = scope;\n  }\n\n  ClassMap.prototype.has = function (name) {\n    return this.data.has(this.getDataKey(name));\n  };\n\n  ClassMap.prototype.get = function (name) {\n    return this.data.get(this.getDataKey(name));\n  };\n\n  ClassMap.prototype.getAttributeName = function (name) {\n    return this.data.getAttributeNameForKey(this.getDataKey(name));\n  };\n\n  ClassMap.prototype.getDataKey = function (name) {\n    return name + \"-class\";\n  };\n\n  Object.defineProperty(ClassMap.prototype, \"data\", {\n    get: function get() {\n      return this.scope.data;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  return ClassMap;\n}();\n\nexport { ClassMap };","import { readInheritableStaticArrayValues } from \"./inheritable_statics\";\nimport { capitalize } from \"./string_helpers\";\n/** @hidden */\n\nexport function ClassPropertiesBlessing(constructor) {\n  var classes = readInheritableStaticArrayValues(constructor, \"classes\");\n  return classes.reduce(function (properties, classDefinition) {\n    return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n  }, {});\n}\n\nfunction propertiesForClassDefinition(key) {\n  var _a;\n\n  var name = key + \"Class\";\n  return _a = {}, _a[name] = {\n    get: function get() {\n      var classes = this.classes;\n\n      if (classes.has(key)) {\n        return classes.get(key);\n      } else {\n        var attribute = classes.getAttributeName(key);\n        throw new Error(\"Missing attribute \\\"\" + attribute + \"\\\"\");\n      }\n    }\n  }, _a[\"has\" + capitalize(name)] = {\n    get: function get() {\n      return this.classes.has(key);\n    }\n  }, _a;\n}","import { BindingObserver } from \"./binding_observer\";\nimport { ValueObserver } from \"./value_observer\";\n\nvar Context =\n/** @class */\nfunction () {\n  function Context(module, scope) {\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\n    try {\n      this.controller.initialize();\n    } catch (error) {\n      this.handleError(error, \"initializing controller\");\n    }\n  }\n\n  Context.prototype.connect = function () {\n    this.bindingObserver.start();\n    this.valueObserver.start();\n\n    try {\n      this.controller.connect();\n    } catch (error) {\n      this.handleError(error, \"connecting controller\");\n    }\n  };\n\n  Context.prototype.disconnect = function () {\n    try {\n      this.controller.disconnect();\n    } catch (error) {\n      this.handleError(error, \"disconnecting controller\");\n    }\n\n    this.valueObserver.stop();\n    this.bindingObserver.stop();\n  };\n\n  Object.defineProperty(Context.prototype, \"application\", {\n    get: function get() {\n      return this.module.application;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Context.prototype, \"identifier\", {\n    get: function get() {\n      return this.module.identifier;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Context.prototype, \"schema\", {\n    get: function get() {\n      return this.application.schema;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Context.prototype, \"dispatcher\", {\n    get: function get() {\n      return this.application.dispatcher;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Context.prototype, \"element\", {\n    get: function get() {\n      return this.scope.element;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Context.prototype, \"parentElement\", {\n    get: function get() {\n      return this.element.parentElement;\n    },\n    enumerable: false,\n    configurable: true\n  }); // Error handling\n\n  Context.prototype.handleError = function (error, message, detail) {\n    if (detail === void 0) {\n      detail = {};\n    }\n\n    var _a = this,\n        identifier = _a.identifier,\n        controller = _a.controller,\n        element = _a.element;\n\n    detail = Object.assign({\n      identifier: identifier,\n      controller: controller,\n      element: element\n    }, detail);\n    this.application.handleError(error, \"Error \" + message, detail);\n  };\n\n  return Context;\n}();\n\nexport { Context };","import { ClassPropertiesBlessing } from \"./class_properties\";\nimport { TargetPropertiesBlessing } from \"./target_properties\";\nimport { ValuePropertiesBlessing } from \"./value_properties\";\n\nvar Controller =\n/** @class */\nfunction () {\n  function Controller(context) {\n    this.context = context;\n  }\n\n  Object.defineProperty(Controller.prototype, \"application\", {\n    get: function get() {\n      return this.context.application;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Controller.prototype, \"scope\", {\n    get: function get() {\n      return this.context.scope;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Controller.prototype, \"element\", {\n    get: function get() {\n      return this.scope.element;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Controller.prototype, \"identifier\", {\n    get: function get() {\n      return this.scope.identifier;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Controller.prototype, \"targets\", {\n    get: function get() {\n      return this.scope.targets;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Controller.prototype, \"classes\", {\n    get: function get() {\n      return this.scope.classes;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Controller.prototype, \"data\", {\n    get: function get() {\n      return this.scope.data;\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  Controller.prototype.initialize = function () {// Override in your subclass to set up initial controller state\n  };\n\n  Controller.prototype.connect = function () {// Override in your subclass to respond when the controller is connected to the DOM\n  };\n\n  Controller.prototype.disconnect = function () {// Override in your subclass to respond when the controller is disconnected from the DOM\n  };\n\n  Controller.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\n  Controller.targets = [];\n  Controller.values = {};\n  return Controller;\n}();\n\nexport { Controller };","import { dasherize } from \"./string_helpers\";\n\nvar DataMap =\n/** @class */\nfunction () {\n  function DataMap(scope) {\n    this.scope = scope;\n  }\n\n  Object.defineProperty(DataMap.prototype, \"element\", {\n    get: function get() {\n      return this.scope.element;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(DataMap.prototype, \"identifier\", {\n    get: function get() {\n      return this.scope.identifier;\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  DataMap.prototype.get = function (key) {\n    var name = this.getAttributeNameForKey(key);\n    return this.element.getAttribute(name);\n  };\n\n  DataMap.prototype.set = function (key, value) {\n    var name = this.getAttributeNameForKey(key);\n    this.element.setAttribute(name, value);\n    return this.get(key);\n  };\n\n  DataMap.prototype.has = function (key) {\n    var name = this.getAttributeNameForKey(key);\n    return this.element.hasAttribute(name);\n  };\n\n  DataMap.prototype.delete = function (key) {\n    if (this.has(key)) {\n      var name_1 = this.getAttributeNameForKey(key);\n      this.element.removeAttribute(name_1);\n      return true;\n    } else {\n      return false;\n    }\n  };\n\n  DataMap.prototype.getAttributeNameForKey = function (key) {\n    return \"data-\" + this.identifier + \"-\" + dasherize(key);\n  };\n\n  return DataMap;\n}();\n\nexport { DataMap };","import { bless } from \"./blessing\";\n/** @hidden */\n\nexport function blessDefinition(definition) {\n  return {\n    identifier: definition.identifier,\n    controllerConstructor: bless(definition.controllerConstructor)\n  };\n}","import { EventListener } from \"./event_listener\";\n\nvar Dispatcher =\n/** @class */\nfunction () {\n  function Dispatcher(application) {\n    this.application = application;\n    this.eventListenerMaps = new Map();\n    this.started = false;\n  }\n\n  Dispatcher.prototype.start = function () {\n    if (!this.started) {\n      this.started = true;\n      this.eventListeners.forEach(function (eventListener) {\n        return eventListener.connect();\n      });\n    }\n  };\n\n  Dispatcher.prototype.stop = function () {\n    if (this.started) {\n      this.started = false;\n      this.eventListeners.forEach(function (eventListener) {\n        return eventListener.disconnect();\n      });\n    }\n  };\n\n  Object.defineProperty(Dispatcher.prototype, \"eventListeners\", {\n    get: function get() {\n      return Array.from(this.eventListenerMaps.values()).reduce(function (listeners, map) {\n        return listeners.concat(Array.from(map.values()));\n      }, []);\n    },\n    enumerable: false,\n    configurable: true\n  }); // Binding observer delegate\n\n  /** @hidden */\n\n  Dispatcher.prototype.bindingConnected = function (binding) {\n    this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n  };\n  /** @hidden */\n\n\n  Dispatcher.prototype.bindingDisconnected = function (binding) {\n    this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n  }; // Error handling\n\n\n  Dispatcher.prototype.handleError = function (error, message, detail) {\n    if (detail === void 0) {\n      detail = {};\n    }\n\n    this.application.handleError(error, \"Error \" + message, detail);\n  };\n\n  Dispatcher.prototype.fetchEventListenerForBinding = function (binding) {\n    var eventTarget = binding.eventTarget,\n        eventName = binding.eventName,\n        eventOptions = binding.eventOptions;\n    return this.fetchEventListener(eventTarget, eventName, eventOptions);\n  };\n\n  Dispatcher.prototype.fetchEventListener = function (eventTarget, eventName, eventOptions) {\n    var eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n    var cacheKey = this.cacheKey(eventName, eventOptions);\n    var eventListener = eventListenerMap.get(cacheKey);\n\n    if (!eventListener) {\n      eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n      eventListenerMap.set(cacheKey, eventListener);\n    }\n\n    return eventListener;\n  };\n\n  Dispatcher.prototype.createEventListener = function (eventTarget, eventName, eventOptions) {\n    var eventListener = new EventListener(eventTarget, eventName, eventOptions);\n\n    if (this.started) {\n      eventListener.connect();\n    }\n\n    return eventListener;\n  };\n\n  Dispatcher.prototype.fetchEventListenerMapForEventTarget = function (eventTarget) {\n    var eventListenerMap = this.eventListenerMaps.get(eventTarget);\n\n    if (!eventListenerMap) {\n      eventListenerMap = new Map();\n      this.eventListenerMaps.set(eventTarget, eventListenerMap);\n    }\n\n    return eventListenerMap;\n  };\n\n  Dispatcher.prototype.cacheKey = function (eventName, eventOptions) {\n    var parts = [eventName];\n    Object.keys(eventOptions).sort().forEach(function (key) {\n      parts.push(\"\" + (eventOptions[key] ? \"\" : \"!\") + key);\n    });\n    return parts.join(\":\");\n  };\n\n  return Dispatcher;\n}();\n\nexport { Dispatcher };","var EventListener =\n/** @class */\nfunction () {\n  function EventListener(eventTarget, eventName, eventOptions) {\n    this.eventTarget = eventTarget;\n    this.eventName = eventName;\n    this.eventOptions = eventOptions;\n    this.unorderedBindings = new Set();\n  }\n\n  EventListener.prototype.connect = function () {\n    this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n  };\n\n  EventListener.prototype.disconnect = function () {\n    this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n  }; // Binding observer delegate\n\n  /** @hidden */\n\n\n  EventListener.prototype.bindingConnected = function (binding) {\n    this.unorderedBindings.add(binding);\n  };\n  /** @hidden */\n\n\n  EventListener.prototype.bindingDisconnected = function (binding) {\n    this.unorderedBindings.delete(binding);\n  };\n\n  EventListener.prototype.handleEvent = function (event) {\n    var extendedEvent = extendEvent(event);\n\n    for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n      var binding = _a[_i];\n\n      if (extendedEvent.immediatePropagationStopped) {\n        break;\n      } else {\n        binding.handleEvent(extendedEvent);\n      }\n    }\n  };\n\n  Object.defineProperty(EventListener.prototype, \"bindings\", {\n    get: function get() {\n      return Array.from(this.unorderedBindings).sort(function (left, right) {\n        var leftIndex = left.index,\n            rightIndex = right.index;\n        return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n      });\n    },\n    enumerable: false,\n    configurable: true\n  });\n  return EventListener;\n}();\n\nexport { EventListener };\n\nfunction extendEvent(event) {\n  if (\"immediatePropagationStopped\" in event) {\n    return event;\n  } else {\n    var stopImmediatePropagation_1 = event.stopImmediatePropagation;\n    return Object.assign(event, {\n      immediatePropagationStopped: false,\n      stopImmediatePropagation: function stopImmediatePropagation() {\n        this.immediatePropagationStopped = true;\n        stopImmediatePropagation_1.call(this);\n      }\n    });\n  }\n}","var Guide =\n/** @class */\nfunction () {\n  function Guide(logger) {\n    this.warnedKeysByObject = new WeakMap();\n    this.logger = logger;\n  }\n\n  Guide.prototype.warn = function (object, key, message) {\n    var warnedKeys = this.warnedKeysByObject.get(object);\n\n    if (!warnedKeys) {\n      warnedKeys = new Set();\n      this.warnedKeysByObject.set(object, warnedKeys);\n    }\n\n    if (!warnedKeys.has(key)) {\n      warnedKeys.add(key);\n      this.logger.warn(message, object);\n    }\n  };\n\n  return Guide;\n}();\n\nexport { Guide };","export { Application } from \"./application\";\nexport { Context } from \"./context\";\nexport { Controller } from \"./controller\";\nexport { defaultSchema } from \"./schema\";","export function readInheritableStaticArrayValues(constructor, propertyName) {\n  var ancestors = getAncestorsForConstructor(constructor);\n  return Array.from(ancestors.reduce(function (values, constructor) {\n    getOwnStaticArrayValues(constructor, propertyName).forEach(function (name) {\n      return values.add(name);\n    });\n    return values;\n  }, new Set()));\n}\nexport function readInheritableStaticObjectPairs(constructor, propertyName) {\n  var ancestors = getAncestorsForConstructor(constructor);\n  return ancestors.reduce(function (pairs, constructor) {\n    pairs.push.apply(pairs, getOwnStaticObjectPairs(constructor, propertyName));\n    return pairs;\n  }, []);\n}\n\nfunction getAncestorsForConstructor(constructor) {\n  var ancestors = [];\n\n  while (constructor) {\n    ancestors.push(constructor);\n    constructor = Object.getPrototypeOf(constructor);\n  }\n\n  return ancestors.reverse();\n}\n\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n  var definition = constructor[propertyName];\n  return Array.isArray(definition) ? definition : [];\n}\n\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n  var definition = constructor[propertyName];\n  return definition ? Object.keys(definition).map(function (key) {\n    return [key, definition[key]];\n  }) : [];\n}","import { Context } from \"./context\";\nimport { blessDefinition } from \"./definition\";\n\nvar Module =\n/** @class */\nfunction () {\n  function Module(application, definition) {\n    this.application = application;\n    this.definition = blessDefinition(definition);\n    this.contextsByScope = new WeakMap();\n    this.connectedContexts = new Set();\n  }\n\n  Object.defineProperty(Module.prototype, \"identifier\", {\n    get: function get() {\n      return this.definition.identifier;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Module.prototype, \"controllerConstructor\", {\n    get: function get() {\n      return this.definition.controllerConstructor;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Module.prototype, \"contexts\", {\n    get: function get() {\n      return Array.from(this.connectedContexts);\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  Module.prototype.connectContextForScope = function (scope) {\n    var context = this.fetchContextForScope(scope);\n    this.connectedContexts.add(context);\n    context.connect();\n  };\n\n  Module.prototype.disconnectContextForScope = function (scope) {\n    var context = this.contextsByScope.get(scope);\n\n    if (context) {\n      this.connectedContexts.delete(context);\n      context.disconnect();\n    }\n  };\n\n  Module.prototype.fetchContextForScope = function (scope) {\n    var context = this.contextsByScope.get(scope);\n\n    if (!context) {\n      context = new Context(this, scope);\n      this.contextsByScope.set(scope, context);\n    }\n\n    return context;\n  };\n\n  return Module;\n}();\n\nexport { Module };","import { Module } from \"./module\";\nimport { Multimap } from \"@stimulus/multimap\";\nimport { Scope } from \"./scope\";\nimport { ScopeObserver } from \"./scope_observer\";\n\nvar Router =\n/** @class */\nfunction () {\n  function Router(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\n  Object.defineProperty(Router.prototype, \"element\", {\n    get: function get() {\n      return this.application.element;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Router.prototype, \"schema\", {\n    get: function get() {\n      return this.application.schema;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Router.prototype, \"logger\", {\n    get: function get() {\n      return this.application.logger;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Router.prototype, \"controllerAttribute\", {\n    get: function get() {\n      return this.schema.controllerAttribute;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Router.prototype, \"modules\", {\n    get: function get() {\n      return Array.from(this.modulesByIdentifier.values());\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Router.prototype, \"contexts\", {\n    get: function get() {\n      return this.modules.reduce(function (contexts, module) {\n        return contexts.concat(module.contexts);\n      }, []);\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  Router.prototype.start = function () {\n    this.scopeObserver.start();\n  };\n\n  Router.prototype.stop = function () {\n    this.scopeObserver.stop();\n  };\n\n  Router.prototype.loadDefinition = function (definition) {\n    this.unloadIdentifier(definition.identifier);\n    var module = new Module(this.application, definition);\n    this.connectModule(module);\n  };\n\n  Router.prototype.unloadIdentifier = function (identifier) {\n    var module = this.modulesByIdentifier.get(identifier);\n\n    if (module) {\n      this.disconnectModule(module);\n    }\n  };\n\n  Router.prototype.getContextForElementAndIdentifier = function (element, identifier) {\n    var module = this.modulesByIdentifier.get(identifier);\n\n    if (module) {\n      return module.contexts.find(function (context) {\n        return context.element == element;\n      });\n    }\n  }; // Error handler delegate\n\n  /** @hidden */\n\n\n  Router.prototype.handleError = function (error, message, detail) {\n    this.application.handleError(error, message, detail);\n  }; // Scope observer delegate\n\n  /** @hidden */\n\n\n  Router.prototype.createScopeForElementAndIdentifier = function (element, identifier) {\n    return new Scope(this.schema, element, identifier, this.logger);\n  };\n  /** @hidden */\n\n\n  Router.prototype.scopeConnected = function (scope) {\n    this.scopesByIdentifier.add(scope.identifier, scope);\n    var module = this.modulesByIdentifier.get(scope.identifier);\n\n    if (module) {\n      module.connectContextForScope(scope);\n    }\n  };\n  /** @hidden */\n\n\n  Router.prototype.scopeDisconnected = function (scope) {\n    this.scopesByIdentifier.delete(scope.identifier, scope);\n    var module = this.modulesByIdentifier.get(scope.identifier);\n\n    if (module) {\n      module.disconnectContextForScope(scope);\n    }\n  }; // Modules\n\n\n  Router.prototype.connectModule = function (module) {\n    this.modulesByIdentifier.set(module.identifier, module);\n    var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n    scopes.forEach(function (scope) {\n      return module.connectContextForScope(scope);\n    });\n  };\n\n  Router.prototype.disconnectModule = function (module) {\n    this.modulesByIdentifier.delete(module.identifier);\n    var scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n    scopes.forEach(function (scope) {\n      return module.disconnectContextForScope(scope);\n    });\n  };\n\n  return Router;\n}();\n\nexport { Router };","export var defaultSchema = {\n  controllerAttribute: \"data-controller\",\n  actionAttribute: \"data-action\",\n  targetAttribute: \"data-target\"\n};","var __spreadArrays = this && this.__spreadArrays || function () {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n    s += arguments[i].length;\n  }\n\n  for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n    for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n      r[k] = a[j];\n    }\n  }\n\n  return r;\n};\n\nimport { ClassMap } from \"./class_map\";\nimport { DataMap } from \"./data_map\";\nimport { Guide } from \"./guide\";\nimport { attributeValueContainsToken } from \"./selectors\";\nimport { TargetSet } from \"./target_set\";\n\nvar Scope =\n/** @class */\nfunction () {\n  function Scope(schema, element, identifier, logger) {\n    var _this = this;\n\n    this.targets = new TargetSet(this);\n    this.classes = new ClassMap(this);\n    this.data = new DataMap(this);\n\n    this.containsElement = function (element) {\n      return element.closest(_this.controllerSelector) === _this.element;\n    };\n\n    this.schema = schema;\n    this.element = element;\n    this.identifier = identifier;\n    this.guide = new Guide(logger);\n  }\n\n  Scope.prototype.findElement = function (selector) {\n    return this.element.matches(selector) ? this.element : this.queryElements(selector).find(this.containsElement);\n  };\n\n  Scope.prototype.findAllElements = function (selector) {\n    return __spreadArrays(this.element.matches(selector) ? [this.element] : [], this.queryElements(selector).filter(this.containsElement));\n  };\n\n  Scope.prototype.queryElements = function (selector) {\n    return Array.from(this.element.querySelectorAll(selector));\n  };\n\n  Object.defineProperty(Scope.prototype, \"controllerSelector\", {\n    get: function get() {\n      return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    },\n    enumerable: false,\n    configurable: true\n  });\n  return Scope;\n}();\n\nexport { Scope };","import { ValueListObserver } from \"@stimulus/mutation-observers\";\n\nvar ScopeObserver =\n/** @class */\nfunction () {\n  function ScopeObserver(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\n  ScopeObserver.prototype.start = function () {\n    this.valueListObserver.start();\n  };\n\n  ScopeObserver.prototype.stop = function () {\n    this.valueListObserver.stop();\n  };\n\n  Object.defineProperty(ScopeObserver.prototype, \"controllerAttribute\", {\n    get: function get() {\n      return this.schema.controllerAttribute;\n    },\n    enumerable: false,\n    configurable: true\n  }); // Value observer delegate\n\n  /** @hidden */\n\n  ScopeObserver.prototype.parseValueForToken = function (token) {\n    var element = token.element,\n        identifier = token.content;\n    var scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n    var scope = scopesByIdentifier.get(identifier);\n\n    if (!scope) {\n      scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n      scopesByIdentifier.set(identifier, scope);\n    }\n\n    return scope;\n  };\n  /** @hidden */\n\n\n  ScopeObserver.prototype.elementMatchedValue = function (element, value) {\n    var referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n    this.scopeReferenceCounts.set(value, referenceCount);\n\n    if (referenceCount == 1) {\n      this.delegate.scopeConnected(value);\n    }\n  };\n  /** @hidden */\n\n\n  ScopeObserver.prototype.elementUnmatchedValue = function (element, value) {\n    var referenceCount = this.scopeReferenceCounts.get(value);\n\n    if (referenceCount) {\n      this.scopeReferenceCounts.set(value, referenceCount - 1);\n\n      if (referenceCount == 1) {\n        this.delegate.scopeDisconnected(value);\n      }\n    }\n  };\n\n  ScopeObserver.prototype.fetchScopesByIdentifierForElement = function (element) {\n    var scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n\n    if (!scopesByIdentifier) {\n      scopesByIdentifier = new Map();\n      this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n    }\n\n    return scopesByIdentifier;\n  };\n\n  return ScopeObserver;\n}();\n\nexport { ScopeObserver };","/** @hidden */\nexport function attributeValueContainsToken(attributeName, token) {\n  return \"[\" + attributeName + \"~=\\\"\" + token + \"\\\"]\";\n}","export function camelize(value) {\n  return value.replace(/(?:[_-])([a-z0-9])/g, function (_, char) {\n    return char.toUpperCase();\n  });\n}\nexport function capitalize(value) {\n  return value.charAt(0).toUpperCase() + value.slice(1);\n}\nexport function dasherize(value) {\n  return value.replace(/([A-Z])/g, function (_, char) {\n    return \"-\" + char.toLowerCase();\n  });\n}","import { readInheritableStaticArrayValues } from \"./inheritable_statics\";\nimport { capitalize } from \"./string_helpers\";\n/** @hidden */\n\nexport function TargetPropertiesBlessing(constructor) {\n  var targets = readInheritableStaticArrayValues(constructor, \"targets\");\n  return targets.reduce(function (properties, targetDefinition) {\n    return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n  }, {});\n}\n\nfunction propertiesForTargetDefinition(name) {\n  var _a;\n\n  return _a = {}, _a[name + \"Target\"] = {\n    get: function get() {\n      var target = this.targets.find(name);\n\n      if (target) {\n        return target;\n      } else {\n        throw new Error(\"Missing target element \\\"\" + this.identifier + \".\" + name + \"\\\"\");\n      }\n    }\n  }, _a[name + \"Targets\"] = {\n    get: function get() {\n      return this.targets.findAll(name);\n    }\n  }, _a[\"has\" + capitalize(name) + \"Target\"] = {\n    get: function get() {\n      return this.targets.has(name);\n    }\n  }, _a;\n}","var __spreadArrays = this && this.__spreadArrays || function () {\n  for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n    s += arguments[i].length;\n  }\n\n  for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n    for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n      r[k] = a[j];\n    }\n  }\n\n  return r;\n};\n\nimport { attributeValueContainsToken } from \"./selectors\";\n\nvar TargetSet =\n/** @class */\nfunction () {\n  function TargetSet(scope) {\n    this.scope = scope;\n  }\n\n  Object.defineProperty(TargetSet.prototype, \"element\", {\n    get: function get() {\n      return this.scope.element;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(TargetSet.prototype, \"identifier\", {\n    get: function get() {\n      return this.scope.identifier;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(TargetSet.prototype, \"schema\", {\n    get: function get() {\n      return this.scope.schema;\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  TargetSet.prototype.has = function (targetName) {\n    return this.find(targetName) != null;\n  };\n\n  TargetSet.prototype.find = function () {\n    var _this = this;\n\n    var targetNames = [];\n\n    for (var _i = 0; _i < arguments.length; _i++) {\n      targetNames[_i] = arguments[_i];\n    }\n\n    return targetNames.reduce(function (target, targetName) {\n      return target || _this.findTarget(targetName) || _this.findLegacyTarget(targetName);\n    }, undefined);\n  };\n\n  TargetSet.prototype.findAll = function () {\n    var _this = this;\n\n    var targetNames = [];\n\n    for (var _i = 0; _i < arguments.length; _i++) {\n      targetNames[_i] = arguments[_i];\n    }\n\n    return targetNames.reduce(function (targets, targetName) {\n      return __spreadArrays(targets, _this.findAllTargets(targetName), _this.findAllLegacyTargets(targetName));\n    }, []);\n  };\n\n  TargetSet.prototype.findTarget = function (targetName) {\n    var selector = this.getSelectorForTargetName(targetName);\n    return this.scope.findElement(selector);\n  };\n\n  TargetSet.prototype.findAllTargets = function (targetName) {\n    var selector = this.getSelectorForTargetName(targetName);\n    return this.scope.findAllElements(selector);\n  };\n\n  TargetSet.prototype.getSelectorForTargetName = function (targetName) {\n    var attributeName = \"data-\" + this.identifier + \"-target\";\n    return attributeValueContainsToken(attributeName, targetName);\n  };\n\n  TargetSet.prototype.findLegacyTarget = function (targetName) {\n    var selector = this.getLegacySelectorForTargetName(targetName);\n    return this.deprecate(this.scope.findElement(selector), targetName);\n  };\n\n  TargetSet.prototype.findAllLegacyTargets = function (targetName) {\n    var _this = this;\n\n    var selector = this.getLegacySelectorForTargetName(targetName);\n    return this.scope.findAllElements(selector).map(function (element) {\n      return _this.deprecate(element, targetName);\n    });\n  };\n\n  TargetSet.prototype.getLegacySelectorForTargetName = function (targetName) {\n    var targetDescriptor = this.identifier + \".\" + targetName;\n    return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n  };\n\n  TargetSet.prototype.deprecate = function (element, targetName) {\n    if (element) {\n      var identifier = this.identifier;\n      var attributeName = this.schema.targetAttribute;\n      this.guide.warn(element, \"target:\" + targetName, \"Please replace \" + attributeName + \"=\\\"\" + identifier + \".\" + targetName + \"\\\" with data-\" + identifier + \"-target=\\\"\" + targetName + \"\\\". \" + (\"The \" + attributeName + \" attribute is deprecated and will be removed in a future version of Stimulus.\"));\n    }\n\n    return element;\n  };\n\n  Object.defineProperty(TargetSet.prototype, \"guide\", {\n    get: function get() {\n      return this.scope.guide;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  return TargetSet;\n}();\n\nexport { TargetSet };","import { StringMapObserver } from \"@stimulus/mutation-observers\";\n\nvar ValueObserver =\n/** @class */\nfunction () {\n  function ValueObserver(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    this.invokeChangedCallbacksForDefaultValues();\n  }\n\n  ValueObserver.prototype.start = function () {\n    this.stringMapObserver.start();\n  };\n\n  ValueObserver.prototype.stop = function () {\n    this.stringMapObserver.stop();\n  };\n\n  Object.defineProperty(ValueObserver.prototype, \"element\", {\n    get: function get() {\n      return this.context.element;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(ValueObserver.prototype, \"controller\", {\n    get: function get() {\n      return this.context.controller;\n    },\n    enumerable: false,\n    configurable: true\n  }); // String map observer delegate\n\n  ValueObserver.prototype.getStringMapKeyForAttribute = function (attributeName) {\n    if (attributeName in this.valueDescriptorMap) {\n      return this.valueDescriptorMap[attributeName].name;\n    }\n  };\n\n  ValueObserver.prototype.stringMapValueChanged = function (attributeValue, name) {\n    this.invokeChangedCallbackForValue(name);\n  };\n\n  ValueObserver.prototype.invokeChangedCallbacksForDefaultValues = function () {\n    for (var _i = 0, _a = this.valueDescriptors; _i < _a.length; _i++) {\n      var _b = _a[_i],\n          key = _b.key,\n          name_1 = _b.name,\n          defaultValue = _b.defaultValue;\n\n      if (defaultValue != undefined && !this.controller.data.has(key)) {\n        this.invokeChangedCallbackForValue(name_1);\n      }\n    }\n  };\n\n  ValueObserver.prototype.invokeChangedCallbackForValue = function (name) {\n    var methodName = name + \"Changed\";\n    var method = this.receiver[methodName];\n\n    if (typeof method == \"function\") {\n      var value = this.receiver[name];\n      method.call(this.receiver, value);\n    }\n  };\n\n  Object.defineProperty(ValueObserver.prototype, \"valueDescriptors\", {\n    get: function get() {\n      var valueDescriptorMap = this.valueDescriptorMap;\n      return Object.keys(valueDescriptorMap).map(function (key) {\n        return valueDescriptorMap[key];\n      });\n    },\n    enumerable: false,\n    configurable: true\n  });\n  return ValueObserver;\n}();\n\nexport { ValueObserver };","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { readInheritableStaticObjectPairs } from \"./inheritable_statics\";\nimport { camelize, capitalize, dasherize } from \"./string_helpers\";\n/** @hidden */\n\nexport function ValuePropertiesBlessing(constructor) {\n  var valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n  var propertyDescriptorMap = {\n    valueDescriptorMap: {\n      get: function get() {\n        var _this = this;\n\n        return valueDefinitionPairs.reduce(function (result, valueDefinitionPair) {\n          var _a;\n\n          var valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n\n          var attributeName = _this.data.getAttributeNameForKey(valueDescriptor.key);\n\n          return Object.assign(result, (_a = {}, _a[attributeName] = valueDescriptor, _a));\n        }, {});\n      }\n    }\n  };\n  return valueDefinitionPairs.reduce(function (properties, valueDefinitionPair) {\n    return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n  }, propertyDescriptorMap);\n}\n/** @hidden */\n\nexport function propertiesForValueDefinitionPair(valueDefinitionPair) {\n  var _a;\n\n  var definition = parseValueDefinitionPair(valueDefinitionPair);\n  var type = definition.type,\n      key = definition.key,\n      name = definition.name;\n  var read = readers[type],\n      write = writers[type] || writers.default;\n  return _a = {}, _a[name] = {\n    get: function get() {\n      var value = this.data.get(key);\n\n      if (value !== null) {\n        return read(value);\n      } else {\n        return definition.defaultValue;\n      }\n    },\n    set: function set(value) {\n      if (value === undefined) {\n        this.data.delete(key);\n      } else {\n        this.data.set(key, write(value));\n      }\n    }\n  }, _a[\"has\" + capitalize(name)] = {\n    get: function get() {\n      return this.data.has(key);\n    }\n  }, _a;\n}\n\nfunction parseValueDefinitionPair(_a) {\n  var token = _a[0],\n      typeConstant = _a[1];\n  var type = parseValueTypeConstant(typeConstant);\n  return valueDescriptorForTokenAndType(token, type);\n}\n\nfunction parseValueTypeConstant(typeConstant) {\n  switch (typeConstant) {\n    case Array:\n      return \"array\";\n\n    case Boolean:\n      return \"boolean\";\n\n    case Number:\n      return \"number\";\n\n    case Object:\n      return \"object\";\n\n    case String:\n      return \"string\";\n  }\n\n  throw new Error(\"Unknown value type constant \\\"\" + typeConstant + \"\\\"\");\n}\n\nfunction valueDescriptorForTokenAndType(token, type) {\n  var key = dasherize(token) + \"-value\";\n  return {\n    type: type,\n    key: key,\n    name: camelize(key),\n\n    get defaultValue() {\n      return defaultValuesByType[type];\n    }\n\n  };\n}\n\nvar defaultValuesByType = {\n  get array() {\n    return [];\n  },\n\n  boolean: false,\n  number: 0,\n\n  get object() {\n    return {};\n  },\n\n  string: \"\"\n};\nvar readers = {\n  array: function array(value) {\n    var array = JSON.parse(value);\n\n    if (!Array.isArray(array)) {\n      throw new TypeError(\"Expected array\");\n    }\n\n    return array;\n  },\n  boolean: function boolean(value) {\n    return !(value == \"0\" || value == \"false\");\n  },\n  number: function number(value) {\n    return parseFloat(value);\n  },\n  object: function object(value) {\n    var object = JSON.parse(value);\n\n    if (object === null || _typeof(object) != \"object\" || Array.isArray(object)) {\n      throw new TypeError(\"Expected object\");\n    }\n\n    return object;\n  },\n  string: function string(value) {\n    return value;\n  }\n};\nvar writers = {\n  default: writeString,\n  array: writeJSON,\n  object: writeJSON\n};\n\nfunction writeJSON(value) {\n  return JSON.stringify(value);\n}\n\nfunction writeString(value) {\n  return \"\" + value;\n}","export * from \"./indexed_multimap\";\nexport * from \"./multimap\";\nexport * from \"./set_operations\";","var __extends = this && this.__extends || function () {\n  var _extendStatics = function extendStatics(d, b) {\n    _extendStatics = Object.setPrototypeOf || {\n      __proto__: []\n    } instanceof Array && function (d, b) {\n      d.__proto__ = b;\n    } || function (d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) d[p] = b[p];\n      }\n    };\n\n    return _extendStatics(d, b);\n  };\n\n  return function (d, b) {\n    _extendStatics(d, b);\n\n    function __() {\n      this.constructor = d;\n    }\n\n    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n  };\n}();\n\nimport { Multimap } from \"./multimap\";\nimport { add, del } from \"./set_operations\";\n\nvar IndexedMultimap =\n/** @class */\nfunction (_super) {\n  __extends(IndexedMultimap, _super);\n\n  function IndexedMultimap() {\n    var _this = _super.call(this) || this;\n\n    _this.keysByValue = new Map();\n    return _this;\n  }\n\n  Object.defineProperty(IndexedMultimap.prototype, \"values\", {\n    get: function get() {\n      return Array.from(this.keysByValue.keys());\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  IndexedMultimap.prototype.add = function (key, value) {\n    _super.prototype.add.call(this, key, value);\n\n    add(this.keysByValue, value, key);\n  };\n\n  IndexedMultimap.prototype.delete = function (key, value) {\n    _super.prototype.delete.call(this, key, value);\n\n    del(this.keysByValue, value, key);\n  };\n\n  IndexedMultimap.prototype.hasValue = function (value) {\n    return this.keysByValue.has(value);\n  };\n\n  IndexedMultimap.prototype.getKeysForValue = function (value) {\n    var set = this.keysByValue.get(value);\n    return set ? Array.from(set) : [];\n  };\n\n  return IndexedMultimap;\n}(Multimap);\n\nexport { IndexedMultimap };","import { add, del } from \"./set_operations\";\n\nvar Multimap =\n/** @class */\nfunction () {\n  function Multimap() {\n    this.valuesByKey = new Map();\n  }\n\n  Object.defineProperty(Multimap.prototype, \"values\", {\n    get: function get() {\n      var sets = Array.from(this.valuesByKey.values());\n      return sets.reduce(function (values, set) {\n        return values.concat(Array.from(set));\n      }, []);\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(Multimap.prototype, \"size\", {\n    get: function get() {\n      var sets = Array.from(this.valuesByKey.values());\n      return sets.reduce(function (size, set) {\n        return size + set.size;\n      }, 0);\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  Multimap.prototype.add = function (key, value) {\n    add(this.valuesByKey, key, value);\n  };\n\n  Multimap.prototype.delete = function (key, value) {\n    del(this.valuesByKey, key, value);\n  };\n\n  Multimap.prototype.has = function (key, value) {\n    var values = this.valuesByKey.get(key);\n    return values != null && values.has(value);\n  };\n\n  Multimap.prototype.hasKey = function (key) {\n    return this.valuesByKey.has(key);\n  };\n\n  Multimap.prototype.hasValue = function (value) {\n    var sets = Array.from(this.valuesByKey.values());\n    return sets.some(function (set) {\n      return set.has(value);\n    });\n  };\n\n  Multimap.prototype.getValuesForKey = function (key) {\n    var values = this.valuesByKey.get(key);\n    return values ? Array.from(values) : [];\n  };\n\n  Multimap.prototype.getKeysForValue = function (value) {\n    return Array.from(this.valuesByKey).filter(function (_a) {\n      var key = _a[0],\n          values = _a[1];\n      return values.has(value);\n    }).map(function (_a) {\n      var key = _a[0],\n          values = _a[1];\n      return key;\n    });\n  };\n\n  return Multimap;\n}();\n\nexport { Multimap };","export function add(map, key, value) {\n  fetch(map, key).add(value);\n}\nexport function del(map, key, value) {\n  fetch(map, key).delete(value);\n  prune(map, key);\n}\nexport function fetch(map, key) {\n  var values = map.get(key);\n\n  if (!values) {\n    values = new Set();\n    map.set(key, values);\n  }\n\n  return values;\n}\nexport function prune(map, key) {\n  var values = map.get(key);\n\n  if (values != null && values.size == 0) {\n    map.delete(key);\n  }\n}","import { ElementObserver } from \"./element_observer\";\n\nvar AttributeObserver =\n/** @class */\nfunction () {\n  function AttributeObserver(element, attributeName, delegate) {\n    this.attributeName = attributeName;\n    this.delegate = delegate;\n    this.elementObserver = new ElementObserver(element, this);\n  }\n\n  Object.defineProperty(AttributeObserver.prototype, \"element\", {\n    get: function get() {\n      return this.elementObserver.element;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(AttributeObserver.prototype, \"selector\", {\n    get: function get() {\n      return \"[\" + this.attributeName + \"]\";\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  AttributeObserver.prototype.start = function () {\n    this.elementObserver.start();\n  };\n\n  AttributeObserver.prototype.stop = function () {\n    this.elementObserver.stop();\n  };\n\n  AttributeObserver.prototype.refresh = function () {\n    this.elementObserver.refresh();\n  };\n\n  Object.defineProperty(AttributeObserver.prototype, \"started\", {\n    get: function get() {\n      return this.elementObserver.started;\n    },\n    enumerable: false,\n    configurable: true\n  }); // Element observer delegate\n\n  AttributeObserver.prototype.matchElement = function (element) {\n    return element.hasAttribute(this.attributeName);\n  };\n\n  AttributeObserver.prototype.matchElementsInTree = function (tree) {\n    var match = this.matchElement(tree) ? [tree] : [];\n    var matches = Array.from(tree.querySelectorAll(this.selector));\n    return match.concat(matches);\n  };\n\n  AttributeObserver.prototype.elementMatched = function (element) {\n    if (this.delegate.elementMatchedAttribute) {\n      this.delegate.elementMatchedAttribute(element, this.attributeName);\n    }\n  };\n\n  AttributeObserver.prototype.elementUnmatched = function (element) {\n    if (this.delegate.elementUnmatchedAttribute) {\n      this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n    }\n  };\n\n  AttributeObserver.prototype.elementAttributeChanged = function (element, attributeName) {\n    if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n      this.delegate.elementAttributeValueChanged(element, attributeName);\n    }\n  };\n\n  return AttributeObserver;\n}();\n\nexport { AttributeObserver };","var ElementObserver =\n/** @class */\nfunction () {\n  function ElementObserver(element, delegate) {\n    var _this = this;\n\n    this.element = element;\n    this.started = false;\n    this.delegate = delegate;\n    this.elements = new Set();\n    this.mutationObserver = new MutationObserver(function (mutations) {\n      return _this.processMutations(mutations);\n    });\n  }\n\n  ElementObserver.prototype.start = function () {\n    if (!this.started) {\n      this.started = true;\n      this.mutationObserver.observe(this.element, {\n        attributes: true,\n        childList: true,\n        subtree: true\n      });\n      this.refresh();\n    }\n  };\n\n  ElementObserver.prototype.stop = function () {\n    if (this.started) {\n      this.mutationObserver.takeRecords();\n      this.mutationObserver.disconnect();\n      this.started = false;\n    }\n  };\n\n  ElementObserver.prototype.refresh = function () {\n    if (this.started) {\n      var matches = new Set(this.matchElementsInTree());\n\n      for (var _i = 0, _a = Array.from(this.elements); _i < _a.length; _i++) {\n        var element = _a[_i];\n\n        if (!matches.has(element)) {\n          this.removeElement(element);\n        }\n      }\n\n      for (var _b = 0, _c = Array.from(matches); _b < _c.length; _b++) {\n        var element = _c[_b];\n        this.addElement(element);\n      }\n    }\n  }; // Mutation record processing\n\n\n  ElementObserver.prototype.processMutations = function (mutations) {\n    if (this.started) {\n      for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n        var mutation = mutations_1[_i];\n        this.processMutation(mutation);\n      }\n    }\n  };\n\n  ElementObserver.prototype.processMutation = function (mutation) {\n    if (mutation.type == \"attributes\") {\n      this.processAttributeChange(mutation.target, mutation.attributeName);\n    } else if (mutation.type == \"childList\") {\n      this.processRemovedNodes(mutation.removedNodes);\n      this.processAddedNodes(mutation.addedNodes);\n    }\n  };\n\n  ElementObserver.prototype.processAttributeChange = function (node, attributeName) {\n    var element = node;\n\n    if (this.elements.has(element)) {\n      if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n        this.delegate.elementAttributeChanged(element, attributeName);\n      } else {\n        this.removeElement(element);\n      }\n    } else if (this.matchElement(element)) {\n      this.addElement(element);\n    }\n  };\n\n  ElementObserver.prototype.processRemovedNodes = function (nodes) {\n    for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n      var node = _a[_i];\n      var element = this.elementFromNode(node);\n\n      if (element) {\n        this.processTree(element, this.removeElement);\n      }\n    }\n  };\n\n  ElementObserver.prototype.processAddedNodes = function (nodes) {\n    for (var _i = 0, _a = Array.from(nodes); _i < _a.length; _i++) {\n      var node = _a[_i];\n      var element = this.elementFromNode(node);\n\n      if (element && this.elementIsActive(element)) {\n        this.processTree(element, this.addElement);\n      }\n    }\n  }; // Element matching\n\n\n  ElementObserver.prototype.matchElement = function (element) {\n    return this.delegate.matchElement(element);\n  };\n\n  ElementObserver.prototype.matchElementsInTree = function (tree) {\n    if (tree === void 0) {\n      tree = this.element;\n    }\n\n    return this.delegate.matchElementsInTree(tree);\n  };\n\n  ElementObserver.prototype.processTree = function (tree, processor) {\n    for (var _i = 0, _a = this.matchElementsInTree(tree); _i < _a.length; _i++) {\n      var element = _a[_i];\n      processor.call(this, element);\n    }\n  };\n\n  ElementObserver.prototype.elementFromNode = function (node) {\n    if (node.nodeType == Node.ELEMENT_NODE) {\n      return node;\n    }\n  };\n\n  ElementObserver.prototype.elementIsActive = function (element) {\n    if (element.isConnected != this.element.isConnected) {\n      return false;\n    } else {\n      return this.element.contains(element);\n    }\n  }; // Element tracking\n\n\n  ElementObserver.prototype.addElement = function (element) {\n    if (!this.elements.has(element)) {\n      if (this.elementIsActive(element)) {\n        this.elements.add(element);\n\n        if (this.delegate.elementMatched) {\n          this.delegate.elementMatched(element);\n        }\n      }\n    }\n  };\n\n  ElementObserver.prototype.removeElement = function (element) {\n    if (this.elements.has(element)) {\n      this.elements.delete(element);\n\n      if (this.delegate.elementUnmatched) {\n        this.delegate.elementUnmatched(element);\n      }\n    }\n  };\n\n  return ElementObserver;\n}();\n\nexport { ElementObserver };","export * from \"./attribute_observer\";\nexport * from \"./element_observer\";\nexport * from \"./string_map_observer\";\nexport * from \"./token_list_observer\";\nexport * from \"./value_list_observer\";","var StringMapObserver =\n/** @class */\nfunction () {\n  function StringMapObserver(element, delegate) {\n    var _this = this;\n\n    this.element = element;\n    this.delegate = delegate;\n    this.started = false;\n    this.stringMap = new Map();\n    this.mutationObserver = new MutationObserver(function (mutations) {\n      return _this.processMutations(mutations);\n    });\n  }\n\n  StringMapObserver.prototype.start = function () {\n    if (!this.started) {\n      this.started = true;\n      this.mutationObserver.observe(this.element, {\n        attributes: true\n      });\n      this.refresh();\n    }\n  };\n\n  StringMapObserver.prototype.stop = function () {\n    if (this.started) {\n      this.mutationObserver.takeRecords();\n      this.mutationObserver.disconnect();\n      this.started = false;\n    }\n  };\n\n  StringMapObserver.prototype.refresh = function () {\n    if (this.started) {\n      for (var _i = 0, _a = this.knownAttributeNames; _i < _a.length; _i++) {\n        var attributeName = _a[_i];\n        this.refreshAttribute(attributeName);\n      }\n    }\n  }; // Mutation record processing\n\n\n  StringMapObserver.prototype.processMutations = function (mutations) {\n    if (this.started) {\n      for (var _i = 0, mutations_1 = mutations; _i < mutations_1.length; _i++) {\n        var mutation = mutations_1[_i];\n        this.processMutation(mutation);\n      }\n    }\n  };\n\n  StringMapObserver.prototype.processMutation = function (mutation) {\n    var attributeName = mutation.attributeName;\n\n    if (attributeName) {\n      this.refreshAttribute(attributeName);\n    }\n  }; // State tracking\n\n\n  StringMapObserver.prototype.refreshAttribute = function (attributeName) {\n    var key = this.delegate.getStringMapKeyForAttribute(attributeName);\n\n    if (key != null) {\n      if (!this.stringMap.has(attributeName)) {\n        this.stringMapKeyAdded(key, attributeName);\n      }\n\n      var value = this.element.getAttribute(attributeName);\n\n      if (this.stringMap.get(attributeName) != value) {\n        this.stringMapValueChanged(value, key);\n      }\n\n      if (value == null) {\n        this.stringMap.delete(attributeName);\n        this.stringMapKeyRemoved(key, attributeName);\n      } else {\n        this.stringMap.set(attributeName, value);\n      }\n    }\n  };\n\n  StringMapObserver.prototype.stringMapKeyAdded = function (key, attributeName) {\n    if (this.delegate.stringMapKeyAdded) {\n      this.delegate.stringMapKeyAdded(key, attributeName);\n    }\n  };\n\n  StringMapObserver.prototype.stringMapValueChanged = function (value, key) {\n    if (this.delegate.stringMapValueChanged) {\n      this.delegate.stringMapValueChanged(value, key);\n    }\n  };\n\n  StringMapObserver.prototype.stringMapKeyRemoved = function (key, attributeName) {\n    if (this.delegate.stringMapKeyRemoved) {\n      this.delegate.stringMapKeyRemoved(key, attributeName);\n    }\n  };\n\n  Object.defineProperty(StringMapObserver.prototype, \"knownAttributeNames\", {\n    get: function get() {\n      return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(StringMapObserver.prototype, \"currentAttributeNames\", {\n    get: function get() {\n      return Array.from(this.element.attributes).map(function (attribute) {\n        return attribute.name;\n      });\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(StringMapObserver.prototype, \"recordedAttributeNames\", {\n    get: function get() {\n      return Array.from(this.stringMap.keys());\n    },\n    enumerable: false,\n    configurable: true\n  });\n  return StringMapObserver;\n}();\n\nexport { StringMapObserver };","import { AttributeObserver } from \"./attribute_observer\";\nimport { Multimap } from \"@stimulus/multimap\";\n\nvar TokenListObserver =\n/** @class */\nfunction () {\n  function TokenListObserver(element, attributeName, delegate) {\n    this.attributeObserver = new AttributeObserver(element, attributeName, this);\n    this.delegate = delegate;\n    this.tokensByElement = new Multimap();\n  }\n\n  Object.defineProperty(TokenListObserver.prototype, \"started\", {\n    get: function get() {\n      return this.attributeObserver.started;\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  TokenListObserver.prototype.start = function () {\n    this.attributeObserver.start();\n  };\n\n  TokenListObserver.prototype.stop = function () {\n    this.attributeObserver.stop();\n  };\n\n  TokenListObserver.prototype.refresh = function () {\n    this.attributeObserver.refresh();\n  };\n\n  Object.defineProperty(TokenListObserver.prototype, \"element\", {\n    get: function get() {\n      return this.attributeObserver.element;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(TokenListObserver.prototype, \"attributeName\", {\n    get: function get() {\n      return this.attributeObserver.attributeName;\n    },\n    enumerable: false,\n    configurable: true\n  }); // Attribute observer delegate\n\n  TokenListObserver.prototype.elementMatchedAttribute = function (element) {\n    this.tokensMatched(this.readTokensForElement(element));\n  };\n\n  TokenListObserver.prototype.elementAttributeValueChanged = function (element) {\n    var _a = this.refreshTokensForElement(element),\n        unmatchedTokens = _a[0],\n        matchedTokens = _a[1];\n\n    this.tokensUnmatched(unmatchedTokens);\n    this.tokensMatched(matchedTokens);\n  };\n\n  TokenListObserver.prototype.elementUnmatchedAttribute = function (element) {\n    this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n  };\n\n  TokenListObserver.prototype.tokensMatched = function (tokens) {\n    var _this = this;\n\n    tokens.forEach(function (token) {\n      return _this.tokenMatched(token);\n    });\n  };\n\n  TokenListObserver.prototype.tokensUnmatched = function (tokens) {\n    var _this = this;\n\n    tokens.forEach(function (token) {\n      return _this.tokenUnmatched(token);\n    });\n  };\n\n  TokenListObserver.prototype.tokenMatched = function (token) {\n    this.delegate.tokenMatched(token);\n    this.tokensByElement.add(token.element, token);\n  };\n\n  TokenListObserver.prototype.tokenUnmatched = function (token) {\n    this.delegate.tokenUnmatched(token);\n    this.tokensByElement.delete(token.element, token);\n  };\n\n  TokenListObserver.prototype.refreshTokensForElement = function (element) {\n    var previousTokens = this.tokensByElement.getValuesForKey(element);\n    var currentTokens = this.readTokensForElement(element);\n    var firstDifferingIndex = zip(previousTokens, currentTokens).findIndex(function (_a) {\n      var previousToken = _a[0],\n          currentToken = _a[1];\n      return !tokensAreEqual(previousToken, currentToken);\n    });\n\n    if (firstDifferingIndex == -1) {\n      return [[], []];\n    } else {\n      return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n    }\n  };\n\n  TokenListObserver.prototype.readTokensForElement = function (element) {\n    var attributeName = this.attributeName;\n    var tokenString = element.getAttribute(attributeName) || \"\";\n    return parseTokenString(tokenString, element, attributeName);\n  };\n\n  return TokenListObserver;\n}();\n\nexport { TokenListObserver };\n\nfunction parseTokenString(tokenString, element, attributeName) {\n  return tokenString.trim().split(/\\s+/).filter(function (content) {\n    return content.length;\n  }).map(function (content, index) {\n    return {\n      element: element,\n      attributeName: attributeName,\n      content: content,\n      index: index\n    };\n  });\n}\n\nfunction zip(left, right) {\n  var length = Math.max(left.length, right.length);\n  return Array.from({\n    length: length\n  }, function (_, index) {\n    return [left[index], right[index]];\n  });\n}\n\nfunction tokensAreEqual(left, right) {\n  return left && right && left.index == right.index && left.content == right.content;\n}","import { TokenListObserver } from \"./token_list_observer\";\n\nvar ValueListObserver =\n/** @class */\nfunction () {\n  function ValueListObserver(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\n  Object.defineProperty(ValueListObserver.prototype, \"started\", {\n    get: function get() {\n      return this.tokenListObserver.started;\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  ValueListObserver.prototype.start = function () {\n    this.tokenListObserver.start();\n  };\n\n  ValueListObserver.prototype.stop = function () {\n    this.tokenListObserver.stop();\n  };\n\n  ValueListObserver.prototype.refresh = function () {\n    this.tokenListObserver.refresh();\n  };\n\n  Object.defineProperty(ValueListObserver.prototype, \"element\", {\n    get: function get() {\n      return this.tokenListObserver.element;\n    },\n    enumerable: false,\n    configurable: true\n  });\n  Object.defineProperty(ValueListObserver.prototype, \"attributeName\", {\n    get: function get() {\n      return this.tokenListObserver.attributeName;\n    },\n    enumerable: false,\n    configurable: true\n  });\n\n  ValueListObserver.prototype.tokenMatched = function (token) {\n    var element = token.element;\n    var value = this.fetchParseResultForToken(token).value;\n\n    if (value) {\n      this.fetchValuesByTokenForElement(element).set(token, value);\n      this.delegate.elementMatchedValue(element, value);\n    }\n  };\n\n  ValueListObserver.prototype.tokenUnmatched = function (token) {\n    var element = token.element;\n    var value = this.fetchParseResultForToken(token).value;\n\n    if (value) {\n      this.fetchValuesByTokenForElement(element).delete(token);\n      this.delegate.elementUnmatchedValue(element, value);\n    }\n  };\n\n  ValueListObserver.prototype.fetchParseResultForToken = function (token) {\n    var parseResult = this.parseResultsByToken.get(token);\n\n    if (!parseResult) {\n      parseResult = this.parseToken(token);\n      this.parseResultsByToken.set(token, parseResult);\n    }\n\n    return parseResult;\n  };\n\n  ValueListObserver.prototype.fetchValuesByTokenForElement = function (element) {\n    var valuesByToken = this.valuesByTokenByElement.get(element);\n\n    if (!valuesByToken) {\n      valuesByToken = new Map();\n      this.valuesByTokenByElement.set(element, valuesByToken);\n    }\n\n    return valuesByToken;\n  };\n\n  ValueListObserver.prototype.parseToken = function (token) {\n    try {\n      var value = this.delegate.parseValueForToken(token);\n      return {\n        value: value\n      };\n    } catch (error) {\n      return {\n        error: error\n      };\n    }\n  };\n\n  return ValueListObserver;\n}();\n\nexport { ValueListObserver };","export function definitionsFromContext(context) {\n  return context.keys().map(function (key) {\n    return definitionForModuleWithContextAndKey(context, key);\n  }).filter(function (value) {\n    return value;\n  });\n}\n\nfunction definitionForModuleWithContextAndKey(context, key) {\n  var identifier = identifierForContextKey(key);\n\n  if (identifier) {\n    return definitionForModuleAndIdentifier(context(key), identifier);\n  }\n}\n\nfunction definitionForModuleAndIdentifier(module, identifier) {\n  var controllerConstructor = module.default;\n\n  if (typeof controllerConstructor == \"function\") {\n    return {\n      identifier: identifier,\n      controllerConstructor: controllerConstructor\n    };\n  }\n}\n\nexport function identifierForContextKey(key) {\n  var logicalName = (key.match(/^(?:\\.\\/)?(.+)(?:[_-]controller\\..+?)$/) || [])[1];\n\n  if (logicalName) {\n    return logicalName.replace(/_/g, \"-\").replace(/\\//g, \"--\");\n  }\n}","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n  \"use strict\";\n\n  var Op = Object.prototype;\n  var hasOwn = Op.hasOwnProperty;\n  var undefined; // More compressible than void 0.\n  var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n  var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n  var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n  var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n  function define(obj, key, value) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n    return obj[key];\n  }\n  try {\n    // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n    define({}, \"\");\n  } catch (err) {\n    define = function(obj, key, value) {\n      return obj[key] = value;\n    };\n  }\n\n  function wrap(innerFn, outerFn, self, tryLocsList) {\n    // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n    var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n    var generator = Object.create(protoGenerator.prototype);\n    var context = new Context(tryLocsList || []);\n\n    // The ._invoke method unifies the implementations of the .next,\n    // .throw, and .return methods.\n    generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n    return generator;\n  }\n  exports.wrap = wrap;\n\n  // Try/catch helper to minimize deoptimizations. Returns a completion\n  // record like context.tryEntries[i].completion. This interface could\n  // have been (and was previously) designed to take a closure to be\n  // invoked without arguments, but in all the cases we care about we\n  // already have an existing method we want to call, so there's no need\n  // to create a new function object. We can even get away with assuming\n  // the method takes exactly one argument, since that happens to be true\n  // in every case, so we don't have to touch the arguments object. The\n  // only additional allocation required is the completion record, which\n  // has a stable shape and so hopefully should be cheap to allocate.\n  function tryCatch(fn, obj, arg) {\n    try {\n      return { type: \"normal\", arg: fn.call(obj, arg) };\n    } catch (err) {\n      return { type: \"throw\", arg: err };\n    }\n  }\n\n  var GenStateSuspendedStart = \"suspendedStart\";\n  var GenStateSuspendedYield = \"suspendedYield\";\n  var GenStateExecuting = \"executing\";\n  var GenStateCompleted = \"completed\";\n\n  // Returning this object from the innerFn has the same effect as\n  // breaking out of the dispatch switch statement.\n  var ContinueSentinel = {};\n\n  // Dummy constructor functions that we use as the .constructor and\n  // .constructor.prototype properties for functions that return Generator\n  // objects. For full spec compliance, you may wish to configure your\n  // minifier not to mangle the names of these two functions.\n  function Generator() {}\n  function GeneratorFunction() {}\n  function GeneratorFunctionPrototype() {}\n\n  // This is a polyfill for %IteratorPrototype% for environments that\n  // don't natively support it.\n  var IteratorPrototype = {};\n  IteratorPrototype[iteratorSymbol] = function () {\n    return this;\n  };\n\n  var getProto = Object.getPrototypeOf;\n  var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n  if (NativeIteratorPrototype &&\n      NativeIteratorPrototype !== Op &&\n      hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n    // This environment has a native %IteratorPrototype%; use it instead\n    // of the polyfill.\n    IteratorPrototype = NativeIteratorPrototype;\n  }\n\n  var Gp = GeneratorFunctionPrototype.prototype =\n    Generator.prototype = Object.create(IteratorPrototype);\n  GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n  GeneratorFunctionPrototype.constructor = GeneratorFunction;\n  GeneratorFunction.displayName = define(\n    GeneratorFunctionPrototype,\n    toStringTagSymbol,\n    \"GeneratorFunction\"\n  );\n\n  // Helper for defining the .next, .throw, and .return methods of the\n  // Iterator interface in terms of a single ._invoke method.\n  function defineIteratorMethods(prototype) {\n    [\"next\", \"throw\", \"return\"].forEach(function(method) {\n      define(prototype, method, function(arg) {\n        return this._invoke(method, arg);\n      });\n    });\n  }\n\n  exports.isGeneratorFunction = function(genFun) {\n    var ctor = typeof genFun === \"function\" && genFun.constructor;\n    return ctor\n      ? ctor === GeneratorFunction ||\n        // For the native GeneratorFunction constructor, the best we can\n        // do is to check its .name property.\n        (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n      : false;\n  };\n\n  exports.mark = function(genFun) {\n    if (Object.setPrototypeOf) {\n      Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n    } else {\n      genFun.__proto__ = GeneratorFunctionPrototype;\n      define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n    }\n    genFun.prototype = Object.create(Gp);\n    return genFun;\n  };\n\n  // Within the body of any async function, `await x` is transformed to\n  // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n  // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n  // meant to be awaited.\n  exports.awrap = function(arg) {\n    return { __await: arg };\n  };\n\n  function AsyncIterator(generator, PromiseImpl) {\n    function invoke(method, arg, resolve, reject) {\n      var record = tryCatch(generator[method], generator, arg);\n      if (record.type === \"throw\") {\n        reject(record.arg);\n      } else {\n        var result = record.arg;\n        var value = result.value;\n        if (value &&\n            typeof value === \"object\" &&\n            hasOwn.call(value, \"__await\")) {\n          return PromiseImpl.resolve(value.__await).then(function(value) {\n            invoke(\"next\", value, resolve, reject);\n          }, function(err) {\n            invoke(\"throw\", err, resolve, reject);\n          });\n        }\n\n        return PromiseImpl.resolve(value).then(function(unwrapped) {\n          // When a yielded Promise is resolved, its final value becomes\n          // the .value of the Promise<{value,done}> result for the\n          // current iteration.\n          result.value = unwrapped;\n          resolve(result);\n        }, function(error) {\n          // If a rejected Promise was yielded, throw the rejection back\n          // into the async generator function so it can be handled there.\n          return invoke(\"throw\", error, resolve, reject);\n        });\n      }\n    }\n\n    var previousPromise;\n\n    function enqueue(method, arg) {\n      function callInvokeWithMethodAndArg() {\n        return new PromiseImpl(function(resolve, reject) {\n          invoke(method, arg, resolve, reject);\n        });\n      }\n\n      return previousPromise =\n        // If enqueue has been called before, then we want to wait until\n        // all previous Promises have been resolved before calling invoke,\n        // so that results are always delivered in the correct order. If\n        // enqueue has not been called before, then it is important to\n        // call invoke immediately, without waiting on a callback to fire,\n        // so that the async generator function has the opportunity to do\n        // any necessary setup in a predictable way. This predictability\n        // is why the Promise constructor synchronously invokes its\n        // executor callback, and why async functions synchronously\n        // execute code before the first await. Since we implement simple\n        // async functions in terms of async generators, it is especially\n        // important to get this right, even though it requires care.\n        previousPromise ? previousPromise.then(\n          callInvokeWithMethodAndArg,\n          // Avoid propagating failures to Promises returned by later\n          // invocations of the iterator.\n          callInvokeWithMethodAndArg\n        ) : callInvokeWithMethodAndArg();\n    }\n\n    // Define the unified helper method that is used to implement .next,\n    // .throw, and .return (see defineIteratorMethods).\n    this._invoke = enqueue;\n  }\n\n  defineIteratorMethods(AsyncIterator.prototype);\n  AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n    return this;\n  };\n  exports.AsyncIterator = AsyncIterator;\n\n  // Note that simple async functions are implemented on top of\n  // AsyncIterator objects; they just return a Promise for the value of\n  // the final result produced by the iterator.\n  exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n    if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n    var iter = new AsyncIterator(\n      wrap(innerFn, outerFn, self, tryLocsList),\n      PromiseImpl\n    );\n\n    return exports.isGeneratorFunction(outerFn)\n      ? iter // If outerFn is a generator, return the full iterator.\n      : iter.next().then(function(result) {\n          return result.done ? result.value : iter.next();\n        });\n  };\n\n  function makeInvokeMethod(innerFn, self, context) {\n    var state = GenStateSuspendedStart;\n\n    return function invoke(method, arg) {\n      if (state === GenStateExecuting) {\n        throw new Error(\"Generator is already running\");\n      }\n\n      if (state === GenStateCompleted) {\n        if (method === \"throw\") {\n          throw arg;\n        }\n\n        // Be forgiving, per 25.3.3.3.3 of the spec:\n        // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n        return doneResult();\n      }\n\n      context.method = method;\n      context.arg = arg;\n\n      while (true) {\n        var delegate = context.delegate;\n        if (delegate) {\n          var delegateResult = maybeInvokeDelegate(delegate, context);\n          if (delegateResult) {\n            if (delegateResult === ContinueSentinel) continue;\n            return delegateResult;\n          }\n        }\n\n        if (context.method === \"next\") {\n          // Setting context._sent for legacy support of Babel's\n          // function.sent implementation.\n          context.sent = context._sent = context.arg;\n\n        } else if (context.method === \"throw\") {\n          if (state === GenStateSuspendedStart) {\n            state = GenStateCompleted;\n            throw context.arg;\n          }\n\n          context.dispatchException(context.arg);\n\n        } else if (context.method === \"return\") {\n          context.abrupt(\"return\", context.arg);\n        }\n\n        state = GenStateExecuting;\n\n        var record = tryCatch(innerFn, self, context);\n        if (record.type === \"normal\") {\n          // If an exception is thrown from innerFn, we leave state ===\n          // GenStateExecuting and loop back for another invocation.\n          state = context.done\n            ? GenStateCompleted\n            : GenStateSuspendedYield;\n\n          if (record.arg === ContinueSentinel) {\n            continue;\n          }\n\n          return {\n            value: record.arg,\n            done: context.done\n          };\n\n        } else if (record.type === \"throw\") {\n          state = GenStateCompleted;\n          // Dispatch the exception by looping back around to the\n          // context.dispatchException(context.arg) call above.\n          context.method = \"throw\";\n          context.arg = record.arg;\n        }\n      }\n    };\n  }\n\n  // Call delegate.iterator[context.method](context.arg) and handle the\n  // result, either by returning a { value, done } result from the\n  // delegate iterator, or by modifying context.method and context.arg,\n  // setting context.delegate to null, and returning the ContinueSentinel.\n  function maybeInvokeDelegate(delegate, context) {\n    var method = delegate.iterator[context.method];\n    if (method === undefined) {\n      // A .throw or .return when the delegate iterator has no .throw\n      // method always terminates the yield* loop.\n      context.delegate = null;\n\n      if (context.method === \"throw\") {\n        // Note: [\"return\"] must be used for ES3 parsing compatibility.\n        if (delegate.iterator[\"return\"]) {\n          // If the delegate iterator has a return method, give it a\n          // chance to clean up.\n          context.method = \"return\";\n          context.arg = undefined;\n          maybeInvokeDelegate(delegate, context);\n\n          if (context.method === \"throw\") {\n            // If maybeInvokeDelegate(context) changed context.method from\n            // \"return\" to \"throw\", let that override the TypeError below.\n            return ContinueSentinel;\n          }\n        }\n\n        context.method = \"throw\";\n        context.arg = new TypeError(\n          \"The iterator does not provide a 'throw' method\");\n      }\n\n      return ContinueSentinel;\n    }\n\n    var record = tryCatch(method, delegate.iterator, context.arg);\n\n    if (record.type === \"throw\") {\n      context.method = \"throw\";\n      context.arg = record.arg;\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    var info = record.arg;\n\n    if (! info) {\n      context.method = \"throw\";\n      context.arg = new TypeError(\"iterator result is not an object\");\n      context.delegate = null;\n      return ContinueSentinel;\n    }\n\n    if (info.done) {\n      // Assign the result of the finished delegate to the temporary\n      // variable specified by delegate.resultName (see delegateYield).\n      context[delegate.resultName] = info.value;\n\n      // Resume execution at the desired location (see delegateYield).\n      context.next = delegate.nextLoc;\n\n      // If context.method was \"throw\" but the delegate handled the\n      // exception, let the outer generator proceed normally. If\n      // context.method was \"next\", forget context.arg since it has been\n      // \"consumed\" by the delegate iterator. If context.method was\n      // \"return\", allow the original .return call to continue in the\n      // outer generator.\n      if (context.method !== \"return\") {\n        context.method = \"next\";\n        context.arg = undefined;\n      }\n\n    } else {\n      // Re-yield the result returned by the delegate method.\n      return info;\n    }\n\n    // The delegate iterator is finished, so forget it and continue with\n    // the outer generator.\n    context.delegate = null;\n    return ContinueSentinel;\n  }\n\n  // Define Generator.prototype.{next,throw,return} in terms of the\n  // unified ._invoke helper method.\n  defineIteratorMethods(Gp);\n\n  define(Gp, toStringTagSymbol, \"Generator\");\n\n  // A Generator should always return itself as the iterator object when the\n  // @@iterator function is called on it. Some browsers' implementations of the\n  // iterator prototype chain incorrectly implement this, causing the Generator\n  // object to not be returned from this call. This ensures that doesn't happen.\n  // See https://github.com/facebook/regenerator/issues/274 for more details.\n  Gp[iteratorSymbol] = function() {\n    return this;\n  };\n\n  Gp.toString = function() {\n    return \"[object Generator]\";\n  };\n\n  function pushTryEntry(locs) {\n    var entry = { tryLoc: locs[0] };\n\n    if (1 in locs) {\n      entry.catchLoc = locs[1];\n    }\n\n    if (2 in locs) {\n      entry.finallyLoc = locs[2];\n      entry.afterLoc = locs[3];\n    }\n\n    this.tryEntries.push(entry);\n  }\n\n  function resetTryEntry(entry) {\n    var record = entry.completion || {};\n    record.type = \"normal\";\n    delete record.arg;\n    entry.completion = record;\n  }\n\n  function Context(tryLocsList) {\n    // The root entry object (effectively a try statement without a catch\n    // or a finally block) gives us a place to store values thrown from\n    // locations where there is no enclosing try statement.\n    this.tryEntries = [{ tryLoc: \"root\" }];\n    tryLocsList.forEach(pushTryEntry, this);\n    this.reset(true);\n  }\n\n  exports.keys = function(object) {\n    var keys = [];\n    for (var key in object) {\n      keys.push(key);\n    }\n    keys.reverse();\n\n    // Rather than returning an object with a next method, we keep\n    // things simple and return the next function itself.\n    return function next() {\n      while (keys.length) {\n        var key = keys.pop();\n        if (key in object) {\n          next.value = key;\n          next.done = false;\n          return next;\n        }\n      }\n\n      // To avoid creating an additional object, we just hang the .value\n      // and .done properties off the next function object itself. This\n      // also ensures that the minifier will not anonymize the function.\n      next.done = true;\n      return next;\n    };\n  };\n\n  function values(iterable) {\n    if (iterable) {\n      var iteratorMethod = iterable[iteratorSymbol];\n      if (iteratorMethod) {\n        return iteratorMethod.call(iterable);\n      }\n\n      if (typeof iterable.next === \"function\") {\n        return iterable;\n      }\n\n      if (!isNaN(iterable.length)) {\n        var i = -1, next = function next() {\n          while (++i < iterable.length) {\n            if (hasOwn.call(iterable, i)) {\n              next.value = iterable[i];\n              next.done = false;\n              return next;\n            }\n          }\n\n          next.value = undefined;\n          next.done = true;\n\n          return next;\n        };\n\n        return next.next = next;\n      }\n    }\n\n    // Return an iterator with no values.\n    return { next: doneResult };\n  }\n  exports.values = values;\n\n  function doneResult() {\n    return { value: undefined, done: true };\n  }\n\n  Context.prototype = {\n    constructor: Context,\n\n    reset: function(skipTempReset) {\n      this.prev = 0;\n      this.next = 0;\n      // Resetting context._sent for legacy support of Babel's\n      // function.sent implementation.\n      this.sent = this._sent = undefined;\n      this.done = false;\n      this.delegate = null;\n\n      this.method = \"next\";\n      this.arg = undefined;\n\n      this.tryEntries.forEach(resetTryEntry);\n\n      if (!skipTempReset) {\n        for (var name in this) {\n          // Not sure about the optimal order of these conditions:\n          if (name.charAt(0) === \"t\" &&\n              hasOwn.call(this, name) &&\n              !isNaN(+name.slice(1))) {\n            this[name] = undefined;\n          }\n        }\n      }\n    },\n\n    stop: function() {\n      this.done = true;\n\n      var rootEntry = this.tryEntries[0];\n      var rootRecord = rootEntry.completion;\n      if (rootRecord.type === \"throw\") {\n        throw rootRecord.arg;\n      }\n\n      return this.rval;\n    },\n\n    dispatchException: function(exception) {\n      if (this.done) {\n        throw exception;\n      }\n\n      var context = this;\n      function handle(loc, caught) {\n        record.type = \"throw\";\n        record.arg = exception;\n        context.next = loc;\n\n        if (caught) {\n          // If the dispatched exception was caught by a catch block,\n          // then let that catch block handle the exception normally.\n          context.method = \"next\";\n          context.arg = undefined;\n        }\n\n        return !! caught;\n      }\n\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        var record = entry.completion;\n\n        if (entry.tryLoc === \"root\") {\n          // Exception thrown outside of any try block that could handle\n          // it, so set the completion value of the entire function to\n          // throw the exception.\n          return handle(\"end\");\n        }\n\n        if (entry.tryLoc <= this.prev) {\n          var hasCatch = hasOwn.call(entry, \"catchLoc\");\n          var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n          if (hasCatch && hasFinally) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            } else if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else if (hasCatch) {\n            if (this.prev < entry.catchLoc) {\n              return handle(entry.catchLoc, true);\n            }\n\n          } else if (hasFinally) {\n            if (this.prev < entry.finallyLoc) {\n              return handle(entry.finallyLoc);\n            }\n\n          } else {\n            throw new Error(\"try statement without catch or finally\");\n          }\n        }\n      }\n    },\n\n    abrupt: function(type, arg) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc <= this.prev &&\n            hasOwn.call(entry, \"finallyLoc\") &&\n            this.prev < entry.finallyLoc) {\n          var finallyEntry = entry;\n          break;\n        }\n      }\n\n      if (finallyEntry &&\n          (type === \"break\" ||\n           type === \"continue\") &&\n          finallyEntry.tryLoc <= arg &&\n          arg <= finallyEntry.finallyLoc) {\n        // Ignore the finally entry if control is not jumping to a\n        // location outside the try/catch block.\n        finallyEntry = null;\n      }\n\n      var record = finallyEntry ? finallyEntry.completion : {};\n      record.type = type;\n      record.arg = arg;\n\n      if (finallyEntry) {\n        this.method = \"next\";\n        this.next = finallyEntry.finallyLoc;\n        return ContinueSentinel;\n      }\n\n      return this.complete(record);\n    },\n\n    complete: function(record, afterLoc) {\n      if (record.type === \"throw\") {\n        throw record.arg;\n      }\n\n      if (record.type === \"break\" ||\n          record.type === \"continue\") {\n        this.next = record.arg;\n      } else if (record.type === \"return\") {\n        this.rval = this.arg = record.arg;\n        this.method = \"return\";\n        this.next = \"end\";\n      } else if (record.type === \"normal\" && afterLoc) {\n        this.next = afterLoc;\n      }\n\n      return ContinueSentinel;\n    },\n\n    finish: function(finallyLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.finallyLoc === finallyLoc) {\n          this.complete(entry.completion, entry.afterLoc);\n          resetTryEntry(entry);\n          return ContinueSentinel;\n        }\n      }\n    },\n\n    \"catch\": function(tryLoc) {\n      for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n        var entry = this.tryEntries[i];\n        if (entry.tryLoc === tryLoc) {\n          var record = entry.completion;\n          if (record.type === \"throw\") {\n            var thrown = record.arg;\n            resetTryEntry(entry);\n          }\n          return thrown;\n        }\n      }\n\n      // The context.catch method must only be called with a location\n      // argument that corresponds to a known catch block.\n      throw new Error(\"illegal catch attempt\");\n    },\n\n    delegateYield: function(iterable, resultName, nextLoc) {\n      this.delegate = {\n        iterator: values(iterable),\n        resultName: resultName,\n        nextLoc: nextLoc\n      };\n\n      if (this.method === \"next\") {\n        // Deliberately forget the last sent value so that we don't\n        // accidentally pass it on to the delegate.\n        this.arg = undefined;\n      }\n\n      return ContinueSentinel;\n    }\n  };\n\n  // Regardless of whether this script is executing as a CommonJS module\n  // or not, return the runtime object so that we can declare the variable\n  // regeneratorRuntime in the outer scope, which allows this module to be\n  // injected easily by `bin/regenerator --include-runtime script.js`.\n  return exports;\n\n}(\n  // If this script is executing as a CommonJS module, use module.exports\n  // as the regeneratorRuntime namespace. Otherwise create a new empty\n  // object. Either way, the resulting object will be used to initialize\n  // the regeneratorRuntime variable at the top of this file.\n  typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n  regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n  // This module should not be running in strict mode, so the above\n  // assignment should always work unless something is misconfigured. Just\n  // in case runtime.js accidentally runs in strict mode, we can escape\n  // strict mode using a global Function call. This could conceivably fail\n  // if a Content Security Policy forbids using Function, but in that case\n  // the proper solution is to fix the accidental strict mode problem. If\n  // you've misconfigured your bundler to force strict mode and applied a\n  // CSP to forbid Function, and you're not willing to fix either of those\n  // problems, please detail your unique predicament in a GitHub issue.\n  Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","export * from \"@stimulus/core\";","export * from \"@stimulus/webpack-helpers\";"],"mappings":";AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACrMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AACA;AAEA;AACA;AAEA;AACA;AAAA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRA;AACA;;;;;;;;;;;;;;AAQA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAEA;AAAA;AAAA;AACA;;;;AAdA;AACA;AAAA;AACA;AADA;AAIA;;;AAYA;AACA;AAEA;AACA;AACA;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BA;AACA;;;;;;;;;;;;;;AAKA;AACA;AACA;;;AAEA;AACA;AACA;;;;AAVA;AACA;AAAA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACJA;AACA;;;;;;;;;;;;;;AAIA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AAdA;AACA;AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;;;;;;;;;;;;;;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AACA;AACA;;;AAEA;AAAA;AACA;AAAA;AACA;AACA;AACA;;;AAEA;AACA;AACA;AAAA;AACA;AACA;AACA;AACA;AAAA;AAAA;AACA;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAEA;AACA;AAAA;AAAA;AACA;;;AAEA;AACA;AACA;AACA;;;;AAhFA;AACA;AAAA;AACA;AAAA;AAAA;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;;;;;;;;;;;;ACAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC5EA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC5GA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACh8JA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACpCA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC5RA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/HA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC3GA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC5JA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACzGA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC3EA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxDA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/GA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC1EA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;;;;;;;;;;;;ACFA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnJA;AAAA;AAAA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7DA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACpFA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AClIA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjFA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACjKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;;;;;;;;;;;;;ACDA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxEA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACzEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;ACvBA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5EA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxKA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;;;;;;;;;;;;;ACHA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/HA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC7IA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxGA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC3uBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;A","sourceRoot":""}