{
  "version": 3,
  "sources": ["../../../node_modules/@rails/actioncable/src/adapters.js", "../../../node_modules/@rails/actioncable/src/logger.js", "../../../node_modules/@rails/actioncable/src/connection_monitor.js", "../../../node_modules/@rails/actioncable/src/internal.js", "../../../node_modules/@rails/actioncable/src/connection.js", "../../../node_modules/@rails/actioncable/src/subscription.js", "../../../node_modules/@rails/actioncable/src/subscription_guarantor.js", "../../../node_modules/@rails/actioncable/src/subscriptions.js", "../../../node_modules/@rails/actioncable/src/consumer.js", "../../../node_modules/@rails/actioncable/src/index.js", "../../../node_modules/@rails/activestorage/app/assets/javascripts/activestorage.js", "../../../node_modules/strict-uri-encode/index.js", "../../../node_modules/decode-uri-component/index.js", "../../../node_modules/split-on-first/index.js", "../../../node_modules/filter-obj/index.js", "../../../node_modules/query-string/index.js", "../../../node_modules/url-query-json-parser/index.js", "../../../node_modules/flatpickr/dist/l10n/fr.js", "../../../node_modules/jquery/dist/jquery.js", "../../../node_modules/jquery-validation/dist/jquery.validate.js", "../../javascript/custom/libs/jquery-validation/localization/messages_fr.js", "../../../node_modules/@rails/ujs/lib/assets/compiled/rails-ujs.js", "../../../node_modules/@nathanvda/cocoon/cocoon.js", "../../../node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/snakeize.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/cable_stream_source_element.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/fetch_requests.js", "../../../node_modules/@hotwired/turbo-rails/app/javascript/turbo/index.js", "../../../node_modules/trix/dist/trix.esm.min.js", "../../../node_modules/@rails/actiontext/app/javascript/actiontext/attachment_upload.js", "../../../node_modules/@rails/actiontext/app/javascript/actiontext/index.js", "../../javascript/custom/trix_customization.js", "../../../node_modules/@hotwired/stimulus/dist/stimulus.js", "../../javascript/controllers/application.js", "../../javascript/controllers/sidebar_controller.js", "../../../node_modules/@rails/request.js/src/fetch_response.js", "../../../node_modules/@rails/request.js/src/request_interceptor.js", "../../../node_modules/@rails/request.js/src/lib/utils.js", "../../../node_modules/@rails/request.js/src/fetch_request.js", "../../../node_modules/@rails/request.js/src/verbs.js", "../../javascript/controllers/authorized_users_controller.js", "../../javascript/controllers/multi_upload_controller.js", "../../javascript/controllers/roles_controller.js", "../../../node_modules/tom-select/src/contrib/microevent.ts", "../../../node_modules/tom-select/src/contrib/microplugin.ts", "../../../node_modules/tom-select/node_modules/@orchidjs/unicode-variants/dist/esm/regex.js", "../../../node_modules/tom-select/node_modules/@orchidjs/unicode-variants/dist/esm/strings.js", "../../../node_modules/tom-select/node_modules/@orchidjs/unicode-variants/dist/esm/index.js", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/dist/esm/utils.js", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/dist/esm/sifter.js", "../../../node_modules/tom-select/node_modules/@orchidjs/sifter/lib/utils.ts", "../../../node_modules/tom-select/src/vanilla.ts", "../../../node_modules/tom-select/src/contrib/highlight.ts", "../../../node_modules/tom-select/src/constants.ts", "../../../node_modules/tom-select/src/defaults.ts", "../../../node_modules/tom-select/src/utils.ts", "../../../node_modules/tom-select/src/getSettings.ts", "../../../node_modules/tom-select/src/tom-select.ts", "../../../node_modules/tom-select/src/plugins/caret_position/plugin.ts", "../../../node_modules/tom-select/src/plugins/dropdown_input/plugin.ts", "../../../node_modules/tom-select/src/plugins/no_backspace_delete/plugin.ts", "../../../node_modules/tom-select/src/plugins/remove_button/plugin.ts", "../../../node_modules/tom-select/src/plugins/restore_on_backspace/plugin.ts", "../../../node_modules/tom-select/src/tom-select.popular.ts", "../../javascript/controllers/ts/select_controller.js", "../../javascript/controllers/ts/tags_controller.js", "../../javascript/controllers/ts/document_file_controller.js", "../../javascript/controllers/ts/user_select_controller.js", "../../javascript/controllers/trix/trix_default_toolbar_controller.js", "../../../node_modules/flatpickr/dist/esm/types/options.js", "../../../node_modules/flatpickr/dist/esm/l10n/default.js", "../../../node_modules/flatpickr/dist/esm/utils/index.js", "../../../node_modules/flatpickr/dist/esm/utils/dom.js", "../../../node_modules/flatpickr/dist/esm/utils/formatting.js", "../../../node_modules/flatpickr/dist/esm/utils/dates.js", "../../../node_modules/flatpickr/dist/esm/utils/polyfills.js", "../../../node_modules/flatpickr/dist/esm/index.js", "../../javascript/controllers/datepicker_controller.js", "../../javascript/controllers/collapse_controller.js", "../../javascript/controllers/password_visibility.js", "../../javascript/controllers/clearable_input_controller.js", "../../javascript/controllers/autosubmit_input_controller.js", "../../javascript/controllers/dropmenu_controller.js", "../../javascript/controllers/index.js", "../../javascript/application.js", "../../javascript/jquery.js", "../../javascript/custom/elements/todoList.js", "../../javascript/custom/elements/todoItem.js", "../../javascript/custom/elements/todoInput.js", "../../../node_modules/jquery-ui/ui/version.js", "../../../node_modules/jquery-ui/ui/plugin.js", "../../../node_modules/jquery-ui/ui/widget.js", "../../../node_modules/jquery-ui/ui/data.js", "../../../node_modules/jquery-ui/ui/scroll-parent.js", "../../../node_modules/jquery-ui/ui/widgets/mouse.js", "../../../node_modules/jquery-ui/ui/widgets/sortable.js", "../../javascript/custom/main.js", "../../javascript/custom/form.js"],
  "sourcesContent": ["export default {\n  logger: self.console,\n  WebSocket: self.WebSocket\n}\n", "import adapters from \"./adapters\"\n\n// The logger is disabled by default. You can enable it with:\n//\n//   ActionCable.logger.enabled = true\n//\n//   Example:\n//\n//   import * as ActionCable from '@rails/actioncable'\n//\n//   ActionCable.logger.enabled = true\n//   ActionCable.logger.log('Connection Established.')\n//\n\nexport default {\n  log(...messages) {\n    if (this.enabled) {\n      messages.push(Date.now())\n      adapters.logger.log(\"[ActionCable]\", ...messages)\n    }\n  },\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring the cable connection is in good health by validating the heartbeat pings sent from the server, and attempting\n// revival reconnections if things go astray. Internal class, not intended for direct user manipulation.\n\nconst now = () => new Date().getTime()\n\nconst secondsSince = time => (now() - time) / 1000\n\nclass ConnectionMonitor {\n  constructor(connection) {\n    this.visibilityDidChange = this.visibilityDidChange.bind(this)\n    this.connection = connection\n    this.reconnectAttempts = 0\n  }\n\n  start() {\n    if (!this.isRunning()) {\n      this.startedAt = now()\n      delete this.stoppedAt\n      this.startPolling()\n      addEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(`ConnectionMonitor started. stale threshold = ${this.constructor.staleThreshold} s`)\n    }\n  }\n\n  stop() {\n    if (this.isRunning()) {\n      this.stoppedAt = now()\n      this.stopPolling()\n      removeEventListener(\"visibilitychange\", this.visibilityDidChange)\n      logger.log(\"ConnectionMonitor stopped\")\n    }\n  }\n\n  isRunning() {\n    return this.startedAt && !this.stoppedAt\n  }\n\n  recordPing() {\n    this.pingedAt = now()\n  }\n\n  recordConnect() {\n    this.reconnectAttempts = 0\n    this.recordPing()\n    delete this.disconnectedAt\n    logger.log(\"ConnectionMonitor recorded connect\")\n  }\n\n  recordDisconnect() {\n    this.disconnectedAt = now()\n    logger.log(\"ConnectionMonitor recorded disconnect\")\n  }\n\n  // Private\n\n  startPolling() {\n    this.stopPolling()\n    this.poll()\n  }\n\n  stopPolling() {\n    clearTimeout(this.pollTimeout)\n  }\n\n  poll() {\n    this.pollTimeout = setTimeout(() => {\n      this.reconnectIfStale()\n      this.poll()\n    }\n    , this.getPollInterval())\n  }\n\n  getPollInterval() {\n    const { staleThreshold, reconnectionBackoffRate } = this.constructor\n    const backoff = Math.pow(1 + reconnectionBackoffRate, Math.min(this.reconnectAttempts, 10))\n    const jitterMax = this.reconnectAttempts === 0 ? 1.0 : reconnectionBackoffRate\n    const jitter = jitterMax * Math.random()\n    return staleThreshold * 1000 * backoff * (1 + jitter)\n  }\n\n  reconnectIfStale() {\n    if (this.connectionIsStale()) {\n      logger.log(`ConnectionMonitor detected stale connection. reconnectAttempts = ${this.reconnectAttempts}, time stale = ${secondsSince(this.refreshedAt)} s, stale threshold = ${this.constructor.staleThreshold} s`)\n      this.reconnectAttempts++\n      if (this.disconnectedRecently()) {\n        logger.log(`ConnectionMonitor skipping reopening recent disconnect. time disconnected = ${secondsSince(this.disconnectedAt)} s`)\n      } else {\n        logger.log(\"ConnectionMonitor reopening\")\n        this.connection.reopen()\n      }\n    }\n  }\n\n  get refreshedAt() {\n    return this.pingedAt ? this.pingedAt : this.startedAt\n  }\n\n  connectionIsStale() {\n    return secondsSince(this.refreshedAt) > this.constructor.staleThreshold\n  }\n\n  disconnectedRecently() {\n    return this.disconnectedAt && (secondsSince(this.disconnectedAt) < this.constructor.staleThreshold)\n  }\n\n  visibilityDidChange() {\n    if (document.visibilityState === \"visible\") {\n      setTimeout(() => {\n        if (this.connectionIsStale() || !this.connection.isOpen()) {\n          logger.log(`ConnectionMonitor reopening stale connection on visibilitychange. visibilityState = ${document.visibilityState}`)\n          this.connection.reopen()\n        }\n      }\n      , 200)\n    }\n  }\n\n}\n\nConnectionMonitor.staleThreshold = 6 // Server::Connections::BEAT_INTERVAL * 2 (missed two pings)\nConnectionMonitor.reconnectionBackoffRate = 0.15\n\nexport default ConnectionMonitor\n", "export default {\n  \"message_types\": {\n    \"welcome\": \"welcome\",\n    \"disconnect\": \"disconnect\",\n    \"ping\": \"ping\",\n    \"confirmation\": \"confirm_subscription\",\n    \"rejection\": \"reject_subscription\"\n  },\n  \"disconnect_reasons\": {\n    \"unauthorized\": \"unauthorized\",\n    \"invalid_request\": \"invalid_request\",\n    \"server_restart\": \"server_restart\"\n  },\n  \"default_mount_path\": \"/cable\",\n  \"protocols\": [\n    \"actioncable-v1-json\",\n    \"actioncable-unsupported\"\n  ]\n}\n", "import adapters from \"./adapters\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport INTERNAL from \"./internal\"\nimport logger from \"./logger\"\n\n// Encapsulate the cable connection held by the consumer. This is an internal class not intended for direct user manipulation.\n\nconst {message_types, protocols} = INTERNAL\nconst supportedProtocols = protocols.slice(0, protocols.length - 1)\n\nconst indexOf = [].indexOf\n\nclass Connection {\n  constructor(consumer) {\n    this.open = this.open.bind(this)\n    this.consumer = consumer\n    this.subscriptions = this.consumer.subscriptions\n    this.monitor = new ConnectionMonitor(this)\n    this.disconnected = true\n  }\n\n  send(data) {\n    if (this.isOpen()) {\n      this.webSocket.send(JSON.stringify(data))\n      return true\n    } else {\n      return false\n    }\n  }\n\n  open() {\n    if (this.isActive()) {\n      logger.log(`Attempted to open WebSocket, but existing socket is ${this.getState()}`)\n      return false\n    } else {\n      logger.log(`Opening WebSocket, current state is ${this.getState()}, subprotocols: ${protocols}`)\n      if (this.webSocket) { this.uninstallEventHandlers() }\n      this.webSocket = new adapters.WebSocket(this.consumer.url, protocols)\n      this.installEventHandlers()\n      this.monitor.start()\n      return true\n    }\n  }\n\n  close({allowReconnect} = {allowReconnect: true}) {\n    if (!allowReconnect) { this.monitor.stop() }\n    if (this.isActive()) {\n      return this.webSocket.close()\n    }\n  }\n\n  reopen() {\n    logger.log(`Reopening WebSocket, current state is ${this.getState()}`)\n    if (this.isActive()) {\n      try {\n        return this.close()\n      } catch (error) {\n        logger.log(\"Failed to reopen WebSocket\", error)\n      }\n      finally {\n        logger.log(`Reopening WebSocket in ${this.constructor.reopenDelay}ms`)\n        setTimeout(this.open, this.constructor.reopenDelay)\n      }\n    } else {\n      return this.open()\n    }\n  }\n\n  getProtocol() {\n    if (this.webSocket) {\n      return this.webSocket.protocol\n    }\n  }\n\n  isOpen() {\n    return this.isState(\"open\")\n  }\n\n  isActive() {\n    return this.isState(\"open\", \"connecting\")\n  }\n\n  // Private\n\n  isProtocolSupported() {\n    return indexOf.call(supportedProtocols, this.getProtocol()) >= 0\n  }\n\n  isState(...states) {\n    return indexOf.call(states, this.getState()) >= 0\n  }\n\n  getState() {\n    if (this.webSocket) {\n      for (let state in adapters.WebSocket) {\n        if (adapters.WebSocket[state] === this.webSocket.readyState) {\n          return state.toLowerCase()\n        }\n      }\n    }\n    return null\n  }\n\n  installEventHandlers() {\n    for (let eventName in this.events) {\n      const handler = this.events[eventName].bind(this)\n      this.webSocket[`on${eventName}`] = handler\n    }\n  }\n\n  uninstallEventHandlers() {\n    for (let eventName in this.events) {\n      this.webSocket[`on${eventName}`] = function() {}\n    }\n  }\n\n}\n\nConnection.reopenDelay = 500\n\nConnection.prototype.events = {\n  message(event) {\n    if (!this.isProtocolSupported()) { return }\n    const {identifier, message, reason, reconnect, type} = JSON.parse(event.data)\n    switch (type) {\n      case message_types.welcome:\n        this.monitor.recordConnect()\n        return this.subscriptions.reload()\n      case message_types.disconnect:\n        logger.log(`Disconnecting. Reason: ${reason}`)\n        return this.close({allowReconnect: reconnect})\n      case message_types.ping:\n        return this.monitor.recordPing()\n      case message_types.confirmation:\n        this.subscriptions.confirmSubscription(identifier)\n        return this.subscriptions.notify(identifier, \"connected\")\n      case message_types.rejection:\n        return this.subscriptions.reject(identifier)\n      default:\n        return this.subscriptions.notify(identifier, \"received\", message)\n    }\n  },\n\n  open() {\n    logger.log(`WebSocket onopen event, using '${this.getProtocol()}' subprotocol`)\n    this.disconnected = false\n    if (!this.isProtocolSupported()) {\n      logger.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\")\n      return this.close({allowReconnect: false})\n    }\n  },\n\n  close(event) {\n    logger.log(\"WebSocket onclose event\")\n    if (this.disconnected) { return }\n    this.disconnected = true\n    this.monitor.recordDisconnect()\n    return this.subscriptions.notifyAll(\"disconnected\", {willAttemptReconnect: this.monitor.isRunning()})\n  },\n\n  error() {\n    logger.log(\"WebSocket onerror event\")\n  }\n}\n\nexport default Connection\n", "// A new subscription is created through the ActionCable.Subscriptions instance available on the consumer.\n// It provides a number of callbacks and a method for calling remote procedure calls on the corresponding\n// Channel instance on the server side.\n//\n// An example demonstrates the basic functionality:\n//\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\", {\n//     connected() {\n//       // Called once the subscription has been successfully completed\n//     },\n//\n//     disconnected({ willAttemptReconnect: boolean }) {\n//       // Called when the client has disconnected with the server.\n//       // The object will have an `willAttemptReconnect` property which\n//       // says whether the client has the intention of attempting\n//       // to reconnect.\n//     },\n//\n//     appear() {\n//       this.perform('appear', {appearing_on: this.appearingOn()})\n//     },\n//\n//     away() {\n//       this.perform('away')\n//     },\n//\n//     appearingOn() {\n//       $('main').data('appearing-on')\n//     }\n//   })\n//\n// The methods #appear and #away forward their intent to the remote AppearanceChannel instance on the server\n// by calling the `perform` method with the first parameter being the action (which maps to AppearanceChannel#appear/away).\n// The second parameter is a hash that'll get JSON encoded and made available on the server in the data parameter.\n//\n// This is how the server component would look:\n//\n//   class AppearanceChannel < ApplicationActionCable::Channel\n//     def subscribed\n//       current_user.appear\n//     end\n//\n//     def unsubscribed\n//       current_user.disappear\n//     end\n//\n//     def appear(data)\n//       current_user.appear on: data['appearing_on']\n//     end\n//\n//     def away\n//       current_user.away\n//     end\n//   end\n//\n// The \"AppearanceChannel\" name is automatically mapped between the client-side subscription creation and the server-side Ruby class name.\n// The AppearanceChannel#appear/away public methods are exposed automatically to client-side invocation through the perform method.\n\nconst extend = function(object, properties) {\n  if (properties != null) {\n    for (let key in properties) {\n      const value = properties[key]\n      object[key] = value\n    }\n  }\n  return object\n}\n\nexport default class Subscription {\n  constructor(consumer, params = {}, mixin) {\n    this.consumer = consumer\n    this.identifier = JSON.stringify(params)\n    extend(this, mixin)\n  }\n\n  // Perform a channel action with the optional data passed as an attribute\n  perform(action, data = {}) {\n    data.action = action\n    return this.send(data)\n  }\n\n  send(data) {\n    return this.consumer.send({command: \"message\", identifier: this.identifier, data: JSON.stringify(data)})\n  }\n\n  unsubscribe() {\n    return this.consumer.subscriptions.remove(this)\n  }\n}\n", "import logger from \"./logger\"\n\n// Responsible for ensuring channel subscribe command is confirmed, retrying until confirmation is received.\n// Internal class, not intended for direct user manipulation.\n\nclass SubscriptionGuarantor {\n  constructor(subscriptions) {\n    this.subscriptions = subscriptions\n    this.pendingSubscriptions = []\n  }\n\n  guarantee(subscription) {\n    if(this.pendingSubscriptions.indexOf(subscription) == -1){ \n      logger.log(`SubscriptionGuarantor guaranteeing ${subscription.identifier}`)\n      this.pendingSubscriptions.push(subscription) \n    }\n    else {\n      logger.log(`SubscriptionGuarantor already guaranteeing ${subscription.identifier}`)\n    }\n    this.startGuaranteeing()\n  }\n\n  forget(subscription) {\n    logger.log(`SubscriptionGuarantor forgetting ${subscription.identifier}`)\n    this.pendingSubscriptions = (this.pendingSubscriptions.filter((s) => s !== subscription))\n  }\n\n  startGuaranteeing() {\n    this.stopGuaranteeing()\n    this.retrySubscribing()\n  }\n  \n  stopGuaranteeing() {\n    clearTimeout(this.retryTimeout)\n  }\n\n  retrySubscribing() {\n    this.retryTimeout = setTimeout(() => {\n      if (this.subscriptions && typeof(this.subscriptions.subscribe) === \"function\") {\n        this.pendingSubscriptions.map((subscription) => {\n          logger.log(`SubscriptionGuarantor resubscribing ${subscription.identifier}`)\n          this.subscriptions.subscribe(subscription)\n        })\n      }\n    }\n    , 500)\n  }\n}\n\nexport default SubscriptionGuarantor", "import Subscription from \"./subscription\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport logger from \"./logger\"\n\n// Collection class for creating (and internally managing) channel subscriptions.\n// The only method intended to be triggered by the user is ActionCable.Subscriptions#create,\n// and it should be called through the consumer like so:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n\nexport default class Subscriptions {\n  constructor(consumer) {\n    this.consumer = consumer\n    this.guarantor = new SubscriptionGuarantor(this)\n    this.subscriptions = []\n  }\n\n  create(channelName, mixin) {\n    const channel = channelName\n    const params = typeof channel === \"object\" ? channel : {channel}\n    const subscription = new Subscription(this.consumer, params, mixin)\n    return this.add(subscription)\n  }\n\n  // Private\n\n  add(subscription) {\n    this.subscriptions.push(subscription)\n    this.consumer.ensureActiveConnection()\n    this.notify(subscription, \"initialized\")\n    this.subscribe(subscription)\n    return subscription\n  }\n\n  remove(subscription) {\n    this.forget(subscription)\n    if (!this.findAll(subscription.identifier).length) {\n      this.sendCommand(subscription, \"unsubscribe\")\n    }\n    return subscription\n  }\n\n  reject(identifier) {\n    return this.findAll(identifier).map((subscription) => {\n      this.forget(subscription)\n      this.notify(subscription, \"rejected\")\n      return subscription\n    })\n  }\n\n  forget(subscription) {\n    this.guarantor.forget(subscription)\n    this.subscriptions = (this.subscriptions.filter((s) => s !== subscription))\n    return subscription\n  }\n\n  findAll(identifier) {\n    return this.subscriptions.filter((s) => s.identifier === identifier)\n  }\n\n  reload() {\n    return this.subscriptions.map((subscription) =>\n      this.subscribe(subscription))\n  }\n\n  notifyAll(callbackName, ...args) {\n    return this.subscriptions.map((subscription) =>\n      this.notify(subscription, callbackName, ...args))\n  }\n\n  notify(subscription, callbackName, ...args) {\n    let subscriptions\n    if (typeof subscription === \"string\") {\n      subscriptions = this.findAll(subscription)\n    } else {\n      subscriptions = [subscription]\n    }\n\n    return subscriptions.map((subscription) =>\n      (typeof subscription[callbackName] === \"function\" ? subscription[callbackName](...args) : undefined))\n  }\n\n  subscribe(subscription) {\n    if (this.sendCommand(subscription, \"subscribe\")) {\n      this.guarantor.guarantee(subscription)\n    }\n  }\n\n  confirmSubscription(identifier) {\n    logger.log(`Subscription confirmed ${identifier}`)\n    this.findAll(identifier).map((subscription) =>\n      this.guarantor.forget(subscription))\n  }\n\n  sendCommand(subscription, command) {\n    const {identifier} = subscription\n    return this.consumer.send({command, identifier})\n  }\n}\n", "import Connection from \"./connection\"\nimport Subscriptions from \"./subscriptions\"\n\n// The ActionCable.Consumer establishes the connection to a server-side Ruby Connection object. Once established,\n// the ActionCable.ConnectionMonitor will ensure that its properly maintained through heartbeats and checking for stale updates.\n// The Consumer instance is also the gateway to establishing subscriptions to desired channels through the #createSubscription\n// method.\n//\n// The following example shows how this can be set up:\n//\n//   App = {}\n//   App.cable = ActionCable.createConsumer(\"ws://example.com/accounts/1\")\n//   App.appearance = App.cable.subscriptions.create(\"AppearanceChannel\")\n//\n// For more details on how you'd configure an actual channel subscription, see ActionCable.Subscription.\n//\n// When a consumer is created, it automatically connects with the server.\n//\n// To disconnect from the server, call\n//\n//   App.cable.disconnect()\n//\n// and to restart the connection:\n//\n//   App.cable.connect()\n//\n// Any channel subscriptions which existed prior to disconnecting will\n// automatically resubscribe.\n\nexport default class Consumer {\n  constructor(url) {\n    this._url = url\n    this.subscriptions = new Subscriptions(this)\n    this.connection = new Connection(this)\n  }\n\n  get url() {\n    return createWebSocketURL(this._url)\n  }\n\n  send(data) {\n    return this.connection.send(data)\n  }\n\n  connect() {\n    return this.connection.open()\n  }\n\n  disconnect() {\n    return this.connection.close({allowReconnect: false})\n  }\n\n  ensureActiveConnection() {\n    if (!this.connection.isActive()) {\n      return this.connection.open()\n    }\n  }\n}\n\nexport function createWebSocketURL(url) {\n  if (typeof url === \"function\") {\n    url = url()\n  }\n\n  if (url && !/^wss?:/i.test(url)) {\n    const a = document.createElement(\"a\")\n    a.href = url\n    // Fix populating Location properties in IE. Otherwise, protocol will be blank.\n    a.href = a.href\n    a.protocol = a.protocol.replace(\"http\", \"ws\")\n    return a.href\n  } else {\n    return url\n  }\n}\n", "import Connection from \"./connection\"\nimport ConnectionMonitor from \"./connection_monitor\"\nimport Consumer, { createWebSocketURL } from \"./consumer\"\nimport INTERNAL from \"./internal\"\nimport Subscription from \"./subscription\"\nimport Subscriptions from \"./subscriptions\"\nimport SubscriptionGuarantor from \"./subscription_guarantor\"\nimport adapters from \"./adapters\"\nimport logger from \"./logger\"\n\nexport {\n  Connection,\n  ConnectionMonitor,\n  Consumer,\n  INTERNAL,\n  Subscription,\n  Subscriptions,\n  SubscriptionGuarantor,\n  adapters,\n  createWebSocketURL,\n  logger,\n}\n\nexport function createConsumer(url = getConfig(\"url\") || INTERNAL.default_mount_path) {\n  return new Consumer(url)\n}\n\nexport function getConfig(name) {\n  const element = document.head.querySelector(`meta[name='action-cable-${name}']`)\n  if (element) {\n    return element.getAttribute(\"content\")\n  }\n}\n", "(function(global, factory) {\n  typeof exports === \"object\" && typeof module !== \"undefined\" ? factory(exports) : typeof define === \"function\" && define.amd ? define([ \"exports\" ], factory) : factory(global.ActiveStorage = {});\n})(this, function(exports) {\n  \"use strict\";\n  function createCommonjsModule(fn, module) {\n    return module = {\n      exports: {}\n    }, fn(module, module.exports), module.exports;\n  }\n  var sparkMd5 = createCommonjsModule(function(module, exports) {\n    (function(factory) {\n      {\n        module.exports = factory();\n      }\n    })(function(undefined) {\n      var hex_chr = [ \"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"a\", \"b\", \"c\", \"d\", \"e\", \"f\" ];\n      function md5cycle(x, k) {\n        var a = x[0], b = x[1], c = x[2], d = x[3];\n        a += (b & c | ~b & d) + k[0] - 680876936 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[1] - 389564586 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[2] + 606105819 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[3] - 1044525330 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[4] - 176418897 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[5] + 1200080426 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[6] - 1473231341 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[7] - 45705983 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[8] + 1770035416 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[9] - 1958414417 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[10] - 42063 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[11] - 1990404162 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & c | ~b & d) + k[12] + 1804603682 | 0;\n        a = (a << 7 | a >>> 25) + b | 0;\n        d += (a & b | ~a & c) + k[13] - 40341101 | 0;\n        d = (d << 12 | d >>> 20) + a | 0;\n        c += (d & a | ~d & b) + k[14] - 1502002290 | 0;\n        c = (c << 17 | c >>> 15) + d | 0;\n        b += (c & d | ~c & a) + k[15] + 1236535329 | 0;\n        b = (b << 22 | b >>> 10) + c | 0;\n        a += (b & d | c & ~d) + k[1] - 165796510 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[6] - 1069501632 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[11] + 643717713 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[0] - 373897302 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[5] - 701558691 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[10] + 38016083 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[15] - 660478335 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[4] - 405537848 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[9] + 568446438 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[14] - 1019803690 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[3] - 187363961 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[8] + 1163531501 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b & d | c & ~d) + k[13] - 1444681467 | 0;\n        a = (a << 5 | a >>> 27) + b | 0;\n        d += (a & c | b & ~c) + k[2] - 51403784 | 0;\n        d = (d << 9 | d >>> 23) + a | 0;\n        c += (d & b | a & ~b) + k[7] + 1735328473 | 0;\n        c = (c << 14 | c >>> 18) + d | 0;\n        b += (c & a | d & ~a) + k[12] - 1926607734 | 0;\n        b = (b << 20 | b >>> 12) + c | 0;\n        a += (b ^ c ^ d) + k[5] - 378558 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[8] - 2022574463 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[11] + 1839030562 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[14] - 35309556 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[1] - 1530992060 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[4] + 1272893353 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[7] - 155497632 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[10] - 1094730640 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[13] + 681279174 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[0] - 358537222 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[3] - 722521979 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[6] + 76029189 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (b ^ c ^ d) + k[9] - 640364487 | 0;\n        a = (a << 4 | a >>> 28) + b | 0;\n        d += (a ^ b ^ c) + k[12] - 421815835 | 0;\n        d = (d << 11 | d >>> 21) + a | 0;\n        c += (d ^ a ^ b) + k[15] + 530742520 | 0;\n        c = (c << 16 | c >>> 16) + d | 0;\n        b += (c ^ d ^ a) + k[2] - 995338651 | 0;\n        b = (b << 23 | b >>> 9) + c | 0;\n        a += (c ^ (b | ~d)) + k[0] - 198630844 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[7] + 1126891415 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[14] - 1416354905 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[5] - 57434055 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[12] + 1700485571 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[3] - 1894986606 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[10] - 1051523 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[1] - 2054922799 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[8] + 1873313359 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[15] - 30611744 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[6] - 1560198380 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[13] + 1309151649 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        a += (c ^ (b | ~d)) + k[4] - 145523070 | 0;\n        a = (a << 6 | a >>> 26) + b | 0;\n        d += (b ^ (a | ~c)) + k[11] - 1120210379 | 0;\n        d = (d << 10 | d >>> 22) + a | 0;\n        c += (a ^ (d | ~b)) + k[2] + 718787259 | 0;\n        c = (c << 15 | c >>> 17) + d | 0;\n        b += (d ^ (c | ~a)) + k[9] - 343485551 | 0;\n        b = (b << 21 | b >>> 11) + c | 0;\n        x[0] = a + x[0] | 0;\n        x[1] = b + x[1] | 0;\n        x[2] = c + x[2] | 0;\n        x[3] = d + x[3] | 0;\n      }\n      function md5blk(s) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = s.charCodeAt(i) + (s.charCodeAt(i + 1) << 8) + (s.charCodeAt(i + 2) << 16) + (s.charCodeAt(i + 3) << 24);\n        }\n        return md5blks;\n      }\n      function md5blk_array(a) {\n        var md5blks = [], i;\n        for (i = 0; i < 64; i += 4) {\n          md5blks[i >> 2] = a[i] + (a[i + 1] << 8) + (a[i + 2] << 16) + (a[i + 3] << 24);\n        }\n        return md5blks;\n      }\n      function md51(s) {\n        var n = s.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk(s.substring(i - 64, i)));\n        }\n        s = s.substring(i - 64);\n        length = s.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= s.charCodeAt(i) << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function md51_array(a) {\n        var n = a.length, state = [ 1732584193, -271733879, -1732584194, 271733878 ], i, length, tail, tmp, lo, hi;\n        for (i = 64; i <= n; i += 64) {\n          md5cycle(state, md5blk_array(a.subarray(i - 64, i)));\n        }\n        a = i - 64 < n ? a.subarray(i - 64) : new Uint8Array(0);\n        length = a.length;\n        tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ];\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= a[i] << (i % 4 << 3);\n        }\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(state, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = n * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(state, tail);\n        return state;\n      }\n      function rhex(n) {\n        var s = \"\", j;\n        for (j = 0; j < 4; j += 1) {\n          s += hex_chr[n >> j * 8 + 4 & 15] + hex_chr[n >> j * 8 & 15];\n        }\n        return s;\n      }\n      function hex(x) {\n        var i;\n        for (i = 0; i < x.length; i += 1) {\n          x[i] = rhex(x[i]);\n        }\n        return x.join(\"\");\n      }\n      if (hex(md51(\"hello\")) !== \"5d41402abc4b2a76b9719d911017c592\") ;\n      if (typeof ArrayBuffer !== \"undefined\" && !ArrayBuffer.prototype.slice) {\n        (function() {\n          function clamp(val, length) {\n            val = val | 0 || 0;\n            if (val < 0) {\n              return Math.max(val + length, 0);\n            }\n            return Math.min(val, length);\n          }\n          ArrayBuffer.prototype.slice = function(from, to) {\n            var length = this.byteLength, begin = clamp(from, length), end = length, num, target, targetArray, sourceArray;\n            if (to !== undefined) {\n              end = clamp(to, length);\n            }\n            if (begin > end) {\n              return new ArrayBuffer(0);\n            }\n            num = end - begin;\n            target = new ArrayBuffer(num);\n            targetArray = new Uint8Array(target);\n            sourceArray = new Uint8Array(this, begin, num);\n            targetArray.set(sourceArray);\n            return target;\n          };\n        })();\n      }\n      function toUtf8(str) {\n        if (/[\\u0080-\\uFFFF]/.test(str)) {\n          str = unescape(encodeURIComponent(str));\n        }\n        return str;\n      }\n      function utf8Str2ArrayBuffer(str, returnUInt8Array) {\n        var length = str.length, buff = new ArrayBuffer(length), arr = new Uint8Array(buff), i;\n        for (i = 0; i < length; i += 1) {\n          arr[i] = str.charCodeAt(i);\n        }\n        return returnUInt8Array ? arr : buff;\n      }\n      function arrayBuffer2Utf8Str(buff) {\n        return String.fromCharCode.apply(null, new Uint8Array(buff));\n      }\n      function concatenateArrayBuffers(first, second, returnUInt8Array) {\n        var result = new Uint8Array(first.byteLength + second.byteLength);\n        result.set(new Uint8Array(first));\n        result.set(new Uint8Array(second), first.byteLength);\n        return returnUInt8Array ? result : result.buffer;\n      }\n      function hexToBinaryString(hex) {\n        var bytes = [], length = hex.length, x;\n        for (x = 0; x < length - 1; x += 2) {\n          bytes.push(parseInt(hex.substr(x, 2), 16));\n        }\n        return String.fromCharCode.apply(String, bytes);\n      }\n      function SparkMD5() {\n        this.reset();\n      }\n      SparkMD5.prototype.append = function(str) {\n        this.appendBinary(toUtf8(str));\n        return this;\n      };\n      SparkMD5.prototype.appendBinary = function(contents) {\n        this._buff += contents;\n        this._length += contents.length;\n        var length = this._buff.length, i;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk(this._buff.substring(i - 64, i)));\n        }\n        this._buff = this._buff.substring(i - 64);\n        return this;\n      };\n      SparkMD5.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, i, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff.charCodeAt(i) << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.prototype.reset = function() {\n        this._buff = \"\";\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.prototype.getState = function() {\n        return {\n          buff: this._buff,\n          length: this._length,\n          hash: this._hash\n        };\n      };\n      SparkMD5.prototype.setState = function(state) {\n        this._buff = state.buff;\n        this._length = state.length;\n        this._hash = state.hash;\n        return this;\n      };\n      SparkMD5.prototype.destroy = function() {\n        delete this._hash;\n        delete this._buff;\n        delete this._length;\n      };\n      SparkMD5.prototype._finish = function(tail, length) {\n        var i = length, tmp, lo, hi;\n        tail[i >> 2] |= 128 << (i % 4 << 3);\n        if (i > 55) {\n          md5cycle(this._hash, tail);\n          for (i = 0; i < 16; i += 1) {\n            tail[i] = 0;\n          }\n        }\n        tmp = this._length * 8;\n        tmp = tmp.toString(16).match(/(.*?)(.{0,8})$/);\n        lo = parseInt(tmp[2], 16);\n        hi = parseInt(tmp[1], 16) || 0;\n        tail[14] = lo;\n        tail[15] = hi;\n        md5cycle(this._hash, tail);\n      };\n      SparkMD5.hash = function(str, raw) {\n        return SparkMD5.hashBinary(toUtf8(str), raw);\n      };\n      SparkMD5.hashBinary = function(content, raw) {\n        var hash = md51(content), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      SparkMD5.ArrayBuffer = function() {\n        this.reset();\n      };\n      SparkMD5.ArrayBuffer.prototype.append = function(arr) {\n        var buff = concatenateArrayBuffers(this._buff.buffer, arr, true), length = buff.length, i;\n        this._length += arr.byteLength;\n        for (i = 64; i <= length; i += 64) {\n          md5cycle(this._hash, md5blk_array(buff.subarray(i - 64, i)));\n        }\n        this._buff = i - 64 < length ? new Uint8Array(buff.buffer.slice(i - 64)) : new Uint8Array(0);\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.end = function(raw) {\n        var buff = this._buff, length = buff.length, tail = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ], i, ret;\n        for (i = 0; i < length; i += 1) {\n          tail[i >> 2] |= buff[i] << (i % 4 << 3);\n        }\n        this._finish(tail, length);\n        ret = hex(this._hash);\n        if (raw) {\n          ret = hexToBinaryString(ret);\n        }\n        this.reset();\n        return ret;\n      };\n      SparkMD5.ArrayBuffer.prototype.reset = function() {\n        this._buff = new Uint8Array(0);\n        this._length = 0;\n        this._hash = [ 1732584193, -271733879, -1732584194, 271733878 ];\n        return this;\n      };\n      SparkMD5.ArrayBuffer.prototype.getState = function() {\n        var state = SparkMD5.prototype.getState.call(this);\n        state.buff = arrayBuffer2Utf8Str(state.buff);\n        return state;\n      };\n      SparkMD5.ArrayBuffer.prototype.setState = function(state) {\n        state.buff = utf8Str2ArrayBuffer(state.buff, true);\n        return SparkMD5.prototype.setState.call(this, state);\n      };\n      SparkMD5.ArrayBuffer.prototype.destroy = SparkMD5.prototype.destroy;\n      SparkMD5.ArrayBuffer.prototype._finish = SparkMD5.prototype._finish;\n      SparkMD5.ArrayBuffer.hash = function(arr, raw) {\n        var hash = md51_array(new Uint8Array(arr)), ret = hex(hash);\n        return raw ? hexToBinaryString(ret) : ret;\n      };\n      return SparkMD5;\n    });\n  });\n  var classCallCheck = function(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  };\n  var createClass = function() {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n    return function(Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  }();\n  var fileSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice;\n  var FileChecksum = function() {\n    createClass(FileChecksum, null, [ {\n      key: \"create\",\n      value: function create(file, callback) {\n        var instance = new FileChecksum(file);\n        instance.create(callback);\n      }\n    } ]);\n    function FileChecksum(file) {\n      classCallCheck(this, FileChecksum);\n      this.file = file;\n      this.chunkSize = 2097152;\n      this.chunkCount = Math.ceil(this.file.size / this.chunkSize);\n      this.chunkIndex = 0;\n    }\n    createClass(FileChecksum, [ {\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n        this.callback = callback;\n        this.md5Buffer = new sparkMd5.ArrayBuffer();\n        this.fileReader = new FileReader();\n        this.fileReader.addEventListener(\"load\", function(event) {\n          return _this.fileReaderDidLoad(event);\n        });\n        this.fileReader.addEventListener(\"error\", function(event) {\n          return _this.fileReaderDidError(event);\n        });\n        this.readNextChunk();\n      }\n    }, {\n      key: \"fileReaderDidLoad\",\n      value: function fileReaderDidLoad(event) {\n        this.md5Buffer.append(event.target.result);\n        if (!this.readNextChunk()) {\n          var binaryDigest = this.md5Buffer.end(true);\n          var base64digest = btoa(binaryDigest);\n          this.callback(null, base64digest);\n        }\n      }\n    }, {\n      key: \"fileReaderDidError\",\n      value: function fileReaderDidError(event) {\n        this.callback(\"Error reading \" + this.file.name);\n      }\n    }, {\n      key: \"readNextChunk\",\n      value: function readNextChunk() {\n        if (this.chunkIndex < this.chunkCount || this.chunkIndex == 0 && this.chunkCount == 0) {\n          var start = this.chunkIndex * this.chunkSize;\n          var end = Math.min(start + this.chunkSize, this.file.size);\n          var bytes = fileSlice.call(this.file, start, end);\n          this.fileReader.readAsArrayBuffer(bytes);\n          this.chunkIndex++;\n          return true;\n        } else {\n          return false;\n        }\n      }\n    } ]);\n    return FileChecksum;\n  }();\n  function getMetaValue(name) {\n    var element = findElement(document.head, 'meta[name=\"' + name + '\"]');\n    if (element) {\n      return element.getAttribute(\"content\");\n    }\n  }\n  function findElements(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    var elements = root.querySelectorAll(selector);\n    return toArray$1(elements);\n  }\n  function findElement(root, selector) {\n    if (typeof root == \"string\") {\n      selector = root;\n      root = document;\n    }\n    return root.querySelector(selector);\n  }\n  function dispatchEvent(element, type) {\n    var eventInit = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    var disabled = element.disabled;\n    var bubbles = eventInit.bubbles, cancelable = eventInit.cancelable, detail = eventInit.detail;\n    var event = document.createEvent(\"Event\");\n    event.initEvent(type, bubbles || true, cancelable || true);\n    event.detail = detail || {};\n    try {\n      element.disabled = false;\n      element.dispatchEvent(event);\n    } finally {\n      element.disabled = disabled;\n    }\n    return event;\n  }\n  function toArray$1(value) {\n    if (Array.isArray(value)) {\n      return value;\n    } else if (Array.from) {\n      return Array.from(value);\n    } else {\n      return [].slice.call(value);\n    }\n  }\n  var BlobRecord = function() {\n    function BlobRecord(file, checksum, url) {\n      var _this = this;\n      classCallCheck(this, BlobRecord);\n      this.file = file;\n      this.attributes = {\n        filename: file.name,\n        content_type: file.type || \"application/octet-stream\",\n        byte_size: file.size,\n        checksum: checksum\n      };\n      this.xhr = new XMLHttpRequest();\n      this.xhr.open(\"POST\", url, true);\n      this.xhr.responseType = \"json\";\n      this.xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n      this.xhr.setRequestHeader(\"Accept\", \"application/json\");\n      this.xhr.setRequestHeader(\"X-Requested-With\", \"XMLHttpRequest\");\n      var csrfToken = getMetaValue(\"csrf-token\");\n      if (csrfToken != undefined) {\n        this.xhr.setRequestHeader(\"X-CSRF-Token\", csrfToken);\n      }\n      this.xhr.addEventListener(\"load\", function(event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function(event) {\n        return _this.requestDidError(event);\n      });\n    }\n    createClass(BlobRecord, [ {\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(JSON.stringify({\n          blob: this.attributes\n        }));\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        if (this.status >= 200 && this.status < 300) {\n          var response = this.response;\n          var direct_upload = response.direct_upload;\n          delete response.direct_upload;\n          this.attributes = response;\n          this.directUploadData = direct_upload;\n          this.callback(null, this.toJSON());\n        } else {\n          this.requestDidError(event);\n        }\n      }\n    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error creating Blob for \"' + this.file.name + '\". Status: ' + this.status);\n      }\n    }, {\n      key: \"toJSON\",\n      value: function toJSON() {\n        var result = {};\n        for (var key in this.attributes) {\n          result[key] = this.attributes[key];\n        }\n        return result;\n      }\n    }, {\n      key: \"status\",\n      get: function get$$1() {\n        return this.xhr.status;\n      }\n    }, {\n      key: \"response\",\n      get: function get$$1() {\n        var _xhr = this.xhr, responseType = _xhr.responseType, response = _xhr.response;\n        if (responseType == \"json\") {\n          return response;\n        } else {\n          return JSON.parse(response);\n        }\n      }\n    } ]);\n    return BlobRecord;\n  }();\n  var BlobUpload = function() {\n    function BlobUpload(blob) {\n      var _this = this;\n      classCallCheck(this, BlobUpload);\n      this.blob = blob;\n      this.file = blob.file;\n      var _blob$directUploadDat = blob.directUploadData, url = _blob$directUploadDat.url, headers = _blob$directUploadDat.headers;\n      this.xhr = new XMLHttpRequest();\n      this.xhr.open(\"PUT\", url, true);\n      this.xhr.responseType = \"text\";\n      for (var key in headers) {\n        this.xhr.setRequestHeader(key, headers[key]);\n      }\n      this.xhr.addEventListener(\"load\", function(event) {\n        return _this.requestDidLoad(event);\n      });\n      this.xhr.addEventListener(\"error\", function(event) {\n        return _this.requestDidError(event);\n      });\n    }\n    createClass(BlobUpload, [ {\n      key: \"create\",\n      value: function create(callback) {\n        this.callback = callback;\n        this.xhr.send(this.file.slice());\n      }\n    }, {\n      key: \"requestDidLoad\",\n      value: function requestDidLoad(event) {\n        var _xhr = this.xhr, status = _xhr.status, response = _xhr.response;\n        if (status >= 200 && status < 300) {\n          this.callback(null, response);\n        } else {\n          this.requestDidError(event);\n        }\n      }\n    }, {\n      key: \"requestDidError\",\n      value: function requestDidError(event) {\n        this.callback('Error storing \"' + this.file.name + '\". Status: ' + this.xhr.status);\n      }\n    } ]);\n    return BlobUpload;\n  }();\n  var id = 0;\n  var DirectUpload = function() {\n    function DirectUpload(file, url, delegate) {\n      classCallCheck(this, DirectUpload);\n      this.id = ++id;\n      this.file = file;\n      this.url = url;\n      this.delegate = delegate;\n    }\n    createClass(DirectUpload, [ {\n      key: \"create\",\n      value: function create(callback) {\n        var _this = this;\n        FileChecksum.create(this.file, function(error, checksum) {\n          if (error) {\n            callback(error);\n            return;\n          }\n          var blob = new BlobRecord(_this.file, checksum, _this.url);\n          notify(_this.delegate, \"directUploadWillCreateBlobWithXHR\", blob.xhr);\n          blob.create(function(error) {\n            if (error) {\n              callback(error);\n            } else {\n              var upload = new BlobUpload(blob);\n              notify(_this.delegate, \"directUploadWillStoreFileWithXHR\", upload.xhr);\n              upload.create(function(error) {\n                if (error) {\n                  callback(error);\n                } else {\n                  callback(null, blob.toJSON());\n                }\n              });\n            }\n          });\n        });\n      }\n    } ]);\n    return DirectUpload;\n  }();\n  function notify(object, methodName) {\n    if (object && typeof object[methodName] == \"function\") {\n      for (var _len = arguments.length, messages = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n        messages[_key - 2] = arguments[_key];\n      }\n      return object[methodName].apply(object, messages);\n    }\n  }\n  var DirectUploadController = function() {\n    function DirectUploadController(input, file) {\n      classCallCheck(this, DirectUploadController);\n      this.input = input;\n      this.file = file;\n      this.directUpload = new DirectUpload(this.file, this.url, this);\n      this.dispatch(\"initialize\");\n    }\n    createClass(DirectUploadController, [ {\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n        var hiddenInput = document.createElement(\"input\");\n        hiddenInput.type = \"hidden\";\n        hiddenInput.name = this.input.name;\n        this.input.insertAdjacentElement(\"beforebegin\", hiddenInput);\n        this.dispatch(\"start\");\n        this.directUpload.create(function(error, attributes) {\n          if (error) {\n            hiddenInput.parentNode.removeChild(hiddenInput);\n            _this.dispatchError(error);\n          } else {\n            hiddenInput.value = attributes.signed_id;\n          }\n          _this.dispatch(\"end\");\n          callback(error);\n        });\n      }\n    }, {\n      key: \"uploadRequestDidProgress\",\n      value: function uploadRequestDidProgress(event) {\n        var progress = event.loaded / event.total * 100;\n        if (progress) {\n          this.dispatch(\"progress\", {\n            progress: progress\n          });\n        }\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        detail.file = this.file;\n        detail.id = this.directUpload.id;\n        return dispatchEvent(this.input, \"direct-upload:\" + name, {\n          detail: detail\n        });\n      }\n    }, {\n      key: \"dispatchError\",\n      value: function dispatchError(error) {\n        var event = this.dispatch(\"error\", {\n          error: error\n        });\n        if (!event.defaultPrevented) {\n          alert(error);\n        }\n      }\n    }, {\n      key: \"directUploadWillCreateBlobWithXHR\",\n      value: function directUploadWillCreateBlobWithXHR(xhr) {\n        this.dispatch(\"before-blob-request\", {\n          xhr: xhr\n        });\n      }\n    }, {\n      key: \"directUploadWillStoreFileWithXHR\",\n      value: function directUploadWillStoreFileWithXHR(xhr) {\n        var _this2 = this;\n        this.dispatch(\"before-storage-request\", {\n          xhr: xhr\n        });\n        xhr.upload.addEventListener(\"progress\", function(event) {\n          return _this2.uploadRequestDidProgress(event);\n        });\n      }\n    }, {\n      key: \"url\",\n      get: function get$$1() {\n        return this.input.getAttribute(\"data-direct-upload-url\");\n      }\n    } ]);\n    return DirectUploadController;\n  }();\n  var inputSelector = \"input[type=file][data-direct-upload-url]:not([disabled])\";\n  var DirectUploadsController = function() {\n    function DirectUploadsController(form) {\n      classCallCheck(this, DirectUploadsController);\n      this.form = form;\n      this.inputs = findElements(form, inputSelector).filter(function(input) {\n        return input.files.length;\n      });\n    }\n    createClass(DirectUploadsController, [ {\n      key: \"start\",\n      value: function start(callback) {\n        var _this = this;\n        var controllers = this.createDirectUploadControllers();\n        var startNextController = function startNextController() {\n          var controller = controllers.shift();\n          if (controller) {\n            controller.start(function(error) {\n              if (error) {\n                callback(error);\n                _this.dispatch(\"end\");\n              } else {\n                startNextController();\n              }\n            });\n          } else {\n            callback();\n            _this.dispatch(\"end\");\n          }\n        };\n        this.dispatch(\"start\");\n        startNextController();\n      }\n    }, {\n      key: \"createDirectUploadControllers\",\n      value: function createDirectUploadControllers() {\n        var controllers = [];\n        this.inputs.forEach(function(input) {\n          toArray$1(input.files).forEach(function(file) {\n            var controller = new DirectUploadController(input, file);\n            controllers.push(controller);\n          });\n        });\n        return controllers;\n      }\n    }, {\n      key: \"dispatch\",\n      value: function dispatch(name) {\n        var detail = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        return dispatchEvent(this.form, \"direct-uploads:\" + name, {\n          detail: detail\n        });\n      }\n    } ]);\n    return DirectUploadsController;\n  }();\n  var processingAttribute = \"data-direct-uploads-processing\";\n  var submitButtonsByForm = new WeakMap();\n  var started = false;\n  function start() {\n    if (!started) {\n      started = true;\n      document.addEventListener(\"click\", didClick, true);\n      document.addEventListener(\"submit\", didSubmitForm);\n      document.addEventListener(\"ajax:before\", didSubmitRemoteElement);\n    }\n  }\n  function didClick(event) {\n    var target = event.target;\n    if ((target.tagName == \"INPUT\" || target.tagName == \"BUTTON\") && target.type == \"submit\" && target.form) {\n      submitButtonsByForm.set(target.form, target);\n    }\n  }\n  function didSubmitForm(event) {\n    handleFormSubmissionEvent(event);\n  }\n  function didSubmitRemoteElement(event) {\n    if (event.target.tagName == \"FORM\") {\n      handleFormSubmissionEvent(event);\n    }\n  }\n  function handleFormSubmissionEvent(event) {\n    var form = event.target;\n    if (form.hasAttribute(processingAttribute)) {\n      event.preventDefault();\n      return;\n    }\n    var controller = new DirectUploadsController(form);\n    var inputs = controller.inputs;\n    if (inputs.length) {\n      event.preventDefault();\n      form.setAttribute(processingAttribute, \"\");\n      inputs.forEach(disable);\n      controller.start(function(error) {\n        form.removeAttribute(processingAttribute);\n        if (error) {\n          inputs.forEach(enable);\n        } else {\n          submitForm(form);\n        }\n      });\n    }\n  }\n  function submitForm(form) {\n    var button = submitButtonsByForm.get(form) || findElement(form, \"input[type=submit], button[type=submit]\");\n    if (button) {\n      var _button = button, disabled = _button.disabled;\n      button.disabled = false;\n      button.focus();\n      button.click();\n      button.disabled = disabled;\n    } else {\n      button = document.createElement(\"input\");\n      button.type = \"submit\";\n      button.style.display = \"none\";\n      form.appendChild(button);\n      button.click();\n      form.removeChild(button);\n    }\n    submitButtonsByForm.delete(form);\n  }\n  function disable(input) {\n    input.disabled = true;\n  }\n  function enable(input) {\n    input.disabled = false;\n  }\n  function autostart() {\n    if (window.ActiveStorage) {\n      start();\n    }\n  }\n  setTimeout(autostart, 1);\n  exports.start = start;\n  exports.DirectUpload = DirectUpload;\n  Object.defineProperty(exports, \"__esModule\", {\n    value: true\n  });\n});\n", "'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n", "'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n", "'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n", "'use strict';\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n", "'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\nconst filterObject = require('filter-obj');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n", "\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst parseValue = (value) => {\n    if (value.toUpperCase() === \"TRUE\")\n        return true;\n    if (value.toUpperCase() === \"FALSE\")\n        return false;\n    return isNaN(Number(value)) ? value : Number(value);\n};\nconst dec = (list, isArray = false) => {\n    let obj = isArray ? [] : {};\n    let recs = list.filter((item) => {\n        if (item.keys.length > 1)\n            return true;\n        obj[item.keys[0]] = parseValue(item.value);\n    });\n    let attrs = {};\n    recs\n        .map((item) => {\n        item.key = item.keys.shift();\n        attrs[item.key] = [];\n        return item;\n    })\n        .forEach((item) => attrs[item.key].push(item));\n    Object.keys(attrs).forEach((attr) => {\n        let nextKey = attrs[attr][0].keys[0];\n        obj[attr] = dec(attrs[attr], typeof nextKey === \"number\");\n    });\n    return obj;\n};\nconst reducer = (obj, parentPrefix = null) => {\n    return function (prev, key) {\n        const val = obj[key];\n        key = encodeURIComponent(key);\n        const prefix = parentPrefix ? `${parentPrefix}[${key}]` : key;\n        if (val == null || typeof val === \"function\") {\n            prev.push(`${prefix}=`);\n            return prev;\n        }\n        if (typeof val === \"boolean\") {\n            prev.push(`${prefix}=${val.toString().toUpperCase()}`);\n            return prev;\n        }\n        if ([\"number\", \"string\"].includes(typeof val)) {\n            prev.push(`${prefix}=${encodeURIComponent(val)}`);\n            return prev;\n        }\n        prev.push(Object.keys(val).reduce(reducer(val, prefix), []).join(\"&\"));\n        return prev;\n    };\n};\nfunction decode(querystring) {\n    if (querystring.length > 0 && querystring[0] === \"?\") {\n        querystring = querystring.slice(1);\n    }\n    return dec(querystring\n        .split(\"&\")\n        .map((item) => item.split(\"=\").map((x) => decodeURIComponent(x)))\n        .map((item) => {\n        return {\n            keys: item[0]\n                .split(/[\\[\\]]/g)\n                .filter((n) => n)\n                .map((key) => (isNaN(Number(key)) ? key : Number(key))),\n            value: item[1],\n        };\n    }));\n}\nfunction encode(object) {\n    return Object.keys(object).reduce(reducer(object), []).join(\"&\");\n}\nexports.default = {\n    parseQuery: decode,\n    parseJSON: encode,\n};\n", "(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n  typeof define === 'function' && define.amd ? define(['exports'], factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.fr = {}));\n}(this, (function (exports) { 'use strict';\n\n  var fp = typeof window !== \"undefined\" && window.flatpickr !== undefined\n      ? window.flatpickr\n      : {\n          l10ns: {},\n      };\n  var French = {\n      firstDayOfWeek: 1,\n      weekdays: {\n          shorthand: [\"dim\", \"lun\", \"mar\", \"mer\", \"jeu\", \"ven\", \"sam\"],\n          longhand: [\n              \"dimanche\",\n              \"lundi\",\n              \"mardi\",\n              \"mercredi\",\n              \"jeudi\",\n              \"vendredi\",\n              \"samedi\",\n          ],\n      },\n      months: {\n          shorthand: [\n              \"janv\",\n              \"f\u00E9vr\",\n              \"mars\",\n              \"avr\",\n              \"mai\",\n              \"juin\",\n              \"juil\",\n              \"ao\u00FBt\",\n              \"sept\",\n              \"oct\",\n              \"nov\",\n              \"d\u00E9c\",\n          ],\n          longhand: [\n              \"janvier\",\n              \"f\u00E9vrier\",\n              \"mars\",\n              \"avril\",\n              \"mai\",\n              \"juin\",\n              \"juillet\",\n              \"ao\u00FBt\",\n              \"septembre\",\n              \"octobre\",\n              \"novembre\",\n              \"d\u00E9cembre\",\n          ],\n      },\n      ordinal: function (nth) {\n          if (nth > 1)\n              return \"\";\n          return \"er\";\n      },\n      rangeSeparator: \" au \",\n      weekAbbreviation: \"Sem\",\n      scrollTitle: \"D\u00E9filer pour augmenter la valeur\",\n      toggleTitle: \"Cliquer pour basculer\",\n      time_24hr: true,\n  };\n  fp.l10ns.fr = French;\n  var fr = fp.l10ns;\n\n  exports.French = French;\n  exports.default = fr;\n\n  Object.defineProperty(exports, '__esModule', { value: true });\n\n})));\n", "/*!\n * jQuery JavaScript Library v3.6.3\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2022-12-20T21:28Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML <object> elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.3\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.9\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2022-12-19\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// `qSA` may not throw for unrecognized parts using forgiving parsing:\n\t\t\t\t\t// https://drafts.csswg.org/selectors/#forgiving-selector\n\t\t\t\t\t// like the `:has()` pseudo-class:\n\t\t\t\t\t// https://drafts.csswg.org/selectors/#relational\n\t\t\t\t\t// `CSS.supports` is still expected to return `false` then:\n\t\t\t\t\t// https://drafts.csswg.org/css-conditional-4/#typedef-supports-selector-fn\n\t\t\t\t\t// https://drafts.csswg.org/css-conditional-4/#dfn-support-selector\n\t\t\t\t\tif ( support.cssSupportsSelector &&\n\n\t\t\t\t\t\t// eslint-disable-next-line no-undef\n\t\t\t\t\t\t!CSS.supports( \"selector(:is(\" + newSelector + \"))\" ) ) {\n\n\t\t\t\t\t\t// Support: IE 11+\n\t\t\t\t\t\t// Throw to get to the same code path as an error directly in qSA.\n\t\t\t\t\t\t// Note: once we only support browser supporting\n\t\t\t\t\t\t// `CSS.supports('selector(...)')`, we can most likely drop\n\t\t\t\t\t\t// the `try-catch`. IE doesn't implement the API.\n\t\t\t\t\t\tthrow new Error();\n\t\t\t\t\t}\n\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t// Support: Chrome 105+, Firefox 104+, Safari 15.4+\n\t// Make sure forgiving mode is not used in `CSS.supports( \"selector(...)\" )`.\n\t//\n\t// `:is()` uses a forgiving selector list as an argument and is widely\n\t// implemented, so it's a good one to test against.\n\tsupport.cssSupportsSelector = assert( function() {\n\t\t/* eslint-disable no-undef */\n\n\t\treturn CSS.supports( \"selector(*)\" ) &&\n\n\t\t\t// Support: Firefox 78-81 only\n\t\t\t// In old Firefox, `:is()` didn't use forgiving parsing. In that case,\n\t\t\t// fail this test as there's no selector to test against that.\n\t\t\t// `CSS.supports` uses unforgiving parsing\n\t\t\tdocument.querySelectorAll( \":is(:jqfake)\" ) &&\n\n\t\t\t// `*` is needed as Safari & newer Chrome implemented something in between\n\t\t\t// for `:has()` - it throws in `qSA` if it only contains an unsupported\n\t\t\t// argument but multiple ones, one of which is supported, are fine.\n\t\t\t// We want to play safe in case `:is()` gets the same treatment.\n\t\t\t!CSS.supports( \"selector(:is(*,:jqfake))\" );\n\n\t\t/* eslint-enable */\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] =  function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\tif ( !support.cssSupportsSelector ) {\n\n\t\t// Support: Chrome 105+, Safari 15.4+\n\t\t// `:has()` uses a forgiving selector list as an argument so our regular\n\t\t// `try-catch` mechanism fails to catch `:has()` with arguments not supported\n\t\t// natively like `:has(:contains(\"Foo\"))`. Where supported & spec-compliant,\n\t\t// we now use `CSS.supports(\"selector(:is(SELECTOR_TO_BE_TESTED))\")`, but\n\t\t// outside that we mark `:has` as buggy.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\n\t\t\t// Support: IE <9 only\n\t\t\t// IE doesn't have `contains` on `document` so we need to check for\n\t\t\t// `documentElement` presence.\n\t\t\t// We need to fall back to `a` when `documentElement` is missing\n\t\t\t// as `ownerDocument` of elements within `<template/>` may have\n\t\t\t// a null one - a default behavior of all modern browsers.\n\t\t\tvar adown = a.nodeType === 9 && a.documentElement || a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t//   but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n *  selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n *  selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t//  - Node\n\t//    - Node.ELEMENT_NODE\n\t//    - Node.DOCUMENT_NODE\n\t//  - Object\n\t//    - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t//   1. No key was specified\n\t\t//   2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t//   1. The entire cache object\n\t\t//   2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t//   1. An object of properties\n\t\t//   2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event )  dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\n\trcleanScript = /^\\s*<!\\[CDATA\\[|\\]\\]>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase()  !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t//   .css('filter') (IE 9 only, trac-12537)\n\t//   .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t *    - BEFORE asking for a transport\n\t *    - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\"  ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"<script>\" )\n\t\t\t\t\t.attr( s.scriptAttrs || {} )\n\t\t\t\t\t.prop( { charset: s.scriptCharset, src: s.url } )\n\t\t\t\t\t.on( \"load error\", callback = function( evt ) {\n\t\t\t\t\t\tscript.remove();\n\t\t\t\t\t\tcallback = null;\n\t\t\t\t\t\tif ( evt ) {\n\t\t\t\t\t\t\tcomplete( evt.type === \"error\" ? 404 : 200, evt.type );\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\n\t\t\t\t// Use native DOM manipulation to avoid our domManip AJAX trickery\n\t\t\t\tdocument.head.appendChild( script[ 0 ] );\n\t\t\t},\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\nvar oldCallbacks = [],\n\trjsonp = /(=)\\?(?=&|$)|\\?\\?/;\n\n// Default jsonp settings\njQuery.ajaxSetup( {\n\tjsonp: \"callback\",\n\tjsonpCallback: function() {\n\t\tvar callback = oldCallbacks.pop() || ( jQuery.expando + \"_\" + ( nonce.guid++ ) );\n\t\tthis[ callback ] = true;\n\t\treturn callback;\n\t}\n} );\n\n// Detect, normalize options and install callbacks for jsonp requests\njQuery.ajaxPrefilter( \"json jsonp\", function( s, originalSettings, jqXHR ) {\n\n\tvar callbackName, overwritten, responseContainer,\n\t\tjsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?\n\t\t\t\"url\" :\n\t\t\ttypeof s.data === \"string\" &&\n\t\t\t\t( s.contentType || \"\" )\n\t\t\t\t\t.indexOf( \"application/x-www-form-urlencoded\" ) === 0 &&\n\t\t\t\trjsonp.test( s.data ) && \"data\"\n\t\t);\n\n\t// Handle iff the expected data type is \"jsonp\" or we have a parameter to set\n\tif ( jsonProp || s.dataTypes[ 0 ] === \"jsonp\" ) {\n\n\t\t// Get callback name, remembering preexisting value associated with it\n\t\tcallbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?\n\t\t\ts.jsonpCallback() :\n\t\t\ts.jsonpCallback;\n\n\t\t// Insert callback into url or form data\n\t\tif ( jsonProp ) {\n\t\t\ts[ jsonProp ] = s[ jsonProp ].replace( rjsonp, \"$1\" + callbackName );\n\t\t} else if ( s.jsonp !== false ) {\n\t\t\ts.url += ( rquery.test( s.url ) ? \"&\" : \"?\" ) + s.jsonp + \"=\" + callbackName;\n\t\t}\n\n\t\t// Use data converter to retrieve json after script execution\n\t\ts.converters[ \"script json\" ] = function() {\n\t\t\tif ( !responseContainer ) {\n\t\t\t\tjQuery.error( callbackName + \" was not called\" );\n\t\t\t}\n\t\t\treturn responseContainer[ 0 ];\n\t\t};\n\n\t\t// Force json dataType\n\t\ts.dataTypes[ 0 ] = \"json\";\n\n\t\t// Install callback\n\t\toverwritten = window[ callbackName ];\n\t\twindow[ callbackName ] = function() {\n\t\t\tresponseContainer = arguments;\n\t\t};\n\n\t\t// Clean-up function (fires after converters)\n\t\tjqXHR.always( function() {\n\n\t\t\t// If previous value didn't exist - remove it\n\t\t\tif ( overwritten === undefined ) {\n\t\t\t\tjQuery( window ).removeProp( callbackName );\n\n\t\t\t// Otherwise restore preexisting value\n\t\t\t} else {\n\t\t\t\twindow[ callbackName ] = overwritten;\n\t\t\t}\n\n\t\t\t// Save back as free\n\t\t\tif ( s[ callbackName ] ) {\n\n\t\t\t\t// Make sure that re-using the options doesn't screw things around\n\t\t\t\ts.jsonpCallback = originalSettings.jsonpCallback;\n\n\t\t\t\t// Save the callback name for future use\n\t\t\t\toldCallbacks.push( callbackName );\n\t\t\t}\n\n\t\t\t// Call if it was a function and we have a response\n\t\t\tif ( responseContainer && isFunction( overwritten ) ) {\n\t\t\t\toverwritten( responseContainer[ 0 ] );\n\t\t\t}\n\n\t\t\tresponseContainer = overwritten = undefined;\n\t\t} );\n\n\t\t// Delegate to script\n\t\treturn \"script\";\n\t}\n} );\n\n\n\n\n// Support: Safari 8 only\n// In Safari 8 documents created via document.implementation.createHTMLDocument\n// collapse sibling forms: the second one becomes a child of the first one.\n// Because of that, this security measure has to be disabled in Safari 8.\n// https://bugs.webkit.org/show_bug.cgi?id=137337\nsupport.createHTMLDocument = ( function() {\n\tvar body = document.implementation.createHTMLDocument( \"\" ).body;\n\tbody.innerHTML = \"<form></form><form></form>\";\n\treturn body.childNodes.length === 2;\n} )();\n\n\n// Argument \"data\" should be string of html\n// context (optional): If specified, the fragment will be created in this context,\n// defaults to document\n// keepScripts (optional): If true, will include scripts passed in the html string\njQuery.parseHTML = function( data, context, keepScripts ) {\n\tif ( typeof data !== \"string\" ) {\n\t\treturn [];\n\t}\n\tif ( typeof context === \"boolean\" ) {\n\t\tkeepScripts = context;\n\t\tcontext = false;\n\t}\n\n\tvar base, parsed, scripts;\n\n\tif ( !context ) {\n\n\t\t// Stop scripts or inline event handlers from being executed immediately\n\t\t// by using document.implementation\n\t\tif ( support.createHTMLDocument ) {\n\t\t\tcontext = document.implementation.createHTMLDocument( \"\" );\n\n\t\t\t// Set the base href for the created document\n\t\t\t// so any parsed elements with URLs\n\t\t\t// are based on the document's URL (gh-2965)\n\t\t\tbase = context.createElement( \"base\" );\n\t\t\tbase.href = document.location.href;\n\t\t\tcontext.head.appendChild( base );\n\t\t} else {\n\t\t\tcontext = document;\n\t\t}\n\t}\n\n\tparsed = rsingleTag.exec( data );\n\tscripts = !keepScripts && [];\n\n\t// Single tag\n\tif ( parsed ) {\n\t\treturn [ context.createElement( parsed[ 1 ] ) ];\n\t}\n\n\tparsed = buildFragment( [ data ], context, scripts );\n\n\tif ( scripts && scripts.length ) {\n\t\tjQuery( scripts ).remove();\n\t}\n\n\treturn jQuery.merge( [], parsed.childNodes );\n};\n\n\n/**\n * Load a url into a page\n */\njQuery.fn.load = function( url, params, callback ) {\n\tvar selector, type, response,\n\t\tself = this,\n\t\toff = url.indexOf( \" \" );\n\n\tif ( off > -1 ) {\n\t\tselector = stripAndCollapse( url.slice( off ) );\n\t\turl = url.slice( 0, off );\n\t}\n\n\t// If it's a function\n\tif ( isFunction( params ) ) {\n\n\t\t// We assume that it's the callback\n\t\tcallback = params;\n\t\tparams = undefined;\n\n\t// Otherwise, build a param string\n\t} else if ( params && typeof params === \"object\" ) {\n\t\ttype = \"POST\";\n\t}\n\n\t// If we have elements to modify, make the request\n\tif ( self.length > 0 ) {\n\t\tjQuery.ajax( {\n\t\t\turl: url,\n\n\t\t\t// If \"type\" variable is undefined, then \"GET\" method will be used.\n\t\t\t// Make value of this field explicit since\n\t\t\t// user can override it through ajaxSetup method\n\t\t\ttype: type || \"GET\",\n\t\t\tdataType: \"html\",\n\t\t\tdata: params\n\t\t} ).done( function( responseText ) {\n\n\t\t\t// Save response for use in complete callback\n\t\t\tresponse = arguments;\n\n\t\t\tself.html( selector ?\n\n\t\t\t\t// If a selector was specified, locate the right elements in a dummy div\n\t\t\t\t// Exclude scripts to avoid IE 'Permission Denied' errors\n\t\t\t\tjQuery( \"<div>\" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :\n\n\t\t\t\t// Otherwise use the full result\n\t\t\t\tresponseText );\n\n\t\t// If the request succeeds, this function gets \"data\", \"status\", \"jqXHR\"\n\t\t// but they are ignored because response was set above.\n\t\t// If it fails, this function gets \"jqXHR\", \"status\", \"error\"\n\t\t} ).always( callback && function( jqXHR, status ) {\n\t\t\tself.each( function() {\n\t\t\t\tcallback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );\n\t\t\t} );\n\t\t} );\n\t}\n\n\treturn this;\n};\n\n\n\n\njQuery.expr.pseudos.animated = function( elem ) {\n\treturn jQuery.grep( jQuery.timers, function( fn ) {\n\t\treturn elem === fn.elem;\n\t} ).length;\n};\n\n\n\n\njQuery.offset = {\n\tsetOffset: function( elem, options, i ) {\n\t\tvar curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,\n\t\t\tposition = jQuery.css( elem, \"position\" ),\n\t\t\tcurElem = jQuery( elem ),\n\t\t\tprops = {};\n\n\t\t// Set position first, in-case top/left are set even on static elem\n\t\tif ( position === \"static\" ) {\n\t\t\telem.style.position = \"relative\";\n\t\t}\n\n\t\tcurOffset = curElem.offset();\n\t\tcurCSSTop = jQuery.css( elem, \"top\" );\n\t\tcurCSSLeft = jQuery.css( elem, \"left\" );\n\t\tcalculatePosition = ( position === \"absolute\" || position === \"fixed\" ) &&\n\t\t\t( curCSSTop + curCSSLeft ).indexOf( \"auto\" ) > -1;\n\n\t\t// Need to be able to calculate position if either\n\t\t// top or left is auto and position is either absolute or fixed\n\t\tif ( calculatePosition ) {\n\t\t\tcurPosition = curElem.position();\n\t\t\tcurTop = curPosition.top;\n\t\t\tcurLeft = curPosition.left;\n\n\t\t} else {\n\t\t\tcurTop = parseFloat( curCSSTop ) || 0;\n\t\t\tcurLeft = parseFloat( curCSSLeft ) || 0;\n\t\t}\n\n\t\tif ( isFunction( options ) ) {\n\n\t\t\t// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)\n\t\t\toptions = options.call( elem, i, jQuery.extend( {}, curOffset ) );\n\t\t}\n\n\t\tif ( options.top != null ) {\n\t\t\tprops.top = ( options.top - curOffset.top ) + curTop;\n\t\t}\n\t\tif ( options.left != null ) {\n\t\t\tprops.left = ( options.left - curOffset.left ) + curLeft;\n\t\t}\n\n\t\tif ( \"using\" in options ) {\n\t\t\toptions.using.call( elem, props );\n\n\t\t} else {\n\t\t\tcurElem.css( props );\n\t\t}\n\t}\n};\n\njQuery.fn.extend( {\n\n\t// offset() relates an element's border box to the document origin\n\toffset: function( options ) {\n\n\t\t// Preserve chaining for setter\n\t\tif ( arguments.length ) {\n\t\t\treturn options === undefined ?\n\t\t\t\tthis :\n\t\t\t\tthis.each( function( i ) {\n\t\t\t\t\tjQuery.offset.setOffset( this, options, i );\n\t\t\t\t} );\n\t\t}\n\n\t\tvar rect, win,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !elem ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Return zeros for disconnected and hidden (display: none) elements (gh-2310)\n\t\t// Support: IE <=11 only\n\t\t// Running getBoundingClientRect on a\n\t\t// disconnected node in IE throws an error\n\t\tif ( !elem.getClientRects().length ) {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t\t// Get document-relative position by adding viewport scroll to viewport-relative gBCR\n\t\trect = elem.getBoundingClientRect();\n\t\twin = elem.ownerDocument.defaultView;\n\t\treturn {\n\t\t\ttop: rect.top + win.pageYOffset,\n\t\t\tleft: rect.left + win.pageXOffset\n\t\t};\n\t},\n\n\t// position() relates an element's margin box to its offset parent's padding box\n\t// This corresponds to the behavior of CSS absolute positioning\n\tposition: function() {\n\t\tif ( !this[ 0 ] ) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar offsetParent, offset, doc,\n\t\t\telem = this[ 0 ],\n\t\t\tparentOffset = { top: 0, left: 0 };\n\n\t\t// position:fixed elements are offset from the viewport, which itself always has zero offset\n\t\tif ( jQuery.css( elem, \"position\" ) === \"fixed\" ) {\n\n\t\t\t// Assume position:fixed implies availability of getBoundingClientRect\n\t\t\toffset = elem.getBoundingClientRect();\n\n\t\t} else {\n\t\t\toffset = this.offset();\n\n\t\t\t// Account for the *real* offset parent, which can be the document or its root element\n\t\t\t// when a statically positioned element is identified\n\t\t\tdoc = elem.ownerDocument;\n\t\t\toffsetParent = elem.offsetParent || doc.documentElement;\n\t\t\twhile ( offsetParent &&\n\t\t\t\t( offsetParent === doc.body || offsetParent === doc.documentElement ) &&\n\t\t\t\tjQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\n\t\t\t\toffsetParent = offsetParent.parentNode;\n\t\t\t}\n\t\t\tif ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {\n\n\t\t\t\t// Incorporate borders into its offset, since they are outside its content origin\n\t\t\t\tparentOffset = jQuery( offsetParent ).offset();\n\t\t\t\tparentOffset.top += jQuery.css( offsetParent, \"borderTopWidth\", true );\n\t\t\t\tparentOffset.left += jQuery.css( offsetParent, \"borderLeftWidth\", true );\n\t\t\t}\n\t\t}\n\n\t\t// Subtract parent offsets and element margins\n\t\treturn {\n\t\t\ttop: offset.top - parentOffset.top - jQuery.css( elem, \"marginTop\", true ),\n\t\t\tleft: offset.left - parentOffset.left - jQuery.css( elem, \"marginLeft\", true )\n\t\t};\n\t},\n\n\t// This method will return documentElement in the following cases:\n\t// 1) For the element inside the iframe without offsetParent, this method will return\n\t//    documentElement of the parent window\n\t// 2) For the hidden or detached element\n\t// 3) For body or html element, i.e. in case of the html node - it will return itself\n\t//\n\t// but those exceptions were never presented as a real life use-cases\n\t// and might be considered as more preferable results.\n\t//\n\t// This logic, however, is not guaranteed and can change at any point in the future\n\toffsetParent: function() {\n\t\treturn this.map( function() {\n\t\t\tvar offsetParent = this.offsetParent;\n\n\t\t\twhile ( offsetParent && jQuery.css( offsetParent, \"position\" ) === \"static\" ) {\n\t\t\t\toffsetParent = offsetParent.offsetParent;\n\t\t\t}\n\n\t\t\treturn offsetParent || documentElement;\n\t\t} );\n\t}\n} );\n\n// Create scrollLeft and scrollTop methods\njQuery.each( { scrollLeft: \"pageXOffset\", scrollTop: \"pageYOffset\" }, function( method, prop ) {\n\tvar top = \"pageYOffset\" === prop;\n\n\tjQuery.fn[ method ] = function( val ) {\n\t\treturn access( this, function( elem, method, val ) {\n\n\t\t\t// Coalesce documents and windows\n\t\t\tvar win;\n\t\t\tif ( isWindow( elem ) ) {\n\t\t\t\twin = elem;\n\t\t\t} else if ( elem.nodeType === 9 ) {\n\t\t\t\twin = elem.defaultView;\n\t\t\t}\n\n\t\t\tif ( val === undefined ) {\n\t\t\t\treturn win ? win[ prop ] : elem[ method ];\n\t\t\t}\n\n\t\t\tif ( win ) {\n\t\t\t\twin.scrollTo(\n\t\t\t\t\t!top ? val : win.pageXOffset,\n\t\t\t\t\ttop ? val : win.pageYOffset\n\t\t\t\t);\n\n\t\t\t} else {\n\t\t\t\telem[ method ] = val;\n\t\t\t}\n\t\t}, method, val, arguments.length );\n\t};\n} );\n\n// Support: Safari <=7 - 9.1, Chrome <=37 - 49\n// Add the top/left cssHooks using jQuery.fn.position\n// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084\n// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347\n// getComputedStyle returns percent when specified for top/left/bottom/right;\n// rather than make the css module depend on the offset module, just check for it here\njQuery.each( [ \"top\", \"left\" ], function( _i, prop ) {\n\tjQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,\n\t\tfunction( elem, computed ) {\n\t\t\tif ( computed ) {\n\t\t\t\tcomputed = curCSS( elem, prop );\n\n\t\t\t\t// If curCSS returns percentage, fallback to offset\n\t\t\t\treturn rnumnonpx.test( computed ) ?\n\t\t\t\t\tjQuery( elem ).position()[ prop ] + \"px\" :\n\t\t\t\t\tcomputed;\n\t\t\t}\n\t\t}\n\t);\n} );\n\n\n// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods\njQuery.each( { Height: \"height\", Width: \"width\" }, function( name, type ) {\n\tjQuery.each( {\n\t\tpadding: \"inner\" + name,\n\t\tcontent: type,\n\t\t\"\": \"outer\" + name\n\t}, function( defaultExtra, funcName ) {\n\n\t\t// Margin is only for outerHeight, outerWidth\n\t\tjQuery.fn[ funcName ] = function( margin, value ) {\n\t\t\tvar chainable = arguments.length && ( defaultExtra || typeof margin !== \"boolean\" ),\n\t\t\t\textra = defaultExtra || ( margin === true || value === true ? \"margin\" : \"border\" );\n\n\t\t\treturn access( this, function( elem, type, value ) {\n\t\t\t\tvar doc;\n\n\t\t\t\tif ( isWindow( elem ) ) {\n\n\t\t\t\t\t// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)\n\t\t\t\t\treturn funcName.indexOf( \"outer\" ) === 0 ?\n\t\t\t\t\t\telem[ \"inner\" + name ] :\n\t\t\t\t\t\telem.document.documentElement[ \"client\" + name ];\n\t\t\t\t}\n\n\t\t\t\t// Get document width or height\n\t\t\t\tif ( elem.nodeType === 9 ) {\n\t\t\t\t\tdoc = elem.documentElement;\n\n\t\t\t\t\t// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],\n\t\t\t\t\t// whichever is greatest\n\t\t\t\t\treturn Math.max(\n\t\t\t\t\t\telem.body[ \"scroll\" + name ], doc[ \"scroll\" + name ],\n\t\t\t\t\t\telem.body[ \"offset\" + name ], doc[ \"offset\" + name ],\n\t\t\t\t\t\tdoc[ \"client\" + name ]\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn value === undefined ?\n\n\t\t\t\t\t// Get width or height on the element, requesting but not forcing parseFloat\n\t\t\t\t\tjQuery.css( elem, type, extra ) :\n\n\t\t\t\t\t// Set width or height on the element\n\t\t\t\t\tjQuery.style( elem, type, value, extra );\n\t\t\t}, type, chainable ? margin : undefined, chainable );\n\t\t};\n\t} );\n} );\n\n\njQuery.each( [\n\t\"ajaxStart\",\n\t\"ajaxStop\",\n\t\"ajaxComplete\",\n\t\"ajaxError\",\n\t\"ajaxSuccess\",\n\t\"ajaxSend\"\n], function( _i, type ) {\n\tjQuery.fn[ type ] = function( fn ) {\n\t\treturn this.on( type, fn );\n\t};\n} );\n\n\n\n\njQuery.fn.extend( {\n\n\tbind: function( types, data, fn ) {\n\t\treturn this.on( types, null, data, fn );\n\t},\n\tunbind: function( types, fn ) {\n\t\treturn this.off( types, null, fn );\n\t},\n\n\tdelegate: function( selector, types, data, fn ) {\n\t\treturn this.on( types, selector, data, fn );\n\t},\n\tundelegate: function( selector, types, fn ) {\n\n\t\t// ( namespace ) or ( selector, types [, fn] )\n\t\treturn arguments.length === 1 ?\n\t\t\tthis.off( selector, \"**\" ) :\n\t\t\tthis.off( types, selector || \"**\", fn );\n\t},\n\n\thover: function( fnOver, fnOut ) {\n\t\treturn this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );\n\t}\n} );\n\njQuery.each(\n\t( \"blur focus focusin focusout resize scroll click dblclick \" +\n\t\"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave \" +\n\t\"change select submit keydown keypress keyup contextmenu\" ).split( \" \" ),\n\tfunction( _i, name ) {\n\n\t\t// Handle event binding\n\t\tjQuery.fn[ name ] = function( data, fn ) {\n\t\t\treturn arguments.length > 0 ?\n\t\t\t\tthis.on( name, null, data, fn ) :\n\t\t\t\tthis.trigger( name );\n\t\t};\n\t}\n);\n\n\n\n\n// Support: Android <=4.0 only\n// Make sure we trim BOM and NBSP\n// Require that the \"whitespace run\" starts from a non-whitespace\n// to avoid O(N^2) behavior when the engine would try matching \"\\s+$\" at each space position.\nvar rtrim = /^[\\s\\uFEFF\\xA0]+|([^\\s\\uFEFF\\xA0])[\\s\\uFEFF\\xA0]+$/g;\n\n// Bind a function to a context, optionally partially applying any\n// arguments.\n// jQuery.proxy is deprecated to promote standards (specifically Function#bind)\n// However, it is not slated for removal any time soon\njQuery.proxy = function( fn, context ) {\n\tvar tmp, args, proxy;\n\n\tif ( typeof context === \"string\" ) {\n\t\ttmp = fn[ context ];\n\t\tcontext = fn;\n\t\tfn = tmp;\n\t}\n\n\t// Quick check to determine if target is callable, in the spec\n\t// this throws a TypeError, but we will just return undefined.\n\tif ( !isFunction( fn ) ) {\n\t\treturn undefined;\n\t}\n\n\t// Simulated bind\n\targs = slice.call( arguments, 2 );\n\tproxy = function() {\n\t\treturn fn.apply( context || this, args.concat( slice.call( arguments ) ) );\n\t};\n\n\t// Set the guid of unique handler to the same of original handler, so it can be removed\n\tproxy.guid = fn.guid = fn.guid || jQuery.guid++;\n\n\treturn proxy;\n};\n\njQuery.holdReady = function( hold ) {\n\tif ( hold ) {\n\t\tjQuery.readyWait++;\n\t} else {\n\t\tjQuery.ready( true );\n\t}\n};\njQuery.isArray = Array.isArray;\njQuery.parseJSON = JSON.parse;\njQuery.nodeName = nodeName;\njQuery.isFunction = isFunction;\njQuery.isWindow = isWindow;\njQuery.camelCase = camelCase;\njQuery.type = toType;\n\njQuery.now = Date.now;\n\njQuery.isNumeric = function( obj ) {\n\n\t// As of jQuery 3.0, isNumeric is limited to\n\t// strings and numbers (primitives or objects)\n\t// that can be coerced to finite numbers (gh-2662)\n\tvar type = jQuery.type( obj );\n\treturn ( type === \"number\" || type === \"string\" ) &&\n\n\t\t// parseFloat NaNs numeric-cast false positives (\"\")\n\t\t// ...but misinterprets leading-number strings, particularly hex literals (\"0x...\")\n\t\t// subtraction forces infinities to NaN\n\t\t!isNaN( obj - parseFloat( obj ) );\n};\n\njQuery.trim = function( text ) {\n\treturn text == null ?\n\t\t\"\" :\n\t\t( text + \"\" ).replace( rtrim, \"$1\" );\n};\n\n\n\n// Register as a named AMD module, since jQuery can be concatenated with other\n// files that may use define, but not via a proper concatenation script that\n// understands anonymous AMD modules. A named AMD is safest and most robust\n// way to register. Lowercase jquery is used because AMD module names are\n// derived from file names, and jQuery is normally delivered in a lowercase\n// file name. Do this after creating the global so that if an AMD module wants\n// to call noConflict to hide this version of jQuery, it will work.\n\n// Note that for maximum portability, libraries that are not jQuery should\n// declare themselves as anonymous modules, and avoid setting a global if an\n// AMD loader is present. jQuery is a special case. For more information, see\n// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon\n\nif ( typeof define === \"function\" && define.amd ) {\n\tdefine( \"jquery\", [], function() {\n\t\treturn jQuery;\n\t} );\n}\n\n\n\n\nvar\n\n\t// Map over jQuery in case of overwrite\n\t_jQuery = window.jQuery,\n\n\t// Map over the $ in case of overwrite\n\t_$ = window.$;\n\njQuery.noConflict = function( deep ) {\n\tif ( window.$ === jQuery ) {\n\t\twindow.$ = _$;\n\t}\n\n\tif ( deep && window.jQuery === jQuery ) {\n\t\twindow.jQuery = _jQuery;\n\t}\n\n\treturn jQuery;\n};\n\n// Expose jQuery and $ identifiers, even in AMD\n// (trac-7102#comment:10, https://github.com/jquery/jquery/pull/557)\n// and CommonJS for browser emulators (trac-13566)\nif ( typeof noGlobal === \"undefined\" ) {\n\twindow.jQuery = window.$ = jQuery;\n}\n\n\n\n\nreturn jQuery;\n} );\n", "/*!\r\n * jQuery Validation Plugin v1.19.3\r\n *\r\n * https://jqueryvalidation.org/\r\n *\r\n * Copyright (c) 2021 J\u00F6rn Zaefferer\r\n * Released under the MIT license\r\n */\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\t\tdefine( [\"jquery\"], factory );\r\n\t} else if (typeof module === \"object\" && module.exports) {\r\n\t\tmodule.exports = factory( require( \"jquery\" ) );\r\n\t} else {\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n\r\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t//   - A user defined a `submitHandler`\n\t\t\t\t\t//   - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t//     was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"<input type='hidden'/>\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n};\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array  ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift       => 16\n\t\t\t// Ctrl        => 17\n\t\t\t// Alt         => 18\n\t\t\t// Caps lock   => 20\n\t\t\t// End         => 35\n\t\t\t// Home        => 36\n\t\t\t// Left arrow  => 37\n\t\t\t// Up arrow    => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow  => 40\n\t\t\t// Insert      => 45\n\t\t\t// Num lock    => 144\n\t\t\t// AltGr key   => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \".  Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t//     method: \"method name\",\n\t\t//     parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() ) {\n\t\t\t\t$( this.currentForm ).submit();\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for <input required> in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\r\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\r\n}));", "(function (factory) {\n  if (typeof define === \"function\" && define.amd) {\n    define([\"jquery\", \"../jquery.validate\"], factory);\n  } else if (typeof module === \"object\" && module.exports) {\n    module.exports = factory(require(\"jquery\"));\n  } else {\n    factory(jQuery);\n  }\n})(function ($) {\n  /*\n   * Translated default messages for the jQuery validation plugin.\n   * Locale: FR (French; fran\u00E7ais)\n   */\n  $.extend($.validator.messages, {\n    required: \"Merci de remplir ce champ obligatoire\",\n    remote: \"Veuillez corriger ce champ.\",\n    email: \"Votre email ne semble pas valide, merci de le v\u00E9rifier\",\n    url: \"Veuillez fournir une adresse URL valide.\",\n    date: \"Veuillez fournir une date valide.\",\n    dateISO: \"Veuillez fournir une date valide (ISO).\",\n    number: \"Veuillez fournir un num\u00E9ro valide.\",\n    digits: \"Veuillez fournir seulement des chiffres.\",\n    creditcard: \"Veuillez fournir un num\u00E9ro de carte de cr\u00E9dit valide.\",\n    equalTo: \"Veuillez fournir encore la m\u00EAme valeur.\",\n    notEqualTo:\n      \"Veuillez fournir une valeur diff\u00E9rente, les valeurs ne doivent pas \u00EAtre identiques.\",\n    extension: \"Veuillez fournir une valeur avec une extension valide.\",\n    maxlength: $.validator.format(\"Veuillez fournir au plus {0} caract\u00E8res.\"),\n    minlength: $.validator.format(\"Veuillez fournir au moins {0} caract\u00E8res.\"),\n    rangelength: $.validator.format(\n      \"Veuillez fournir une valeur qui contient entre {0} et {1} caract\u00E8res.\"\n    ),\n    range: $.validator.format(\"Veuillez fournir une valeur entre {0} et {1}.\"),\n    max: $.validator.format(\n      \"Veuillez fournir une valeur inf\u00E9rieure ou \u00E9gale \u00E0 {0}.\"\n    ),\n    min: $.validator.format(\n      \"Veuillez fournir une valeur sup\u00E9rieure ou \u00E9gale \u00E0 {0}.\"\n    ),\n    step: $.validator.format(\"Veuillez fournir une valeur multiple de {0}.\"),\n    maxWords: $.validator.format(\"Veuillez fournir au plus {0} mots.\"),\n    minWords: $.validator.format(\"Veuillez fournir au moins {0} mots.\"),\n    rangeWords: $.validator.format(\"Veuillez fournir entre {0} et {1} mots.\"),\n    letterswithbasicpunc:\n      \"Veuillez fournir seulement des lettres et des signes de ponctuation.\",\n    alphanumeric:\n      \"Veuillez fournir seulement des lettres, nombres, espaces et soulignages.\",\n    lettersonly: \"Veuillez fournir seulement des lettres.\",\n    nowhitespace: \"Veuillez ne pas inscrire d'espaces blancs.\",\n    ziprange:\n      \"Veuillez fournir un code postal entre 902xx-xxxx et 905-xx-xxxx.\",\n    integer:\n      \"Veuillez fournir un nombre non d\u00E9cimal qui est positif ou n\u00E9gatif.\",\n    vinUS: \"Veuillez fournir un num\u00E9ro d'identification du v\u00E9hicule (VIN).\",\n    dateITA: \"Veuillez fournir une date valide.\",\n    time: \"Veuillez fournir une heure valide entre 00:00 et 23:59.\",\n    phoneUS: \"Veuillez fournir un num\u00E9ro de t\u00E9l\u00E9phone valide.\",\n    phoneUK: \"Veuillez fournir un num\u00E9ro de t\u00E9l\u00E9phone valide.\",\n    mobileUK: \"Veuillez fournir un num\u00E9ro de t\u00E9l\u00E9phone mobile valide.\",\n    strippedminlength: $.validator.format(\n      \"Veuillez fournir au moins {0} caract\u00E8res.\"\n    ),\n    email2: \"Veuillez fournir une adresse \u00E9lectronique valide.\",\n    url2: \"Veuillez fournir une adresse URL valide.\",\n    creditcardtypes: \"Veuillez fournir un num\u00E9ro de carte de cr\u00E9dit valide.\",\n    ipv4: \"Veuillez fournir une adresse IP v4 valide.\",\n    ipv6: \"Veuillez fournir une adresse IP v6 valide.\",\n    require_from_group: $.validator.format(\n      \"Veuillez fournir au moins {0} de ces champs.\"\n    ),\n    nifES: \"Veuillez fournir un num\u00E9ro NIF valide.\",\n    nieES: \"Veuillez fournir un num\u00E9ro NIE valide.\",\n    cifES: \"Veuillez fournir un num\u00E9ro CIF valide.\",\n    postalCodeCA: \"Veuillez fournir un code postal valide.\",\n  });\n  return $;\n});\n", "/*\nUnobtrusive JavaScript\nhttps://github.com/rails/rails/blob/main/actionview/app/assets/javascripts\nReleased under the MIT license\n */;\n\n(function() {\n  var context = this;\n\n  (function() {\n    (function() {\n      this.Rails = {\n        linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',\n        buttonClickSelector: {\n          selector: 'button[data-remote]:not([form]), button[data-confirm]:not([form])',\n          exclude: 'form button'\n        },\n        inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',\n        formSubmitSelector: 'form:not([data-turbo=true])',\n        formInputClickSelector: 'form:not([data-turbo=true]) input[type=submit], form:not([data-turbo=true]) input[type=image], form:not([data-turbo=true]) button[type=submit], form:not([data-turbo=true]) button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',\n        formDisableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',\n        formEnableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',\n        fileInputSelector: 'input[name][type=file]:not([disabled])',\n        linkDisableSelector: 'a[data-disable-with], a[data-disable]',\n        buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]'\n      };\n\n    }).call(this);\n  }).call(context);\n\n  var Rails = context.Rails;\n\n  (function() {\n    (function() {\n      var nonce;\n\n      nonce = null;\n\n      Rails.loadCSPNonce = function() {\n        var ref;\n        return nonce = (ref = document.querySelector(\"meta[name=csp-nonce]\")) != null ? ref.content : void 0;\n      };\n\n      Rails.cspNonce = function() {\n        return nonce != null ? nonce : Rails.loadCSPNonce();\n      };\n\n    }).call(this);\n    (function() {\n      var expando, m;\n\n      m = Element.prototype.matches || Element.prototype.matchesSelector || Element.prototype.mozMatchesSelector || Element.prototype.msMatchesSelector || Element.prototype.oMatchesSelector || Element.prototype.webkitMatchesSelector;\n\n      Rails.matches = function(element, selector) {\n        if (selector.exclude != null) {\n          return m.call(element, selector.selector) && !m.call(element, selector.exclude);\n        } else {\n          return m.call(element, selector);\n        }\n      };\n\n      expando = '_ujsData';\n\n      Rails.getData = function(element, key) {\n        var ref;\n        return (ref = element[expando]) != null ? ref[key] : void 0;\n      };\n\n      Rails.setData = function(element, key, value) {\n        if (element[expando] == null) {\n          element[expando] = {};\n        }\n        return element[expando][key] = value;\n      };\n\n      Rails.$ = function(selector) {\n        return Array.prototype.slice.call(document.querySelectorAll(selector));\n      };\n\n    }).call(this);\n    (function() {\n      var $, csrfParam, csrfToken;\n\n      $ = Rails.$;\n\n      csrfToken = Rails.csrfToken = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-token]');\n        return meta && meta.content;\n      };\n\n      csrfParam = Rails.csrfParam = function() {\n        var meta;\n        meta = document.querySelector('meta[name=csrf-param]');\n        return meta && meta.content;\n      };\n\n      Rails.CSRFProtection = function(xhr) {\n        var token;\n        token = csrfToken();\n        if (token != null) {\n          return xhr.setRequestHeader('X-CSRF-Token', token);\n        }\n      };\n\n      Rails.refreshCSRFTokens = function() {\n        var param, token;\n        token = csrfToken();\n        param = csrfParam();\n        if ((token != null) && (param != null)) {\n          return $('form input[name=\"' + param + '\"]').forEach(function(input) {\n            return input.value = token;\n          });\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var CustomEvent, fire, matches, preventDefault;\n\n      matches = Rails.matches;\n\n      CustomEvent = window.CustomEvent;\n\n      if (typeof CustomEvent !== 'function') {\n        CustomEvent = function(event, params) {\n          var evt;\n          evt = document.createEvent('CustomEvent');\n          evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n          return evt;\n        };\n        CustomEvent.prototype = window.Event.prototype;\n        preventDefault = CustomEvent.prototype.preventDefault;\n        CustomEvent.prototype.preventDefault = function() {\n          var result;\n          result = preventDefault.call(this);\n          if (this.cancelable && !this.defaultPrevented) {\n            Object.defineProperty(this, 'defaultPrevented', {\n              get: function() {\n                return true;\n              }\n            });\n          }\n          return result;\n        };\n      }\n\n      fire = Rails.fire = function(obj, name, data) {\n        var event;\n        event = new CustomEvent(name, {\n          bubbles: true,\n          cancelable: true,\n          detail: data\n        });\n        obj.dispatchEvent(event);\n        return !event.defaultPrevented;\n      };\n\n      Rails.stopEverything = function(e) {\n        fire(e.target, 'ujs:everythingStopped');\n        e.preventDefault();\n        e.stopPropagation();\n        return e.stopImmediatePropagation();\n      };\n\n      Rails.delegate = function(element, selector, eventType, handler) {\n        return element.addEventListener(eventType, function(e) {\n          var target;\n          target = e.target;\n          while (!(!(target instanceof Element) || matches(target, selector))) {\n            target = target.parentNode;\n          }\n          if (target instanceof Element && handler.call(target, e) === false) {\n            e.preventDefault();\n            return e.stopPropagation();\n          }\n        });\n      };\n\n    }).call(this);\n    (function() {\n      var AcceptHeaders, CSRFProtection, createXHR, cspNonce, fire, prepareOptions, processResponse;\n\n      cspNonce = Rails.cspNonce, CSRFProtection = Rails.CSRFProtection, fire = Rails.fire;\n\n      AcceptHeaders = {\n        '*': '*/*',\n        text: 'text/plain',\n        html: 'text/html',\n        xml: 'application/xml, text/xml',\n        json: 'application/json, text/javascript',\n        script: 'text/javascript, application/javascript, application/ecmascript, application/x-ecmascript'\n      };\n\n      Rails.ajax = function(options) {\n        var xhr;\n        options = prepareOptions(options);\n        xhr = createXHR(options, function() {\n          var ref, response;\n          response = processResponse((ref = xhr.response) != null ? ref : xhr.responseText, xhr.getResponseHeader('Content-Type'));\n          if (Math.floor(xhr.status / 100) === 2) {\n            if (typeof options.success === \"function\") {\n              options.success(response, xhr.statusText, xhr);\n            }\n          } else {\n            if (typeof options.error === \"function\") {\n              options.error(response, xhr.statusText, xhr);\n            }\n          }\n          return typeof options.complete === \"function\" ? options.complete(xhr, xhr.statusText) : void 0;\n        });\n        if ((options.beforeSend != null) && !options.beforeSend(xhr, options)) {\n          return false;\n        }\n        if (xhr.readyState === XMLHttpRequest.OPENED) {\n          return xhr.send(options.data);\n        }\n      };\n\n      prepareOptions = function(options) {\n        options.url = options.url || location.href;\n        options.type = options.type.toUpperCase();\n        if (options.type === 'GET' && options.data) {\n          if (options.url.indexOf('?') < 0) {\n            options.url += '?' + options.data;\n          } else {\n            options.url += '&' + options.data;\n          }\n        }\n        if (AcceptHeaders[options.dataType] == null) {\n          options.dataType = '*';\n        }\n        options.accept = AcceptHeaders[options.dataType];\n        if (options.dataType !== '*') {\n          options.accept += ', */*; q=0.01';\n        }\n        return options;\n      };\n\n      createXHR = function(options, done) {\n        var xhr;\n        xhr = new XMLHttpRequest();\n        xhr.open(options.type, options.url, true);\n        xhr.setRequestHeader('Accept', options.accept);\n        if (typeof options.data === 'string') {\n          xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');\n        }\n        if (!options.crossDomain) {\n          xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n          CSRFProtection(xhr);\n        }\n        xhr.withCredentials = !!options.withCredentials;\n        xhr.onreadystatechange = function() {\n          if (xhr.readyState === XMLHttpRequest.DONE) {\n            return done(xhr);\n          }\n        };\n        return xhr;\n      };\n\n      processResponse = function(response, type) {\n        var parser, script;\n        if (typeof response === 'string' && typeof type === 'string') {\n          if (type.match(/\\bjson\\b/)) {\n            try {\n              response = JSON.parse(response);\n            } catch (error) {}\n          } else if (type.match(/\\b(?:java|ecma)script\\b/)) {\n            script = document.createElement('script');\n            script.setAttribute('nonce', cspNonce());\n            script.text = response;\n            document.head.appendChild(script).parentNode.removeChild(script);\n          } else if (type.match(/\\b(xml|html|svg)\\b/)) {\n            parser = new DOMParser();\n            type = type.replace(/;.+/, '');\n            try {\n              response = parser.parseFromString(response, type);\n            } catch (error) {}\n          }\n        }\n        return response;\n      };\n\n      Rails.href = function(element) {\n        return element.href;\n      };\n\n      Rails.isCrossDomain = function(url) {\n        var e, originAnchor, urlAnchor;\n        originAnchor = document.createElement('a');\n        originAnchor.href = location.href;\n        urlAnchor = document.createElement('a');\n        try {\n          urlAnchor.href = url;\n          return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) || (originAnchor.protocol + '//' + originAnchor.host === urlAnchor.protocol + '//' + urlAnchor.host));\n        } catch (error) {\n          e = error;\n          return true;\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var matches, toArray;\n\n      matches = Rails.matches;\n\n      toArray = function(e) {\n        return Array.prototype.slice.call(e);\n      };\n\n      Rails.serializeElement = function(element, additionalParam) {\n        var inputs, params;\n        inputs = [element];\n        if (matches(element, 'form')) {\n          inputs = toArray(element.elements);\n        }\n        params = [];\n        inputs.forEach(function(input) {\n          if (!input.name || input.disabled) {\n            return;\n          }\n          if (matches(input, 'fieldset[disabled] *')) {\n            return;\n          }\n          if (matches(input, 'select')) {\n            return toArray(input.options).forEach(function(option) {\n              if (option.selected) {\n                return params.push({\n                  name: input.name,\n                  value: option.value\n                });\n              }\n            });\n          } else if (input.checked || ['radio', 'checkbox', 'submit'].indexOf(input.type) === -1) {\n            return params.push({\n              name: input.name,\n              value: input.value\n            });\n          }\n        });\n        if (additionalParam) {\n          params.push(additionalParam);\n        }\n        return params.map(function(param) {\n          if (param.name != null) {\n            return (encodeURIComponent(param.name)) + \"=\" + (encodeURIComponent(param.value));\n          } else {\n            return param;\n          }\n        }).join('&');\n      };\n\n      Rails.formElements = function(form, selector) {\n        if (matches(form, 'form')) {\n          return toArray(form.elements).filter(function(el) {\n            return matches(el, selector);\n          });\n        } else {\n          return toArray(form.querySelectorAll(selector));\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var allowAction, fire, stopEverything;\n\n      fire = Rails.fire, stopEverything = Rails.stopEverything;\n\n      Rails.handleConfirm = function(e) {\n        if (!allowAction(this)) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.confirm = function(message, element) {\n        return confirm(message);\n      };\n\n      allowAction = function(element) {\n        var answer, callback, message;\n        message = element.getAttribute('data-confirm');\n        if (!message) {\n          return true;\n        }\n        answer = false;\n        if (fire(element, 'confirm')) {\n          try {\n            answer = Rails.confirm(message, element);\n          } catch (error) {}\n          callback = fire(element, 'confirm:complete', [answer]);\n        }\n        return answer && callback;\n      };\n\n    }).call(this);\n    (function() {\n      var disableFormElement, disableFormElements, disableLinkElement, enableFormElement, enableFormElements, enableLinkElement, formElements, getData, isXhrRedirect, matches, setData, stopEverything;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, stopEverything = Rails.stopEverything, formElements = Rails.formElements;\n\n      Rails.handleDisabledElement = function(e) {\n        var element;\n        element = this;\n        if (element.disabled) {\n          return stopEverything(e);\n        }\n      };\n\n      Rails.enableElement = function(e) {\n        var element;\n        if (e instanceof Event) {\n          if (isXhrRedirect(e)) {\n            return;\n          }\n          element = e.target;\n        } else {\n          element = e;\n        }\n        if (matches(element, Rails.linkDisableSelector)) {\n          return enableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formEnableSelector)) {\n          return enableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return enableFormElements(element);\n        }\n      };\n\n      Rails.disableElement = function(e) {\n        var element;\n        element = e instanceof Event ? e.target : e;\n        if (matches(element, Rails.linkDisableSelector)) {\n          return disableLinkElement(element);\n        } else if (matches(element, Rails.buttonDisableSelector) || matches(element, Rails.formDisableSelector)) {\n          return disableFormElement(element);\n        } else if (matches(element, Rails.formSubmitSelector)) {\n          return disableFormElements(element);\n        }\n      };\n\n      disableLinkElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          setData(element, 'ujs:enable-with', element.innerHTML);\n          element.innerHTML = replacement;\n        }\n        element.addEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableLinkElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          element.innerHTML = originalText;\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.removeEventListener('click', stopEverything);\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      disableFormElements = function(form) {\n        return formElements(form, Rails.formDisableSelector).forEach(disableFormElement);\n      };\n\n      disableFormElement = function(element) {\n        var replacement;\n        if (getData(element, 'ujs:disabled')) {\n          return;\n        }\n        replacement = element.getAttribute('data-disable-with');\n        if (replacement != null) {\n          if (matches(element, 'button')) {\n            setData(element, 'ujs:enable-with', element.innerHTML);\n            element.innerHTML = replacement;\n          } else {\n            setData(element, 'ujs:enable-with', element.value);\n            element.value = replacement;\n          }\n        }\n        element.disabled = true;\n        return setData(element, 'ujs:disabled', true);\n      };\n\n      enableFormElements = function(form) {\n        return formElements(form, Rails.formEnableSelector).forEach(enableFormElement);\n      };\n\n      enableFormElement = function(element) {\n        var originalText;\n        originalText = getData(element, 'ujs:enable-with');\n        if (originalText != null) {\n          if (matches(element, 'button')) {\n            element.innerHTML = originalText;\n          } else {\n            element.value = originalText;\n          }\n          setData(element, 'ujs:enable-with', null);\n        }\n        element.disabled = false;\n        return setData(element, 'ujs:disabled', null);\n      };\n\n      isXhrRedirect = function(event) {\n        var ref, xhr;\n        xhr = (ref = event.detail) != null ? ref[0] : void 0;\n        return (xhr != null ? xhr.getResponseHeader(\"X-Xhr-Redirect\") : void 0) != null;\n      };\n\n    }).call(this);\n    (function() {\n      var stopEverything;\n\n      stopEverything = Rails.stopEverything;\n\n      Rails.handleMethod = function(e) {\n        var csrfParam, csrfToken, form, formContent, href, link, method;\n        link = this;\n        method = link.getAttribute('data-method');\n        if (!method) {\n          return;\n        }\n        href = Rails.href(link);\n        csrfToken = Rails.csrfToken();\n        csrfParam = Rails.csrfParam();\n        form = document.createElement('form');\n        formContent = \"<input name='_method' value='\" + method + \"' type='hidden' />\";\n        if ((csrfParam != null) && (csrfToken != null) && !Rails.isCrossDomain(href)) {\n          formContent += \"<input name='\" + csrfParam + \"' value='\" + csrfToken + \"' type='hidden' />\";\n        }\n        formContent += '<input type=\"submit\" />';\n        form.method = 'post';\n        form.action = href;\n        form.target = link.target;\n        form.innerHTML = formContent;\n        form.style.display = 'none';\n        document.body.appendChild(form);\n        form.querySelector('[type=\"submit\"]').click();\n        return stopEverything(e);\n      };\n\n    }).call(this);\n    (function() {\n      var ajax, fire, getData, isCrossDomain, isRemote, matches, serializeElement, setData, stopEverything,\n        slice = [].slice;\n\n      matches = Rails.matches, getData = Rails.getData, setData = Rails.setData, fire = Rails.fire, stopEverything = Rails.stopEverything, ajax = Rails.ajax, isCrossDomain = Rails.isCrossDomain, serializeElement = Rails.serializeElement;\n\n      isRemote = function(element) {\n        var value;\n        value = element.getAttribute('data-remote');\n        return (value != null) && value !== 'false';\n      };\n\n      Rails.handleRemote = function(e) {\n        var button, data, dataType, element, method, url, withCredentials;\n        element = this;\n        if (!isRemote(element)) {\n          return true;\n        }\n        if (!fire(element, 'ajax:before')) {\n          fire(element, 'ajax:stopped');\n          return false;\n        }\n        withCredentials = element.getAttribute('data-with-credentials');\n        dataType = element.getAttribute('data-type') || 'script';\n        if (matches(element, Rails.formSubmitSelector)) {\n          button = getData(element, 'ujs:submit-button');\n          method = getData(element, 'ujs:submit-button-formmethod') || element.method;\n          url = getData(element, 'ujs:submit-button-formaction') || element.getAttribute('action') || location.href;\n          if (method.toUpperCase() === 'GET') {\n            url = url.replace(/\\?.*$/, '');\n          }\n          if (element.enctype === 'multipart/form-data') {\n            data = new FormData(element);\n            if (button != null) {\n              data.append(button.name, button.value);\n            }\n          } else {\n            data = serializeElement(element, button);\n          }\n          setData(element, 'ujs:submit-button', null);\n          setData(element, 'ujs:submit-button-formmethod', null);\n          setData(element, 'ujs:submit-button-formaction', null);\n        } else if (matches(element, Rails.buttonClickSelector) || matches(element, Rails.inputChangeSelector)) {\n          method = element.getAttribute('data-method');\n          url = element.getAttribute('data-url');\n          data = serializeElement(element, element.getAttribute('data-params'));\n        } else {\n          method = element.getAttribute('data-method');\n          url = Rails.href(element);\n          data = element.getAttribute('data-params');\n        }\n        ajax({\n          type: method || 'GET',\n          url: url,\n          data: data,\n          dataType: dataType,\n          beforeSend: function(xhr, options) {\n            if (fire(element, 'ajax:beforeSend', [xhr, options])) {\n              return fire(element, 'ajax:send', [xhr]);\n            } else {\n              fire(element, 'ajax:stopped');\n              return false;\n            }\n          },\n          success: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:success', args);\n          },\n          error: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:error', args);\n          },\n          complete: function() {\n            var args;\n            args = 1 <= arguments.length ? slice.call(arguments, 0) : [];\n            return fire(element, 'ajax:complete', args);\n          },\n          crossDomain: isCrossDomain(url),\n          withCredentials: (withCredentials != null) && withCredentials !== 'false'\n        });\n        return stopEverything(e);\n      };\n\n      Rails.formSubmitButtonClick = function(e) {\n        var button, form;\n        button = this;\n        form = button.form;\n        if (!form) {\n          return;\n        }\n        if (button.name) {\n          setData(form, 'ujs:submit-button', {\n            name: button.name,\n            value: button.value\n          });\n        }\n        setData(form, 'ujs:formnovalidate-button', button.formNoValidate);\n        setData(form, 'ujs:submit-button-formaction', button.getAttribute('formaction'));\n        return setData(form, 'ujs:submit-button-formmethod', button.getAttribute('formmethod'));\n      };\n\n      Rails.preventInsignificantClick = function(e) {\n        var data, insignificantMetaClick, link, metaClick, method, nonPrimaryMouseClick;\n        link = this;\n        method = (link.getAttribute('data-method') || 'GET').toUpperCase();\n        data = link.getAttribute('data-params');\n        metaClick = e.metaKey || e.ctrlKey;\n        insignificantMetaClick = metaClick && method === 'GET' && !data;\n        nonPrimaryMouseClick = (e.button != null) && e.button !== 0;\n        if (nonPrimaryMouseClick || insignificantMetaClick) {\n          return e.stopImmediatePropagation();\n        }\n      };\n\n    }).call(this);\n    (function() {\n      var $, CSRFProtection, delegate, disableElement, enableElement, fire, formSubmitButtonClick, getData, handleConfirm, handleDisabledElement, handleMethod, handleRemote, loadCSPNonce, preventInsignificantClick, refreshCSRFTokens;\n\n      fire = Rails.fire, delegate = Rails.delegate, getData = Rails.getData, $ = Rails.$, refreshCSRFTokens = Rails.refreshCSRFTokens, CSRFProtection = Rails.CSRFProtection, loadCSPNonce = Rails.loadCSPNonce, enableElement = Rails.enableElement, disableElement = Rails.disableElement, handleDisabledElement = Rails.handleDisabledElement, handleConfirm = Rails.handleConfirm, preventInsignificantClick = Rails.preventInsignificantClick, handleRemote = Rails.handleRemote, formSubmitButtonClick = Rails.formSubmitButtonClick, handleMethod = Rails.handleMethod;\n\n      if ((typeof jQuery !== \"undefined\" && jQuery !== null) && (jQuery.ajax != null)) {\n        if (jQuery.rails) {\n          throw new Error('If you load both jquery_ujs and rails-ujs, use rails-ujs only.');\n        }\n        jQuery.rails = Rails;\n        jQuery.ajaxPrefilter(function(options, originalOptions, xhr) {\n          if (!options.crossDomain) {\n            return CSRFProtection(xhr);\n          }\n        });\n      }\n\n      Rails.start = function() {\n        if (window._rails_loaded) {\n          throw new Error('rails-ujs has already been loaded!');\n        }\n        window.addEventListener('pageshow', function() {\n          $(Rails.formEnableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n          return $(Rails.linkDisableSelector).forEach(function(el) {\n            if (getData(el, 'ujs:disabled')) {\n              return enableElement(el);\n            }\n          });\n        });\n        delegate(document, Rails.linkDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.linkDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.buttonDisableSelector, 'ajax:stopped', enableElement);\n        delegate(document, Rails.linkClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.linkClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.linkClickSelector, 'click', disableElement);\n        delegate(document, Rails.linkClickSelector, 'click', handleRemote);\n        delegate(document, Rails.linkClickSelector, 'click', handleMethod);\n        delegate(document, Rails.buttonClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.buttonClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.buttonClickSelector, 'click', disableElement);\n        delegate(document, Rails.buttonClickSelector, 'click', handleRemote);\n        delegate(document, Rails.inputChangeSelector, 'change', handleDisabledElement);\n        delegate(document, Rails.inputChangeSelector, 'change', handleConfirm);\n        delegate(document, Rails.inputChangeSelector, 'change', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleDisabledElement);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleConfirm);\n        delegate(document, Rails.formSubmitSelector, 'submit', handleRemote);\n        delegate(document, Rails.formSubmitSelector, 'submit', function(e) {\n          return setTimeout((function() {\n            return disableElement(e);\n          }), 13);\n        });\n        delegate(document, Rails.formSubmitSelector, 'ajax:send', disableElement);\n        delegate(document, Rails.formSubmitSelector, 'ajax:complete', enableElement);\n        delegate(document, Rails.formInputClickSelector, 'click', preventInsignificantClick);\n        delegate(document, Rails.formInputClickSelector, 'click', handleDisabledElement);\n        delegate(document, Rails.formInputClickSelector, 'click', handleConfirm);\n        delegate(document, Rails.formInputClickSelector, 'click', formSubmitButtonClick);\n        document.addEventListener('DOMContentLoaded', refreshCSRFTokens);\n        document.addEventListener('DOMContentLoaded', loadCSPNonce);\n        return window._rails_loaded = true;\n      };\n\n      if (window.Rails === Rails && fire(document, 'rails:attachBindings')) {\n        Rails.start();\n      }\n\n    }).call(this);\n  }).call(this);\n\n  if (typeof module === \"object\" && module.exports) {\n    module.exports = Rails;\n  } else if (typeof define === \"function\" && define.amd) {\n    define(Rails);\n  }\n}).call(this);\n", "(function($) {\n\n  var cocoon_element_counter = 0;\n\n  var create_new_id = function() {\n    return (new Date().getTime() + cocoon_element_counter++);\n  }\n\n  var newcontent_braced = function(id) {\n    return '[' + id + ']$1';\n  }\n\n  var newcontent_underscord = function(id) {\n    return '_' + id + '_$1';\n  }\n\n  var getInsertionNodeElem = function(insertionNode, insertionTraversal, $this){\n\n    if (!insertionNode){\n      return $this.parent();\n    }\n\n    if (typeof insertionNode == 'function'){\n      if(insertionTraversal){\n        console.warn('association-insertion-traversal is ignored, because association-insertion-node is given as a function.')\n      }\n      return insertionNode($this);\n    }\n\n    if(typeof insertionNode == 'string'){\n      if (insertionTraversal){\n        return $this[insertionTraversal](insertionNode);\n      }else{\n        return insertionNode == \"this\" ? $this : $(insertionNode);\n      }\n    }\n\n  }\n\n  $(document).on('click', '.add_fields', function(e) {\n    e.preventDefault();\n    e.stopPropagation();\n    \n    var $this                 = $(this),\n        assoc                 = $this.data('association'),\n        assocs                = $this.data('associations'),\n        content               = $this.data('association-insertion-template'),\n        insertionMethod       = $this.data('association-insertion-method') || $this.data('association-insertion-position') || 'before',\n        insertionNode         = $this.data('association-insertion-node'),\n        insertionTraversal    = $this.data('association-insertion-traversal'),\n        count                 = parseInt($this.data('count'), 10),\n        regexp_braced         = new RegExp('\\\\[new_' + assoc + '\\\\](.*?\\\\s)', 'g'),\n        regexp_underscord     = new RegExp('_new_' + assoc + '_(\\\\w*)', 'g'),\n        new_id                = create_new_id(),\n        new_content           = content.replace(regexp_braced, newcontent_braced(new_id)),\n        new_contents          = [],\n        originalEvent         = e;\n\n\n    if (new_content == content) {\n      regexp_braced     = new RegExp('\\\\[new_' + assocs + '\\\\](.*?\\\\s)', 'g');\n      regexp_underscord = new RegExp('_new_' + assocs + '_(\\\\w*)', 'g');\n      new_content       = content.replace(regexp_braced, newcontent_braced(new_id));\n    }\n\n    new_content = new_content.replace(regexp_underscord, newcontent_underscord(new_id));\n    new_contents = [new_content];\n\n    count = (isNaN(count) ? 1 : Math.max(count, 1));\n    count -= 1;\n\n    while (count) {\n      new_id      = create_new_id();\n      new_content = content.replace(regexp_braced, newcontent_braced(new_id));\n      new_content = new_content.replace(regexp_underscord, newcontent_underscord(new_id));\n      new_contents.push(new_content);\n\n      count -= 1;\n    }\n\n    var insertionNodeElem = getInsertionNodeElem(insertionNode, insertionTraversal, $this)\n\n    if( !insertionNodeElem || (insertionNodeElem.length == 0) ){\n      console.warn(\"Couldn't find the element to insert the template. Make sure your `data-association-insertion-*` on `link_to_add_association` is correct.\")\n    }\n\n    $.each(new_contents, function(i, node) {\n      var contentNode = $(node);\n\n      var before_insert = jQuery.Event('cocoon:before-insert');\n      insertionNodeElem.trigger(before_insert, [contentNode, originalEvent]);\n\n      if (!before_insert.isDefaultPrevented()) {\n        // allow any of the jquery dom manipulation methods (after, before, append, prepend, etc)\n        // to be called on the node.  allows the insertion node to be the parent of the inserted\n        // code and doesn't force it to be a sibling like after/before does. default: 'before'\n        var addedContent = insertionNodeElem[insertionMethod](contentNode);\n\n        insertionNodeElem.trigger('cocoon:after-insert', [contentNode,\n          originalEvent]);\n      }\n    });\n  });\n\n  $(document).on('click', '.remove_fields.dynamic, .remove_fields.existing', function(e) {\n    var $this = $(this),\n        wrapper_class = $this.data('wrapper-class') || 'nested-fields',\n        node_to_delete = $this.closest('.' + wrapper_class),\n        trigger_node = node_to_delete.parent(),\n        originalEvent = e;\n\n    e.preventDefault();\n    e.stopPropagation();\n\n    var before_remove = jQuery.Event('cocoon:before-remove');\n    trigger_node.trigger(before_remove, [node_to_delete, originalEvent]);\n\n    if (!before_remove.isDefaultPrevented()) {\n      var timeout = trigger_node.data('remove-timeout') || 0;\n\n      setTimeout(function() {\n        if ($this.hasClass('dynamic')) {\n            node_to_delete.detach();\n        } else {\n            $this.prev(\"input[type=hidden]\").val(\"1\");\n            node_to_delete.hide();\n        }\n        trigger_node.trigger('cocoon:after-remove', [node_to_delete,\n          originalEvent]);\n      }, timeout);\n    }\n  });\n\n\n  $(document).on(\"ready page:load turbolinks:load\", function() {\n    $('.remove_fields.existing.destroyed').each(function(i, obj) {\n      var $this = $(this),\n          wrapper_class = $this.data('wrapper-class') || 'nested-fields';\n\n      $this.closest('.' + wrapper_class).hide();\n    });\n  });\n\n})(jQuery);\n\n\n", "/*\nTurbo 7.3.0\nCopyright \u00A9 2023 37signals LLC\n */\n(function () {\n    if (window.Reflect === undefined ||\n        window.customElements === undefined ||\n        window.customElements.polyfillWrapFlushCallback) {\n        return;\n    }\n    const BuiltInHTMLElement = HTMLElement;\n    const 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\n/**\n * The MIT License (MIT)\n * \n * Copyright (c) 2019 Javan Makhmali\n * \n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n * \n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n * \n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n(function(prototype) {\n  if (typeof prototype.requestSubmit == \"function\") return\n\n  prototype.requestSubmit = function(submitter) {\n    if (submitter) {\n      validateSubmitter(submitter, this);\n      submitter.click();\n    } else {\n      submitter = document.createElement(\"input\");\n      submitter.type = \"submit\";\n      submitter.hidden = true;\n      this.appendChild(submitter);\n      submitter.click();\n      this.removeChild(submitter);\n    }\n  };\n\n  function validateSubmitter(submitter, form) {\n    submitter instanceof HTMLElement || raise(TypeError, \"parameter 1 is not of type 'HTMLElement'\");\n    submitter.type == \"submit\" || raise(TypeError, \"The specified element is not a submit button\");\n    submitter.form == form || raise(DOMException, \"The specified element is not owned by this form element\", \"NotFoundError\");\n  }\n\n  function raise(errorConstructor, message, name) {\n    throw new errorConstructor(\"Failed to execute 'requestSubmit' on 'HTMLFormElement': \" + message + \".\", name)\n  }\n})(HTMLFormElement.prototype);\n\nconst submittersByForm = new WeakMap();\nfunction findSubmitterFromClickTarget(target) {\n    const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n    const candidate = element ? element.closest(\"input, button\") : null;\n    return (candidate === null || candidate === void 0 ? void 0 : candidate.type) == \"submit\" ? candidate : null;\n}\nfunction clickCaptured(event) {\n    const submitter = findSubmitterFromClickTarget(event.target);\n    if (submitter && submitter.form) {\n        submittersByForm.set(submitter.form, submitter);\n    }\n}\n(function () {\n    if (\"submitter\" in Event.prototype)\n        return;\n    let prototype = window.Event.prototype;\n    if (\"SubmitEvent\" in window && /Apple Computer/.test(navigator.vendor)) {\n        prototype = window.SubmitEvent.prototype;\n    }\n    else if (\"SubmitEvent\" in window) {\n        return;\n    }\n    addEventListener(\"click\", clickCaptured, true);\n    Object.defineProperty(prototype, \"submitter\", {\n        get() {\n            if (this.type == \"submit\" && this.target instanceof HTMLFormElement) {\n                return submittersByForm.get(this.target);\n            }\n        },\n    });\n})();\n\nvar FrameLoadingStyle;\n(function (FrameLoadingStyle) {\n    FrameLoadingStyle[\"eager\"] = \"eager\";\n    FrameLoadingStyle[\"lazy\"] = \"lazy\";\n})(FrameLoadingStyle || (FrameLoadingStyle = {}));\nclass FrameElement extends HTMLElement {\n    static get observedAttributes() {\n        return [\"disabled\", \"complete\", \"loading\", \"src\"];\n    }\n    constructor() {\n        super();\n        this.loaded = Promise.resolve();\n        this.delegate = new FrameElement.delegateConstructor(this);\n    }\n    connectedCallback() {\n        this.delegate.connect();\n    }\n    disconnectedCallback() {\n        this.delegate.disconnect();\n    }\n    reload() {\n        return this.delegate.sourceURLReloaded();\n    }\n    attributeChangedCallback(name) {\n        if (name == \"loading\") {\n            this.delegate.loadingStyleChanged();\n        }\n        else if (name == \"complete\") {\n            this.delegate.completeChanged();\n        }\n        else if (name == \"src\") {\n            this.delegate.sourceURLChanged();\n        }\n        else {\n            this.delegate.disabledChanged();\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\");\n    }\n    set src(value) {\n        if (value) {\n            this.setAttribute(\"src\", value);\n        }\n        else {\n            this.removeAttribute(\"src\");\n        }\n    }\n    get loading() {\n        return frameLoadingStyleFromString(this.getAttribute(\"loading\") || \"\");\n    }\n    set loading(value) {\n        if (value) {\n            this.setAttribute(\"loading\", value);\n        }\n        else {\n            this.removeAttribute(\"loading\");\n        }\n    }\n    get disabled() {\n        return this.hasAttribute(\"disabled\");\n    }\n    set disabled(value) {\n        if (value) {\n            this.setAttribute(\"disabled\", \"\");\n        }\n        else {\n            this.removeAttribute(\"disabled\");\n        }\n    }\n    get autoscroll() {\n        return this.hasAttribute(\"autoscroll\");\n    }\n    set autoscroll(value) {\n        if (value) {\n            this.setAttribute(\"autoscroll\", \"\");\n        }\n        else {\n            this.removeAttribute(\"autoscroll\");\n        }\n    }\n    get complete() {\n        return !this.delegate.isLoading;\n    }\n    get isActive() {\n        return this.ownerDocument === document && !this.isPreview;\n    }\n    get isPreview() {\n        var _a, _b;\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}\nfunction frameLoadingStyleFromString(style) {\n    switch (style.toLowerCase()) {\n        case \"lazy\":\n            return FrameLoadingStyle.lazy;\n        default:\n            return FrameLoadingStyle.eager;\n    }\n}\n\nfunction expandURL(locatable) {\n    return new URL(locatable.toString(), document.baseURI);\n}\nfunction getAnchor(url) {\n    let anchorMatch;\n    if (url.hash) {\n        return url.hash.slice(1);\n    }\n    else if ((anchorMatch = url.href.match(/#(.*)$/))) {\n        return anchorMatch[1];\n    }\n}\nfunction getAction(form, submitter) {\n    const action = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formaction\")) || form.getAttribute(\"action\") || form.action;\n    return expandURL(action);\n}\nfunction getExtension(url) {\n    return (getLastPathComponent(url).match(/\\.[^.]*$/) || [])[0] || \"\";\n}\nfunction isHTML(url) {\n    return !!getExtension(url).match(/^(?:|\\.(?:htm|html|xhtml|php))$/);\n}\nfunction isPrefixedBy(baseURL, url) {\n    const prefix = getPrefix(url);\n    return baseURL.href === expandURL(prefix).href || baseURL.href.startsWith(prefix);\n}\nfunction locationIsVisitable(location, rootLocation) {\n    return isPrefixedBy(location, rootLocation) && isHTML(location);\n}\nfunction getRequestURL(url) {\n    const anchor = getAnchor(url);\n    return anchor != null ? url.href.slice(0, -(anchor.length + 1)) : url.href;\n}\nfunction toCacheKey(url) {\n    return getRequestURL(url);\n}\nfunction urlsAreEqual(left, right) {\n    return expandURL(left).href == expandURL(right).href;\n}\nfunction getPathComponents(url) {\n    return url.pathname.split(\"/\").slice(1);\n}\nfunction getLastPathComponent(url) {\n    return getPathComponents(url).slice(-1)[0];\n}\nfunction getPrefix(url) {\n    return addTrailingSlash(url.origin + url.pathname);\n}\nfunction addTrailingSlash(value) {\n    return value.endsWith(\"/\") ? value : value + \"/\";\n}\n\nclass FetchResponse {\n    constructor(response) {\n        this.response = response;\n    }\n    get succeeded() {\n        return this.response.ok;\n    }\n    get failed() {\n        return !this.succeeded;\n    }\n    get clientError() {\n        return this.statusCode >= 400 && this.statusCode <= 499;\n    }\n    get serverError() {\n        return this.statusCode >= 500 && this.statusCode <= 599;\n    }\n    get redirected() {\n        return this.response.redirected;\n    }\n    get location() {\n        return expandURL(this.response.url);\n    }\n    get isHTML() {\n        return this.contentType && this.contentType.match(/^(?:text\\/([^\\s;,]+\\b)?html|application\\/xhtml\\+xml)\\b/);\n    }\n    get statusCode() {\n        return this.response.status;\n    }\n    get contentType() {\n        return this.header(\"Content-Type\");\n    }\n    get responseText() {\n        return this.response.clone().text();\n    }\n    get responseHTML() {\n        if (this.isHTML) {\n            return this.response.clone().text();\n        }\n        else {\n            return Promise.resolve(undefined);\n        }\n    }\n    header(name) {\n        return this.response.headers.get(name);\n    }\n}\n\nfunction activateScriptElement(element) {\n    if (element.getAttribute(\"data-turbo-eval\") == \"false\") {\n        return element;\n    }\n    else {\n        const createdScriptElement = document.createElement(\"script\");\n        const cspNonce = getMetaContent(\"csp-nonce\");\n        if (cspNonce) {\n            createdScriptElement.nonce = cspNonce;\n        }\n        createdScriptElement.textContent = element.textContent;\n        createdScriptElement.async = false;\n        copyElementAttributes(createdScriptElement, element);\n        return createdScriptElement;\n    }\n}\nfunction copyElementAttributes(destinationElement, sourceElement) {\n    for (const { name, value } of sourceElement.attributes) {\n        destinationElement.setAttribute(name, value);\n    }\n}\nfunction createDocumentFragment(html) {\n    const template = document.createElement(\"template\");\n    template.innerHTML = html;\n    return template.content;\n}\nfunction dispatch(eventName, { target, cancelable, detail } = {}) {\n    const event = new CustomEvent(eventName, {\n        cancelable,\n        bubbles: true,\n        composed: true,\n        detail,\n    });\n    if (target && target.isConnected) {\n        target.dispatchEvent(event);\n    }\n    else {\n        document.documentElement.dispatchEvent(event);\n    }\n    return event;\n}\nfunction nextAnimationFrame() {\n    return new Promise((resolve) => requestAnimationFrame(() => resolve()));\n}\nfunction nextEventLoopTick() {\n    return new Promise((resolve) => setTimeout(() => resolve(), 0));\n}\nfunction nextMicrotask() {\n    return Promise.resolve();\n}\nfunction parseHTMLDocument(html = \"\") {\n    return new DOMParser().parseFromString(html, \"text/html\");\n}\nfunction unindent(strings, ...values) {\n    const lines = interpolate(strings, values).replace(/^\\n/, \"\").split(\"\\n\");\n    const match = lines[0].match(/^\\s+/);\n    const indent = match ? match[0].length : 0;\n    return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\nfunction interpolate(strings, values) {\n    return strings.reduce((result, string, i) => {\n        const value = values[i] == undefined ? \"\" : values[i];\n        return result + string + value;\n    }, \"\");\n}\nfunction uuid() {\n    return Array.from({ length: 36 })\n        .map((_, i) => {\n        if (i == 8 || i == 13 || i == 18 || i == 23) {\n            return \"-\";\n        }\n        else if (i == 14) {\n            return \"4\";\n        }\n        else if (i == 19) {\n            return (Math.floor(Math.random() * 4) + 8).toString(16);\n        }\n        else {\n            return Math.floor(Math.random() * 15).toString(16);\n        }\n    })\n        .join(\"\");\n}\nfunction getAttribute(attributeName, ...elements) {\n    for (const value of elements.map((element) => element === null || element === void 0 ? void 0 : element.getAttribute(attributeName))) {\n        if (typeof value == \"string\")\n            return value;\n    }\n    return null;\n}\nfunction hasAttribute(attributeName, ...elements) {\n    return elements.some((element) => element && element.hasAttribute(attributeName));\n}\nfunction markAsBusy(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.setAttribute(\"busy\", \"\");\n        }\n        element.setAttribute(\"aria-busy\", \"true\");\n    }\n}\nfunction clearBusyState(...elements) {\n    for (const element of elements) {\n        if (element.localName == \"turbo-frame\") {\n            element.removeAttribute(\"busy\");\n        }\n        element.removeAttribute(\"aria-busy\");\n    }\n}\nfunction waitForLoad(element, timeoutInMilliseconds = 2000) {\n    return new Promise((resolve) => {\n        const onComplete = () => {\n            element.removeEventListener(\"error\", onComplete);\n            element.removeEventListener(\"load\", onComplete);\n            resolve();\n        };\n        element.addEventListener(\"load\", onComplete, { once: true });\n        element.addEventListener(\"error\", onComplete, { once: true });\n        setTimeout(resolve, timeoutInMilliseconds);\n    });\n}\nfunction getHistoryMethodForAction(action) {\n    switch (action) {\n        case \"replace\":\n            return history.replaceState;\n        case \"advance\":\n        case \"restore\":\n            return history.pushState;\n    }\n}\nfunction isAction(action) {\n    return action == \"advance\" || action == \"replace\" || action == \"restore\";\n}\nfunction getVisitAction(...elements) {\n    const action = getAttribute(\"data-turbo-action\", ...elements);\n    return isAction(action) ? action : null;\n}\nfunction getMetaElement(name) {\n    return document.querySelector(`meta[name=\"${name}\"]`);\n}\nfunction getMetaContent(name) {\n    const element = getMetaElement(name);\n    return element && element.content;\n}\nfunction setMetaContent(name, content) {\n    let element = getMetaElement(name);\n    if (!element) {\n        element = document.createElement(\"meta\");\n        element.setAttribute(\"name\", name);\n        document.head.appendChild(element);\n    }\n    element.setAttribute(\"content\", content);\n    return element;\n}\nfunction findClosestRecursively(element, selector) {\n    var _a;\n    if (element instanceof Element) {\n        return (element.closest(selector) ||\n            findClosestRecursively(element.assignedSlot || ((_a = element.getRootNode()) === null || _a === void 0 ? void 0 : _a.host), selector));\n    }\n}\n\nvar FetchMethod;\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 = {}));\nfunction fetchMethodFromString(method) {\n    switch (method.toLowerCase()) {\n        case \"get\":\n            return FetchMethod.get;\n        case \"post\":\n            return FetchMethod.post;\n        case \"put\":\n            return FetchMethod.put;\n        case \"patch\":\n            return FetchMethod.patch;\n        case \"delete\":\n            return FetchMethod.delete;\n    }\n}\nclass FetchRequest {\n    constructor(delegate, method, location, body = new URLSearchParams(), target = null) {\n        this.abortController = new AbortController();\n        this.resolveRequestPromise = (_value) => { };\n        this.delegate = delegate;\n        this.method = method;\n        this.headers = this.defaultHeaders;\n        this.body = body;\n        this.url = location;\n        this.target = target;\n    }\n    get location() {\n        return this.url;\n    }\n    get params() {\n        return this.url.searchParams;\n    }\n    get entries() {\n        return this.body ? Array.from(this.body.entries()) : [];\n    }\n    cancel() {\n        this.abortController.abort();\n    }\n    async perform() {\n        const { fetchOptions } = this;\n        this.delegate.prepareRequest(this);\n        await this.allowRequestToBeIntercepted(fetchOptions);\n        try {\n            this.delegate.requestStarted(this);\n            const response = await fetch(this.url.href, fetchOptions);\n            return await this.receive(response);\n        }\n        catch (error) {\n            if (error.name !== \"AbortError\") {\n                if (this.willDelegateErrorHandling(error)) {\n                    this.delegate.requestErrored(this, error);\n                }\n                throw error;\n            }\n        }\n        finally {\n            this.delegate.requestFinished(this);\n        }\n    }\n    async receive(response) {\n        const fetchResponse = new FetchResponse(response);\n        const event = dispatch(\"turbo:before-fetch-response\", {\n            cancelable: true,\n            detail: { fetchResponse },\n            target: this.target,\n        });\n        if (event.defaultPrevented) {\n            this.delegate.requestPreventedHandlingResponse(this, fetchResponse);\n        }\n        else if (fetchResponse.succeeded) {\n            this.delegate.requestSucceededWithResponse(this, fetchResponse);\n        }\n        else {\n            this.delegate.requestFailedWithResponse(this, fetchResponse);\n        }\n        return fetchResponse;\n    }\n    get fetchOptions() {\n        var _a;\n        return {\n            method: FetchMethod[this.method].toUpperCase(),\n            credentials: \"same-origin\",\n            headers: this.headers,\n            redirect: \"follow\",\n            body: this.isSafe ? null : this.body,\n            signal: this.abortSignal,\n            referrer: (_a = this.delegate.referrer) === null || _a === void 0 ? void 0 : _a.href,\n        };\n    }\n    get defaultHeaders() {\n        return {\n            Accept: \"text/html, application/xhtml+xml\",\n        };\n    }\n    get isSafe() {\n        return this.method === FetchMethod.get;\n    }\n    get abortSignal() {\n        return this.abortController.signal;\n    }\n    acceptResponseType(mimeType) {\n        this.headers[\"Accept\"] = [mimeType, this.headers[\"Accept\"]].join(\", \");\n    }\n    async allowRequestToBeIntercepted(fetchOptions) {\n        const requestInterception = new Promise((resolve) => (this.resolveRequestPromise = resolve));\n        const event = dispatch(\"turbo:before-fetch-request\", {\n            cancelable: true,\n            detail: {\n                fetchOptions,\n                url: this.url,\n                resume: this.resolveRequestPromise,\n            },\n            target: this.target,\n        });\n        if (event.defaultPrevented)\n            await requestInterception;\n    }\n    willDelegateErrorHandling(error) {\n        const event = dispatch(\"turbo:fetch-request-error\", {\n            target: this.target,\n            cancelable: true,\n            detail: { request: this, error: error },\n        });\n        return !event.defaultPrevented;\n    }\n}\n\nclass AppearanceObserver {\n    constructor(delegate, element) {\n        this.started = false;\n        this.intersect = (entries) => {\n            const lastEntry = entries.slice(-1)[0];\n            if (lastEntry === null || lastEntry === void 0 ? void 0 : lastEntry.isIntersecting) {\n                this.delegate.elementAppearedInViewport(this.element);\n            }\n        };\n        this.delegate = delegate;\n        this.element = element;\n        this.intersectionObserver = new IntersectionObserver(this.intersect);\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.intersectionObserver.observe(this.element);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.intersectionObserver.unobserve(this.element);\n        }\n    }\n}\n\nclass StreamMessage {\n    static wrap(message) {\n        if (typeof message == \"string\") {\n            return new this(createDocumentFragment(message));\n        }\n        else {\n            return message;\n        }\n    }\n    constructor(fragment) {\n        this.fragment = importStreamElements(fragment);\n    }\n}\nStreamMessage.contentType = \"text/vnd.turbo-stream.html\";\nfunction importStreamElements(fragment) {\n    for (const element of fragment.querySelectorAll(\"turbo-stream\")) {\n        const streamElement = document.importNode(element, true);\n        for (const inertScriptElement of streamElement.templateElement.content.querySelectorAll(\"script\")) {\n            inertScriptElement.replaceWith(activateScriptElement(inertScriptElement));\n        }\n        element.replaceWith(streamElement);\n    }\n    return fragment;\n}\n\nvar FormSubmissionState;\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 = {}));\nvar FormEnctype;\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 = {}));\nfunction formEnctypeFromString(encoding) {\n    switch (encoding.toLowerCase()) {\n        case FormEnctype.multipart:\n            return FormEnctype.multipart;\n        case FormEnctype.plain:\n            return FormEnctype.plain;\n        default:\n            return FormEnctype.urlEncoded;\n    }\n}\nclass FormSubmission {\n    static confirmMethod(message, _element, _submitter) {\n        return Promise.resolve(confirm(message));\n    }\n    constructor(delegate, formElement, submitter, mustRedirect = false) {\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.location = expandURL(this.action);\n        if (this.method == FetchMethod.get) {\n            mergeFormDataEntries(this.location, [...this.body.entries()]);\n        }\n        this.fetchRequest = new FetchRequest(this, this.method, this.location, this.body, this.formElement);\n        this.mustRedirect = mustRedirect;\n    }\n    get method() {\n        var _a;\n        const 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    get action() {\n        var _a;\n        const formElementAction = typeof this.formElement.action === \"string\" ? this.formElement.action : null;\n        if ((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"formaction\")) {\n            return this.submitter.getAttribute(\"formaction\") || \"\";\n        }\n        else {\n            return this.formElement.getAttribute(\"action\") || formElementAction || \"\";\n        }\n    }\n    get body() {\n        if (this.enctype == FormEnctype.urlEncoded || this.method == FetchMethod.get) {\n            return new URLSearchParams(this.stringFormData);\n        }\n        else {\n            return this.formData;\n        }\n    }\n    get enctype() {\n        var _a;\n        return formEnctypeFromString(((_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"formenctype\")) || this.formElement.enctype);\n    }\n    get isSafe() {\n        return this.fetchRequest.isSafe;\n    }\n    get stringFormData() {\n        return [...this.formData].reduce((entries, [name, value]) => {\n            return entries.concat(typeof value == \"string\" ? [[name, value]] : []);\n        }, []);\n    }\n    async start() {\n        const { initialized, requesting } = FormSubmissionState;\n        const confirmationMessage = getAttribute(\"data-turbo-confirm\", this.submitter, this.formElement);\n        if (typeof confirmationMessage === \"string\") {\n            const answer = await FormSubmission.confirmMethod(confirmationMessage, this.formElement, this.submitter);\n            if (!answer) {\n                return;\n            }\n        }\n        if (this.state == initialized) {\n            this.state = requesting;\n            return this.fetchRequest.perform();\n        }\n    }\n    stop() {\n        const { stopping, stopped } = FormSubmissionState;\n        if (this.state != stopping && this.state != stopped) {\n            this.state = stopping;\n            this.fetchRequest.cancel();\n            return true;\n        }\n    }\n    prepareRequest(request) {\n        if (!request.isSafe) {\n            const token = getCookieValue(getMetaContent(\"csrf-param\")) || getMetaContent(\"csrf-token\");\n            if (token) {\n                request.headers[\"X-CSRF-Token\"] = token;\n            }\n        }\n        if (this.requestAcceptsTurboStreamResponse(request)) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        var _a;\n        this.state = FormSubmissionState.waiting;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.setAttribute(\"disabled\", \"\");\n        this.setSubmitsWith();\n        dispatch(\"turbo:submit-start\", {\n            target: this.formElement,\n            detail: { formSubmission: this },\n        });\n        this.delegate.formSubmissionStarted(this);\n    }\n    requestPreventedHandlingResponse(request, response) {\n        this.result = { success: response.succeeded, fetchResponse: response };\n    }\n    requestSucceededWithResponse(request, response) {\n        if (response.clientError || response.serverError) {\n            this.delegate.formSubmissionFailedWithResponse(this, response);\n        }\n        else if (this.requestMustRedirect(request) && responseSucceededWithoutRedirect(response)) {\n            const error = new Error(\"Form responses must redirect to another location\");\n            this.delegate.formSubmissionErrored(this, error);\n        }\n        else {\n            this.state = FormSubmissionState.receiving;\n            this.result = { success: true, fetchResponse: response };\n            this.delegate.formSubmissionSucceededWithResponse(this, response);\n        }\n    }\n    requestFailedWithResponse(request, response) {\n        this.result = { success: false, fetchResponse: response };\n        this.delegate.formSubmissionFailedWithResponse(this, response);\n    }\n    requestErrored(request, error) {\n        this.result = { success: false, error };\n        this.delegate.formSubmissionErrored(this, error);\n    }\n    requestFinished(_request) {\n        var _a;\n        this.state = FormSubmissionState.stopped;\n        (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.removeAttribute(\"disabled\");\n        this.resetSubmitterText();\n        dispatch(\"turbo:submit-end\", {\n            target: this.formElement,\n            detail: Object.assign({ formSubmission: this }, this.result),\n        });\n        this.delegate.formSubmissionFinished(this);\n    }\n    setSubmitsWith() {\n        if (!this.submitter || !this.submitsWith)\n            return;\n        if (this.submitter.matches(\"button\")) {\n            this.originalSubmitText = this.submitter.innerHTML;\n            this.submitter.innerHTML = this.submitsWith;\n        }\n        else if (this.submitter.matches(\"input\")) {\n            const input = this.submitter;\n            this.originalSubmitText = input.value;\n            input.value = this.submitsWith;\n        }\n    }\n    resetSubmitterText() {\n        if (!this.submitter || !this.originalSubmitText)\n            return;\n        if (this.submitter.matches(\"button\")) {\n            this.submitter.innerHTML = this.originalSubmitText;\n        }\n        else if (this.submitter.matches(\"input\")) {\n            const input = this.submitter;\n            input.value = this.originalSubmitText;\n        }\n    }\n    requestMustRedirect(request) {\n        return !request.isSafe && this.mustRedirect;\n    }\n    requestAcceptsTurboStreamResponse(request) {\n        return !request.isSafe || hasAttribute(\"data-turbo-stream\", this.submitter, this.formElement);\n    }\n    get submitsWith() {\n        var _a;\n        return (_a = this.submitter) === null || _a === void 0 ? void 0 : _a.getAttribute(\"data-turbo-submits-with\");\n    }\n}\nfunction buildFormData(formElement, submitter) {\n    const formData = new FormData(formElement);\n    const name = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"name\");\n    const value = submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"value\");\n    if (name) {\n        formData.append(name, value || \"\");\n    }\n    return formData;\n}\nfunction getCookieValue(cookieName) {\n    if (cookieName != null) {\n        const cookies = document.cookie ? document.cookie.split(\"; \") : [];\n        const cookie = cookies.find((cookie) => cookie.startsWith(cookieName));\n        if (cookie) {\n            const value = cookie.split(\"=\").slice(1).join(\"=\");\n            return value ? decodeURIComponent(value) : undefined;\n        }\n    }\n}\nfunction responseSucceededWithoutRedirect(response) {\n    return response.statusCode == 200 && !response.redirected;\n}\nfunction mergeFormDataEntries(url, entries) {\n    const searchParams = new URLSearchParams();\n    for (const [name, value] of entries) {\n        if (value instanceof File)\n            continue;\n        searchParams.append(name, value);\n    }\n    url.search = searchParams.toString();\n    return url;\n}\n\nclass Snapshot {\n    constructor(element) {\n        this.element = element;\n    }\n    get activeElement() {\n        return this.element.ownerDocument.activeElement;\n    }\n    get children() {\n        return [...this.element.children];\n    }\n    hasAnchor(anchor) {\n        return this.getElementForAnchor(anchor) != null;\n    }\n    getElementForAnchor(anchor) {\n        return anchor ? this.element.querySelector(`[id='${anchor}'], a[name='${anchor}']`) : null;\n    }\n    get isConnected() {\n        return this.element.isConnected;\n    }\n    get firstAutofocusableElement() {\n        const inertDisabledOrHidden = \"[inert], :disabled, [hidden], details:not([open]), dialog:not([open])\";\n        for (const element of this.element.querySelectorAll(\"[autofocus]\")) {\n            if (element.closest(inertDisabledOrHidden) == null)\n                return element;\n            else\n                continue;\n        }\n        return null;\n    }\n    get permanentElements() {\n        return queryPermanentElementsAll(this.element);\n    }\n    getPermanentElementById(id) {\n        return getPermanentElementById(this.element, id);\n    }\n    getPermanentElementMapForSnapshot(snapshot) {\n        const permanentElementMap = {};\n        for (const currentPermanentElement of this.permanentElements) {\n            const { id } = currentPermanentElement;\n            const newPermanentElement = snapshot.getPermanentElementById(id);\n            if (newPermanentElement) {\n                permanentElementMap[id] = [currentPermanentElement, newPermanentElement];\n            }\n        }\n        return permanentElementMap;\n    }\n}\nfunction getPermanentElementById(node, id) {\n    return node.querySelector(`#${id}[data-turbo-permanent]`);\n}\nfunction queryPermanentElementsAll(node) {\n    return node.querySelectorAll(\"[id][data-turbo-permanent]\");\n}\n\nclass FormSubmitObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.submitCaptured = () => {\n            this.eventTarget.removeEventListener(\"submit\", this.submitBubbled, false);\n            this.eventTarget.addEventListener(\"submit\", this.submitBubbled, false);\n        };\n        this.submitBubbled = ((event) => {\n            if (!event.defaultPrevented) {\n                const form = event.target instanceof HTMLFormElement ? event.target : undefined;\n                const submitter = event.submitter || undefined;\n                if (form &&\n                    submissionDoesNotDismissDialog(form, submitter) &&\n                    submissionDoesNotTargetIFrame(form, submitter) &&\n                    this.delegate.willSubmitForm(form, submitter)) {\n                    event.preventDefault();\n                    event.stopImmediatePropagation();\n                    this.delegate.formSubmitted(form, submitter);\n                }\n            }\n        });\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"submit\", this.submitCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"submit\", this.submitCaptured, true);\n            this.started = false;\n        }\n    }\n}\nfunction submissionDoesNotDismissDialog(form, submitter) {\n    const method = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formmethod\")) || form.getAttribute(\"method\");\n    return method != \"dialog\";\n}\nfunction submissionDoesNotTargetIFrame(form, submitter) {\n    if ((submitter === null || submitter === void 0 ? void 0 : submitter.hasAttribute(\"formtarget\")) || form.hasAttribute(\"target\")) {\n        const target = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"formtarget\")) || form.target;\n        for (const element of document.getElementsByName(target)) {\n            if (element instanceof HTMLIFrameElement)\n                return false;\n        }\n        return true;\n    }\n    else {\n        return true;\n    }\n}\n\nclass View {\n    constructor(delegate, element) {\n        this.resolveRenderPromise = (_value) => { };\n        this.resolveInterceptionPromise = (_value) => { };\n        this.delegate = delegate;\n        this.element = element;\n    }\n    scrollToAnchor(anchor) {\n        const element = this.snapshot.getElementForAnchor(anchor);\n        if (element) {\n            this.scrollToElement(element);\n            this.focusElement(element);\n        }\n        else {\n            this.scrollToPosition({ x: 0, y: 0 });\n        }\n    }\n    scrollToAnchorFromLocation(location) {\n        this.scrollToAnchor(getAnchor(location));\n    }\n    scrollToElement(element) {\n        element.scrollIntoView();\n    }\n    focusElement(element) {\n        if (element instanceof HTMLElement) {\n            if (element.hasAttribute(\"tabindex\")) {\n                element.focus();\n            }\n            else {\n                element.setAttribute(\"tabindex\", \"-1\");\n                element.focus();\n                element.removeAttribute(\"tabindex\");\n            }\n        }\n    }\n    scrollToPosition({ x, y }) {\n        this.scrollRoot.scrollTo(x, y);\n    }\n    scrollToTop() {\n        this.scrollToPosition({ x: 0, y: 0 });\n    }\n    get scrollRoot() {\n        return window;\n    }\n    async render(renderer) {\n        const { isPreview, shouldRender, newSnapshot: snapshot } = renderer;\n        if (shouldRender) {\n            try {\n                this.renderPromise = new Promise((resolve) => (this.resolveRenderPromise = resolve));\n                this.renderer = renderer;\n                await this.prepareToRenderSnapshot(renderer);\n                const renderInterception = new Promise((resolve) => (this.resolveInterceptionPromise = resolve));\n                const options = { resume: this.resolveInterceptionPromise, render: this.renderer.renderElement };\n                const immediateRender = this.delegate.allowsImmediateRender(snapshot, options);\n                if (!immediateRender)\n                    await renderInterception;\n                await this.renderSnapshot(renderer);\n                this.delegate.viewRenderedSnapshot(snapshot, isPreview);\n                this.delegate.preloadOnLoadLinksForView(this.element);\n                this.finishRenderingSnapshot(renderer);\n            }\n            finally {\n                delete this.renderer;\n                this.resolveRenderPromise(undefined);\n                delete this.renderPromise;\n            }\n        }\n        else {\n            this.invalidate(renderer.reloadReason);\n        }\n    }\n    invalidate(reason) {\n        this.delegate.viewInvalidated(reason);\n    }\n    async prepareToRenderSnapshot(renderer) {\n        this.markAsPreview(renderer.isPreview);\n        await renderer.prepareToRender();\n    }\n    markAsPreview(isPreview) {\n        if (isPreview) {\n            this.element.setAttribute(\"data-turbo-preview\", \"\");\n        }\n        else {\n            this.element.removeAttribute(\"data-turbo-preview\");\n        }\n    }\n    async renderSnapshot(renderer) {\n        await renderer.render();\n    }\n    finishRenderingSnapshot(renderer) {\n        renderer.finishRendering();\n    }\n}\n\nclass FrameView extends View {\n    missing() {\n        this.element.innerHTML = `<strong class=\"turbo-frame-error\">Content missing</strong>`;\n    }\n    get snapshot() {\n        return new Snapshot(this.element);\n    }\n}\n\nclass LinkInterceptor {\n    constructor(delegate, element) {\n        this.clickBubbled = (event) => {\n            if (this.respondsToEventTarget(event.target)) {\n                this.clickEvent = event;\n            }\n            else {\n                delete this.clickEvent;\n            }\n        };\n        this.linkClicked = ((event) => {\n            if (this.clickEvent && this.respondsToEventTarget(event.target) && event.target instanceof Element) {\n                if (this.delegate.shouldInterceptLinkClick(event.target, event.detail.url, event.detail.originalEvent)) {\n                    this.clickEvent.preventDefault();\n                    event.preventDefault();\n                    this.delegate.linkClickIntercepted(event.target, event.detail.url, event.detail.originalEvent);\n                }\n            }\n            delete this.clickEvent;\n        });\n        this.willVisit = ((_event) => {\n            delete this.clickEvent;\n        });\n        this.delegate = delegate;\n        this.element = element;\n    }\n    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    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    respondsToEventTarget(target) {\n        const element = target instanceof Element ? target : target instanceof Node ? target.parentElement : null;\n        return element && element.closest(\"turbo-frame, html\") == this.element;\n    }\n}\n\nclass LinkClickObserver {\n    constructor(delegate, eventTarget) {\n        this.started = false;\n        this.clickCaptured = () => {\n            this.eventTarget.removeEventListener(\"click\", this.clickBubbled, false);\n            this.eventTarget.addEventListener(\"click\", this.clickBubbled, false);\n        };\n        this.clickBubbled = (event) => {\n            if (event instanceof MouseEvent && this.clickEventIsSignificant(event)) {\n                const target = (event.composedPath && event.composedPath()[0]) || event.target;\n                const link = this.findLinkFromClickTarget(target);\n                if (link && doesNotTargetIFrame(link)) {\n                    const location = this.getLocationForLink(link);\n                    if (this.delegate.willFollowLinkToLocation(link, location, event)) {\n                        event.preventDefault();\n                        this.delegate.followedLinkToLocation(link, location);\n                    }\n                }\n            }\n        };\n        this.delegate = delegate;\n        this.eventTarget = eventTarget;\n    }\n    start() {\n        if (!this.started) {\n            this.eventTarget.addEventListener(\"click\", this.clickCaptured, true);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.eventTarget.removeEventListener(\"click\", this.clickCaptured, true);\n            this.started = false;\n        }\n    }\n    clickEventIsSignificant(event) {\n        return !((event.target && event.target.isContentEditable) ||\n            event.defaultPrevented ||\n            event.which > 1 ||\n            event.altKey ||\n            event.ctrlKey ||\n            event.metaKey ||\n            event.shiftKey);\n    }\n    findLinkFromClickTarget(target) {\n        return findClosestRecursively(target, \"a[href]:not([target^=_]):not([download])\");\n    }\n    getLocationForLink(link) {\n        return expandURL(link.getAttribute(\"href\") || \"\");\n    }\n}\nfunction doesNotTargetIFrame(anchor) {\n    if (anchor.hasAttribute(\"target\")) {\n        for (const element of document.getElementsByName(anchor.target)) {\n            if (element instanceof HTMLIFrameElement)\n                return false;\n        }\n        return true;\n    }\n    else {\n        return true;\n    }\n}\n\nclass FormLinkClickObserver {\n    constructor(delegate, element) {\n        this.delegate = delegate;\n        this.linkInterceptor = new LinkClickObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n    }\n    willFollowLinkToLocation(link, location, originalEvent) {\n        return (this.delegate.willSubmitFormLinkToLocation(link, location, originalEvent) &&\n            link.hasAttribute(\"data-turbo-method\"));\n    }\n    followedLinkToLocation(link, location) {\n        const form = document.createElement(\"form\");\n        const type = \"hidden\";\n        for (const [name, value] of location.searchParams) {\n            form.append(Object.assign(document.createElement(\"input\"), { type, name, value }));\n        }\n        const action = Object.assign(location, { search: \"\" });\n        form.setAttribute(\"data-turbo\", \"true\");\n        form.setAttribute(\"action\", action.href);\n        form.setAttribute(\"hidden\", \"\");\n        const method = link.getAttribute(\"data-turbo-method\");\n        if (method)\n            form.setAttribute(\"method\", method);\n        const turboFrame = link.getAttribute(\"data-turbo-frame\");\n        if (turboFrame)\n            form.setAttribute(\"data-turbo-frame\", turboFrame);\n        const turboAction = getVisitAction(link);\n        if (turboAction)\n            form.setAttribute(\"data-turbo-action\", turboAction);\n        const turboConfirm = link.getAttribute(\"data-turbo-confirm\");\n        if (turboConfirm)\n            form.setAttribute(\"data-turbo-confirm\", turboConfirm);\n        const turboStream = link.hasAttribute(\"data-turbo-stream\");\n        if (turboStream)\n            form.setAttribute(\"data-turbo-stream\", \"\");\n        this.delegate.submittedFormLinkToLocation(link, location, form);\n        document.body.appendChild(form);\n        form.addEventListener(\"turbo:submit-end\", () => form.remove(), { once: true });\n        requestAnimationFrame(() => form.requestSubmit());\n    }\n}\n\nclass Bardo {\n    static async preservingPermanentElements(delegate, permanentElementMap, callback) {\n        const bardo = new this(delegate, permanentElementMap);\n        bardo.enter();\n        await callback();\n        bardo.leave();\n    }\n    constructor(delegate, permanentElementMap) {\n        this.delegate = delegate;\n        this.permanentElementMap = permanentElementMap;\n    }\n    enter() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement, newPermanentElement] = this.permanentElementMap[id];\n            this.delegate.enteringBardo(currentPermanentElement, newPermanentElement);\n            this.replaceNewPermanentElementWithPlaceholder(newPermanentElement);\n        }\n    }\n    leave() {\n        for (const id in this.permanentElementMap) {\n            const [currentPermanentElement] = this.permanentElementMap[id];\n            this.replaceCurrentPermanentElementWithClone(currentPermanentElement);\n            this.replacePlaceholderWithPermanentElement(currentPermanentElement);\n            this.delegate.leavingBardo(currentPermanentElement);\n        }\n    }\n    replaceNewPermanentElementWithPlaceholder(permanentElement) {\n        const placeholder = createPlaceholderForPermanentElement(permanentElement);\n        permanentElement.replaceWith(placeholder);\n    }\n    replaceCurrentPermanentElementWithClone(permanentElement) {\n        const clone = permanentElement.cloneNode(true);\n        permanentElement.replaceWith(clone);\n    }\n    replacePlaceholderWithPermanentElement(permanentElement) {\n        const placeholder = this.getPlaceholderById(permanentElement.id);\n        placeholder === null || placeholder === void 0 ? void 0 : placeholder.replaceWith(permanentElement);\n    }\n    getPlaceholderById(id) {\n        return this.placeholders.find((element) => element.content == id);\n    }\n    get placeholders() {\n        return [...document.querySelectorAll(\"meta[name=turbo-permanent-placeholder][content]\")];\n    }\n}\nfunction createPlaceholderForPermanentElement(permanentElement) {\n    const element = document.createElement(\"meta\");\n    element.setAttribute(\"name\", \"turbo-permanent-placeholder\");\n    element.setAttribute(\"content\", permanentElement.id);\n    return element;\n}\n\nclass Renderer {\n    constructor(currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        this.activeElement = null;\n        this.currentSnapshot = currentSnapshot;\n        this.newSnapshot = newSnapshot;\n        this.isPreview = isPreview;\n        this.willRender = willRender;\n        this.renderElement = renderElement;\n        this.promise = new Promise((resolve, reject) => (this.resolvingFunctions = { resolve, reject }));\n    }\n    get shouldRender() {\n        return true;\n    }\n    get reloadReason() {\n        return;\n    }\n    prepareToRender() {\n        return;\n    }\n    finishRendering() {\n        if (this.resolvingFunctions) {\n            this.resolvingFunctions.resolve();\n            delete this.resolvingFunctions;\n        }\n    }\n    async preservingPermanentElements(callback) {\n        await Bardo.preservingPermanentElements(this, this.permanentElementMap, callback);\n    }\n    focusFirstAutofocusableElement() {\n        const element = this.connectedSnapshot.firstAutofocusableElement;\n        if (elementIsFocusable(element)) {\n            element.focus();\n        }\n    }\n    enteringBardo(currentPermanentElement) {\n        if (this.activeElement)\n            return;\n        if (currentPermanentElement.contains(this.currentSnapshot.activeElement)) {\n            this.activeElement = this.currentSnapshot.activeElement;\n        }\n    }\n    leavingBardo(currentPermanentElement) {\n        if (currentPermanentElement.contains(this.activeElement) && this.activeElement instanceof HTMLElement) {\n            this.activeElement.focus();\n            this.activeElement = null;\n        }\n    }\n    get connectedSnapshot() {\n        return this.newSnapshot.isConnected ? this.newSnapshot : this.currentSnapshot;\n    }\n    get currentElement() {\n        return this.currentSnapshot.element;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    get permanentElementMap() {\n        return this.currentSnapshot.getPermanentElementMapForSnapshot(this.newSnapshot);\n    }\n}\nfunction elementIsFocusable(element) {\n    return element && typeof element.focus == \"function\";\n}\n\nclass FrameRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        var _a;\n        const destinationRange = document.createRange();\n        destinationRange.selectNodeContents(currentElement);\n        destinationRange.deleteContents();\n        const frameElement = newElement;\n        const sourceRange = (_a = frameElement.ownerDocument) === null || _a === void 0 ? void 0 : _a.createRange();\n        if (sourceRange) {\n            sourceRange.selectNodeContents(frameElement);\n            currentElement.appendChild(sourceRange.extractContents());\n        }\n    }\n    constructor(delegate, currentSnapshot, newSnapshot, renderElement, isPreview, willRender = true) {\n        super(currentSnapshot, newSnapshot, renderElement, isPreview, willRender);\n        this.delegate = delegate;\n    }\n    get shouldRender() {\n        return true;\n    }\n    async render() {\n        await nextAnimationFrame();\n        this.preservingPermanentElements(() => {\n            this.loadFrameElement();\n        });\n        this.scrollFrameIntoView();\n        await nextAnimationFrame();\n        this.focusFirstAutofocusableElement();\n        await nextAnimationFrame();\n        this.activateScriptElements();\n    }\n    loadFrameElement() {\n        this.delegate.willRenderFrame(this.currentElement, this.newElement);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    scrollFrameIntoView() {\n        if (this.currentElement.autoscroll || this.newElement.autoscroll) {\n            const element = this.currentElement.firstElementChild;\n            const block = readScrollLogicalPosition(this.currentElement.getAttribute(\"data-autoscroll-block\"), \"end\");\n            const behavior = readScrollBehavior(this.currentElement.getAttribute(\"data-autoscroll-behavior\"), \"auto\");\n            if (element) {\n                element.scrollIntoView({ block, behavior });\n                return true;\n            }\n        }\n        return false;\n    }\n    activateScriptElements() {\n        for (const inertScriptElement of this.newScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    get newScriptElements() {\n        return this.currentElement.querySelectorAll(\"script\");\n    }\n}\nfunction readScrollLogicalPosition(value, defaultValue) {\n    if (value == \"end\" || value == \"start\" || value == \"center\" || value == \"nearest\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\nfunction readScrollBehavior(value, defaultValue) {\n    if (value == \"auto\" || value == \"smooth\") {\n        return value;\n    }\n    else {\n        return defaultValue;\n    }\n}\n\nclass ProgressBar {\n    static get defaultCSS() {\n        return unindent `\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: 2147483647;\n        transition:\n          width ${ProgressBar.animationDuration}ms ease-out,\n          opacity ${ProgressBar.animationDuration / 2}ms ${ProgressBar.animationDuration / 2}ms ease-in;\n        transform: translate3d(0, 0, 0);\n      }\n    `;\n    }\n    constructor() {\n        this.hiding = false;\n        this.value = 0;\n        this.visible = false;\n        this.trickle = () => {\n            this.setValue(this.value + Math.random() / 100);\n        };\n        this.stylesheetElement = this.createStylesheetElement();\n        this.progressElement = this.createProgressElement();\n        this.installStylesheetElement();\n        this.setValue(0);\n    }\n    show() {\n        if (!this.visible) {\n            this.visible = true;\n            this.installProgressElement();\n            this.startTrickling();\n        }\n    }\n    hide() {\n        if (this.visible && !this.hiding) {\n            this.hiding = true;\n            this.fadeProgressElement(() => {\n                this.uninstallProgressElement();\n                this.stopTrickling();\n                this.visible = false;\n                this.hiding = false;\n            });\n        }\n    }\n    setValue(value) {\n        this.value = value;\n        this.refresh();\n    }\n    installStylesheetElement() {\n        document.head.insertBefore(this.stylesheetElement, document.head.firstChild);\n    }\n    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    fadeProgressElement(callback) {\n        this.progressElement.style.opacity = \"0\";\n        setTimeout(callback, ProgressBar.animationDuration * 1.5);\n    }\n    uninstallProgressElement() {\n        if (this.progressElement.parentNode) {\n            document.documentElement.removeChild(this.progressElement);\n        }\n    }\n    startTrickling() {\n        if (!this.trickleInterval) {\n            this.trickleInterval = window.setInterval(this.trickle, ProgressBar.animationDuration);\n        }\n    }\n    stopTrickling() {\n        window.clearInterval(this.trickleInterval);\n        delete this.trickleInterval;\n    }\n    refresh() {\n        requestAnimationFrame(() => {\n            this.progressElement.style.width = `${10 + this.value * 90}%`;\n        });\n    }\n    createStylesheetElement() {\n        const element = document.createElement(\"style\");\n        element.type = \"text/css\";\n        element.textContent = ProgressBar.defaultCSS;\n        if (this.cspNonce) {\n            element.nonce = this.cspNonce;\n        }\n        return element;\n    }\n    createProgressElement() {\n        const element = document.createElement(\"div\");\n        element.className = \"turbo-progress-bar\";\n        return element;\n    }\n    get cspNonce() {\n        return getMetaContent(\"csp-nonce\");\n    }\n}\nProgressBar.animationDuration = 300;\n\nclass HeadSnapshot extends Snapshot {\n    constructor() {\n        super(...arguments);\n        this.detailsByOuterHTML = this.children\n            .filter((element) => !elementIsNoscript(element))\n            .map((element) => elementWithoutNonce(element))\n            .reduce((result, element) => {\n            const { outerHTML } = element;\n            const details = outerHTML in result\n                ? result[outerHTML]\n                : {\n                    type: elementType(element),\n                    tracked: elementIsTracked(element),\n                    elements: [],\n                };\n            return Object.assign(Object.assign({}, result), { [outerHTML]: Object.assign(Object.assign({}, details), { elements: [...details.elements, element] }) });\n        }, {});\n    }\n    get trackedElementSignature() {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => this.detailsByOuterHTML[outerHTML].tracked)\n            .join(\"\");\n    }\n    getScriptElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"script\", snapshot);\n    }\n    getStylesheetElementsNotInSnapshot(snapshot) {\n        return this.getElementsMatchingTypeNotInSnapshot(\"stylesheet\", snapshot);\n    }\n    getElementsMatchingTypeNotInSnapshot(matchedType, snapshot) {\n        return Object.keys(this.detailsByOuterHTML)\n            .filter((outerHTML) => !(outerHTML in snapshot.detailsByOuterHTML))\n            .map((outerHTML) => this.detailsByOuterHTML[outerHTML])\n            .filter(({ type }) => type == matchedType)\n            .map(({ elements: [element] }) => element);\n    }\n    get provisionalElements() {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { type, tracked, elements } = this.detailsByOuterHTML[outerHTML];\n            if (type == null && !tracked) {\n                return [...result, ...elements];\n            }\n            else if (elements.length > 1) {\n                return [...result, ...elements.slice(1)];\n            }\n            else {\n                return result;\n            }\n        }, []);\n    }\n    getMetaValue(name) {\n        const element = this.findMetaElementByName(name);\n        return element ? element.getAttribute(\"content\") : null;\n    }\n    findMetaElementByName(name) {\n        return Object.keys(this.detailsByOuterHTML).reduce((result, outerHTML) => {\n            const { elements: [element], } = this.detailsByOuterHTML[outerHTML];\n            return elementIsMetaElementWithName(element, name) ? element : result;\n        }, undefined);\n    }\n}\nfunction elementType(element) {\n    if (elementIsScript(element)) {\n        return \"script\";\n    }\n    else if (elementIsStylesheet(element)) {\n        return \"stylesheet\";\n    }\n}\nfunction elementIsTracked(element) {\n    return element.getAttribute(\"data-turbo-track\") == \"reload\";\n}\nfunction elementIsScript(element) {\n    const tagName = element.localName;\n    return tagName == \"script\";\n}\nfunction elementIsNoscript(element) {\n    const tagName = element.localName;\n    return tagName == \"noscript\";\n}\nfunction elementIsStylesheet(element) {\n    const tagName = element.localName;\n    return tagName == \"style\" || (tagName == \"link\" && element.getAttribute(\"rel\") == \"stylesheet\");\n}\nfunction elementIsMetaElementWithName(element, name) {\n    const tagName = element.localName;\n    return tagName == \"meta\" && element.getAttribute(\"name\") == name;\n}\nfunction elementWithoutNonce(element) {\n    if (element.hasAttribute(\"nonce\")) {\n        element.setAttribute(\"nonce\", \"\");\n    }\n    return element;\n}\n\nclass PageSnapshot extends Snapshot {\n    static fromHTMLString(html = \"\") {\n        return this.fromDocument(parseHTMLDocument(html));\n    }\n    static fromElement(element) {\n        return this.fromDocument(element.ownerDocument);\n    }\n    static fromDocument({ head, body }) {\n        return new this(body, new HeadSnapshot(head));\n    }\n    constructor(element, headSnapshot) {\n        super(element);\n        this.headSnapshot = headSnapshot;\n    }\n    clone() {\n        const clonedElement = this.element.cloneNode(true);\n        const selectElements = this.element.querySelectorAll(\"select\");\n        const clonedSelectElements = clonedElement.querySelectorAll(\"select\");\n        for (const [index, source] of selectElements.entries()) {\n            const clone = clonedSelectElements[index];\n            for (const option of clone.selectedOptions)\n                option.selected = false;\n            for (const option of source.selectedOptions)\n                clone.options[option.index].selected = true;\n        }\n        for (const clonedPasswordInput of clonedElement.querySelectorAll('input[type=\"password\"]')) {\n            clonedPasswordInput.value = \"\";\n        }\n        return new PageSnapshot(clonedElement, this.headSnapshot);\n    }\n    get headElement() {\n        return this.headSnapshot.element;\n    }\n    get rootLocation() {\n        var _a;\n        const root = (_a = this.getSetting(\"root\")) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    get cacheControlValue() {\n        return this.getSetting(\"cache-control\");\n    }\n    get isPreviewable() {\n        return this.cacheControlValue != \"no-preview\";\n    }\n    get isCacheable() {\n        return this.cacheControlValue != \"no-cache\";\n    }\n    get isVisitable() {\n        return this.getSetting(\"visit-control\") != \"reload\";\n    }\n    getSetting(name) {\n        return this.headSnapshot.getMetaValue(`turbo-${name}`);\n    }\n}\n\nvar TimingMetric;\n(function (TimingMetric) {\n    TimingMetric[\"visitStart\"] = \"visitStart\";\n    TimingMetric[\"requestStart\"] = \"requestStart\";\n    TimingMetric[\"requestEnd\"] = \"requestEnd\";\n    TimingMetric[\"visitEnd\"] = \"visitEnd\";\n})(TimingMetric || (TimingMetric = {}));\nvar VisitState;\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 = {}));\nconst defaultOptions = {\n    action: \"advance\",\n    historyChanged: false,\n    visitCachedSnapshot: () => { },\n    willRender: true,\n    updateHistory: true,\n    shouldCacheSnapshot: true,\n    acceptsStreamResponse: false,\n};\nvar SystemStatusCode;\n(function (SystemStatusCode) {\n    SystemStatusCode[SystemStatusCode[\"networkFailure\"] = 0] = \"networkFailure\";\n    SystemStatusCode[SystemStatusCode[\"timeoutFailure\"] = -1] = \"timeoutFailure\";\n    SystemStatusCode[SystemStatusCode[\"contentTypeMismatch\"] = -2] = \"contentTypeMismatch\";\n})(SystemStatusCode || (SystemStatusCode = {}));\nclass Visit {\n    constructor(delegate, location, restorationIdentifier, options = {}) {\n        this.identifier = uuid();\n        this.timingMetrics = {};\n        this.followedRedirect = false;\n        this.historyChanged = false;\n        this.scrolled = false;\n        this.shouldCacheSnapshot = true;\n        this.acceptsStreamResponse = false;\n        this.snapshotCached = false;\n        this.state = VisitState.initialized;\n        this.delegate = delegate;\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier || uuid();\n        const { action, historyChanged, referrer, snapshot, snapshotHTML, response, visitCachedSnapshot, willRender, updateHistory, shouldCacheSnapshot, acceptsStreamResponse, } = Object.assign(Object.assign({}, defaultOptions), options);\n        this.action = action;\n        this.historyChanged = historyChanged;\n        this.referrer = referrer;\n        this.snapshot = snapshot;\n        this.snapshotHTML = snapshotHTML;\n        this.response = response;\n        this.isSamePage = this.delegate.locationWithActionIsSamePage(this.location, this.action);\n        this.visitCachedSnapshot = visitCachedSnapshot;\n        this.willRender = willRender;\n        this.updateHistory = updateHistory;\n        this.scrolled = !willRender;\n        this.shouldCacheSnapshot = shouldCacheSnapshot;\n        this.acceptsStreamResponse = acceptsStreamResponse;\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    get restorationData() {\n        return this.history.getRestorationDataForIdentifier(this.restorationIdentifier);\n    }\n    get silent() {\n        return this.isSamePage;\n    }\n    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    cancel() {\n        if (this.state == VisitState.started) {\n            if (this.request) {\n                this.request.cancel();\n            }\n            this.cancelRender();\n            this.state = VisitState.canceled;\n        }\n    }\n    complete() {\n        if (this.state == VisitState.started) {\n            this.recordTimingMetric(TimingMetric.visitEnd);\n            this.state = VisitState.completed;\n            this.followRedirect();\n            if (!this.followedRedirect) {\n                this.adapter.visitCompleted(this);\n                this.delegate.visitCompleted(this);\n            }\n        }\n    }\n    fail() {\n        if (this.state == VisitState.started) {\n            this.state = VisitState.failed;\n            this.adapter.visitFailed(this);\n        }\n    }\n    changeHistory() {\n        var _a;\n        if (!this.historyChanged && this.updateHistory) {\n            const actionForHistory = this.location.href === ((_a = this.referrer) === null || _a === void 0 ? void 0 : _a.href) ? \"replace\" : this.action;\n            const method = getHistoryMethodForAction(actionForHistory);\n            this.history.update(method, this.location, this.restorationIdentifier);\n            this.historyChanged = true;\n        }\n    }\n    issueRequest() {\n        if (this.hasPreloadedResponse()) {\n            this.simulateRequest();\n        }\n        else if (this.shouldIssueRequest() && !this.request) {\n            this.request = new FetchRequest(this, FetchMethod.get, this.location);\n            this.request.perform();\n        }\n    }\n    simulateRequest() {\n        if (this.response) {\n            this.startRequest();\n            this.recordResponse();\n            this.finishRequest();\n        }\n    }\n    startRequest() {\n        this.recordTimingMetric(TimingMetric.requestStart);\n        this.adapter.visitRequestStarted(this);\n    }\n    recordResponse(response = this.response) {\n        this.response = response;\n        if (response) {\n            const { statusCode } = response;\n            if (isSuccessful(statusCode)) {\n                this.adapter.visitRequestCompleted(this);\n            }\n            else {\n                this.adapter.visitRequestFailedWithStatusCode(this, statusCode);\n            }\n        }\n    }\n    finishRequest() {\n        this.recordTimingMetric(TimingMetric.requestEnd);\n        this.adapter.visitRequestFinished(this);\n    }\n    loadResponse() {\n        if (this.response) {\n            const { statusCode, responseHTML } = this.response;\n            this.render(async () => {\n                if (this.shouldCacheSnapshot)\n                    this.cacheSnapshot();\n                if (this.view.renderPromise)\n                    await this.view.renderPromise;\n                if (isSuccessful(statusCode) && responseHTML != null) {\n                    await this.view.renderPage(PageSnapshot.fromHTMLString(responseHTML), false, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    this.complete();\n                }\n                else {\n                    await this.view.renderError(PageSnapshot.fromHTMLString(responseHTML), this);\n                    this.adapter.visitRendered(this);\n                    this.fail();\n                }\n            });\n        }\n    }\n    getCachedSnapshot() {\n        const snapshot = this.view.getCachedSnapshotForLocation(this.location) || this.getPreloadedSnapshot();\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    getPreloadedSnapshot() {\n        if (this.snapshotHTML) {\n            return PageSnapshot.fromHTMLString(this.snapshotHTML);\n        }\n    }\n    hasCachedSnapshot() {\n        return this.getCachedSnapshot() != null;\n    }\n    loadCachedSnapshot() {\n        const snapshot = this.getCachedSnapshot();\n        if (snapshot) {\n            const isPreview = this.shouldIssueRequest();\n            this.render(async () => {\n                this.cacheSnapshot();\n                if (this.isSamePage) {\n                    this.adapter.visitRendered(this);\n                }\n                else {\n                    if (this.view.renderPromise)\n                        await this.view.renderPromise;\n                    await this.view.renderPage(snapshot, isPreview, this.willRender, this);\n                    this.performScroll();\n                    this.adapter.visitRendered(this);\n                    if (!isPreview) {\n                        this.complete();\n                    }\n                }\n            });\n        }\n    }\n    followRedirect() {\n        var _a;\n        if (this.redirectedToLocation && !this.followedRedirect && ((_a = this.response) === null || _a === void 0 ? void 0 : _a.redirected)) {\n            this.adapter.visitProposedToLocation(this.redirectedToLocation, {\n                action: \"replace\",\n                response: this.response,\n                shouldCacheSnapshot: false,\n                willRender: false,\n            });\n            this.followedRedirect = true;\n        }\n    }\n    goToSamePageAnchor() {\n        if (this.isSamePage) {\n            this.render(async () => {\n                this.cacheSnapshot();\n                this.performScroll();\n                this.changeHistory();\n                this.adapter.visitRendered(this);\n            });\n        }\n    }\n    prepareRequest(request) {\n        if (this.acceptsStreamResponse) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted() {\n        this.startRequest();\n    }\n    requestPreventedHandlingResponse(_request, _response) { }\n    async requestSucceededWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.redirectedToLocation = response.redirected ? response.location : undefined;\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    async requestFailedWithResponse(request, response) {\n        const responseHTML = await response.responseHTML;\n        const { redirected, statusCode } = response;\n        if (responseHTML == undefined) {\n            this.recordResponse({\n                statusCode: SystemStatusCode.contentTypeMismatch,\n                redirected,\n            });\n        }\n        else {\n            this.recordResponse({ statusCode: statusCode, responseHTML, redirected });\n        }\n    }\n    requestErrored(_request, _error) {\n        this.recordResponse({\n            statusCode: SystemStatusCode.networkFailure,\n            redirected: false,\n        });\n    }\n    requestFinished() {\n        this.finishRequest();\n    }\n    performScroll() {\n        if (!this.scrolled && !this.view.forceReloaded) {\n            if (this.action == \"restore\") {\n                this.scrollToRestoredPosition() || this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            else {\n                this.scrollToAnchor() || this.view.scrollToTop();\n            }\n            if (this.isSamePage) {\n                this.delegate.visitScrolledToSamePageLocation(this.view.lastRenderedLocation, this.location);\n            }\n            this.scrolled = true;\n        }\n    }\n    scrollToRestoredPosition() {\n        const { scrollPosition } = this.restorationData;\n        if (scrollPosition) {\n            this.view.scrollToPosition(scrollPosition);\n            return true;\n        }\n    }\n    scrollToAnchor() {\n        const anchor = getAnchor(this.location);\n        if (anchor != null) {\n            this.view.scrollToAnchor(anchor);\n            return true;\n        }\n    }\n    recordTimingMetric(metric) {\n        this.timingMetrics[metric] = new Date().getTime();\n    }\n    getTimingMetrics() {\n        return Object.assign({}, this.timingMetrics);\n    }\n    getHistoryMethodForAction(action) {\n        switch (action) {\n            case \"replace\":\n                return history.replaceState;\n            case \"advance\":\n            case \"restore\":\n                return history.pushState;\n        }\n    }\n    hasPreloadedResponse() {\n        return typeof this.response == \"object\";\n    }\n    shouldIssueRequest() {\n        if (this.isSamePage) {\n            return false;\n        }\n        else if (this.action == \"restore\") {\n            return !this.hasCachedSnapshot();\n        }\n        else {\n            return this.willRender;\n        }\n    }\n    cacheSnapshot() {\n        if (!this.snapshotCached) {\n            this.view.cacheSnapshot(this.snapshot).then((snapshot) => snapshot && this.visitCachedSnapshot(snapshot));\n            this.snapshotCached = true;\n        }\n    }\n    async render(callback) {\n        this.cancelRender();\n        await new Promise((resolve) => {\n            this.frame = requestAnimationFrame(() => resolve());\n        });\n        await callback();\n        delete this.frame;\n    }\n    cancelRender() {\n        if (this.frame) {\n            cancelAnimationFrame(this.frame);\n            delete this.frame;\n        }\n    }\n}\nfunction isSuccessful(statusCode) {\n    return statusCode >= 200 && statusCode < 300;\n}\n\nclass BrowserAdapter {\n    constructor(session) {\n        this.progressBar = new ProgressBar();\n        this.showProgressBar = () => {\n            this.progressBar.show();\n        };\n        this.session = session;\n    }\n    visitProposedToLocation(location, options) {\n        this.navigator.startVisit(location, (options === null || options === void 0 ? void 0 : options.restorationIdentifier) || uuid(), options);\n    }\n    visitStarted(visit) {\n        this.location = visit.location;\n        visit.loadCachedSnapshot();\n        visit.issueRequest();\n        visit.goToSamePageAnchor();\n    }\n    visitRequestStarted(visit) {\n        this.progressBar.setValue(0);\n        if (visit.hasCachedSnapshot() || visit.action != \"restore\") {\n            this.showVisitProgressBarAfterDelay();\n        }\n        else {\n            this.showProgressBar();\n        }\n    }\n    visitRequestCompleted(visit) {\n        visit.loadResponse();\n    }\n    visitRequestFailedWithStatusCode(visit, statusCode) {\n        switch (statusCode) {\n            case SystemStatusCode.networkFailure:\n            case SystemStatusCode.timeoutFailure:\n            case SystemStatusCode.contentTypeMismatch:\n                return this.reload({\n                    reason: \"request_failed\",\n                    context: {\n                        statusCode,\n                    },\n                });\n            default:\n                return visit.loadResponse();\n        }\n    }\n    visitRequestFinished(_visit) {\n        this.progressBar.setValue(1);\n        this.hideVisitProgressBar();\n    }\n    visitCompleted(_visit) { }\n    pageInvalidated(reason) {\n        this.reload(reason);\n    }\n    visitFailed(_visit) { }\n    visitRendered(_visit) { }\n    formSubmissionStarted(_formSubmission) {\n        this.progressBar.setValue(0);\n        this.showFormProgressBarAfterDelay();\n    }\n    formSubmissionFinished(_formSubmission) {\n        this.progressBar.setValue(1);\n        this.hideFormProgressBar();\n    }\n    showVisitProgressBarAfterDelay() {\n        this.visitProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n    }\n    hideVisitProgressBar() {\n        this.progressBar.hide();\n        if (this.visitProgressBarTimeout != null) {\n            window.clearTimeout(this.visitProgressBarTimeout);\n            delete this.visitProgressBarTimeout;\n        }\n    }\n    showFormProgressBarAfterDelay() {\n        if (this.formProgressBarTimeout == null) {\n            this.formProgressBarTimeout = window.setTimeout(this.showProgressBar, this.session.progressBarDelay);\n        }\n    }\n    hideFormProgressBar() {\n        this.progressBar.hide();\n        if (this.formProgressBarTimeout != null) {\n            window.clearTimeout(this.formProgressBarTimeout);\n            delete this.formProgressBarTimeout;\n        }\n    }\n    reload(reason) {\n        var _a;\n        dispatch(\"turbo:reload\", { detail: reason });\n        window.location.href = ((_a = this.location) === null || _a === void 0 ? void 0 : _a.toString()) || window.location.href;\n    }\n    get navigator() {\n        return this.session.navigator;\n    }\n}\n\nclass CacheObserver {\n    constructor() {\n        this.selector = \"[data-turbo-temporary]\";\n        this.deprecatedSelector = \"[data-turbo-cache=false]\";\n        this.started = false;\n        this.removeTemporaryElements = ((_event) => {\n            for (const element of this.temporaryElements) {\n                element.remove();\n            }\n        });\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-cache\", this.removeTemporaryElements, false);\n        }\n    }\n    get temporaryElements() {\n        return [...document.querySelectorAll(this.selector), ...this.temporaryElementsWithDeprecation];\n    }\n    get temporaryElementsWithDeprecation() {\n        const elements = document.querySelectorAll(this.deprecatedSelector);\n        if (elements.length) {\n            console.warn(`The ${this.deprecatedSelector} selector is deprecated and will be removed in a future version. Use ${this.selector} instead.`);\n        }\n        return [...elements];\n    }\n}\n\nclass FrameRedirector {\n    constructor(session, element) {\n        this.session = session;\n        this.element = element;\n        this.linkInterceptor = new LinkInterceptor(this, element);\n        this.formSubmitObserver = new FormSubmitObserver(this, element);\n    }\n    start() {\n        this.linkInterceptor.start();\n        this.formSubmitObserver.start();\n    }\n    stop() {\n        this.linkInterceptor.stop();\n        this.formSubmitObserver.stop();\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldRedirect(element);\n    }\n    linkClickIntercepted(element, url, event) {\n        const frame = this.findFrameElement(element);\n        if (frame) {\n            frame.delegate.linkClickIntercepted(element, url, event);\n        }\n    }\n    willSubmitForm(element, submitter) {\n        return (element.closest(\"turbo-frame\") == null &&\n            this.shouldSubmit(element, submitter) &&\n            this.shouldRedirect(element, submitter));\n    }\n    formSubmitted(element, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        if (frame) {\n            frame.delegate.formSubmitted(element, submitter);\n        }\n    }\n    shouldSubmit(form, submitter) {\n        var _a;\n        const action = getAction(form, submitter);\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const rootLocation = expandURL((_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\");\n        return this.shouldRedirect(form, submitter) && locationIsVisitable(action, rootLocation);\n    }\n    shouldRedirect(element, submitter) {\n        const isNavigatable = element instanceof HTMLFormElement\n            ? this.session.submissionIsNavigatable(element, submitter)\n            : this.session.elementIsNavigatable(element);\n        if (isNavigatable) {\n            const frame = this.findFrameElement(element, submitter);\n            return frame ? frame != element.closest(\"turbo-frame\") : false;\n        }\n        else {\n            return false;\n        }\n    }\n    findFrameElement(element, submitter) {\n        const id = (submitter === null || submitter === void 0 ? void 0 : submitter.getAttribute(\"data-turbo-frame\")) || element.getAttribute(\"data-turbo-frame\");\n        if (id && id != \"_top\") {\n            const frame = this.element.querySelector(`#${id}:not([disabled])`);\n            if (frame instanceof FrameElement) {\n                return frame;\n            }\n        }\n    }\n}\n\nclass History {\n    constructor(delegate) {\n        this.restorationIdentifier = uuid();\n        this.restorationData = {};\n        this.started = false;\n        this.pageLoaded = false;\n        this.onPopState = (event) => {\n            if (this.shouldHandlePopState()) {\n                const { turbo } = event.state || {};\n                if (turbo) {\n                    this.location = new URL(window.location.href);\n                    const { restorationIdentifier } = turbo;\n                    this.restorationIdentifier = restorationIdentifier;\n                    this.delegate.historyPoppedToLocationWithRestorationIdentifier(this.location, restorationIdentifier);\n                }\n            }\n        };\n        this.onPageLoad = async (_event) => {\n            await nextMicrotask();\n            this.pageLoaded = true;\n        };\n        this.delegate = delegate;\n    }\n    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    stop() {\n        if (this.started) {\n            removeEventListener(\"popstate\", this.onPopState, false);\n            removeEventListener(\"load\", this.onPageLoad, false);\n            this.started = false;\n        }\n    }\n    push(location, restorationIdentifier) {\n        this.update(history.pushState, location, restorationIdentifier);\n    }\n    replace(location, restorationIdentifier) {\n        this.update(history.replaceState, location, restorationIdentifier);\n    }\n    update(method, location, restorationIdentifier = uuid()) {\n        const state = { turbo: { restorationIdentifier } };\n        method.call(history, state, \"\", location.href);\n        this.location = location;\n        this.restorationIdentifier = restorationIdentifier;\n    }\n    getRestorationDataForIdentifier(restorationIdentifier) {\n        return this.restorationData[restorationIdentifier] || {};\n    }\n    updateRestorationData(additionalData) {\n        const { restorationIdentifier } = this;\n        const restorationData = this.restorationData[restorationIdentifier];\n        this.restorationData[restorationIdentifier] = Object.assign(Object.assign({}, restorationData), additionalData);\n    }\n    assumeControlOfScrollRestoration() {\n        var _a;\n        if (!this.previousScrollRestoration) {\n            this.previousScrollRestoration = (_a = history.scrollRestoration) !== null && _a !== void 0 ? _a : \"auto\";\n            history.scrollRestoration = \"manual\";\n        }\n    }\n    relinquishControlOfScrollRestoration() {\n        if (this.previousScrollRestoration) {\n            history.scrollRestoration = this.previousScrollRestoration;\n            delete this.previousScrollRestoration;\n        }\n    }\n    shouldHandlePopState() {\n        return this.pageIsLoaded();\n    }\n    pageIsLoaded() {\n        return this.pageLoaded || document.readyState == \"complete\";\n    }\n}\n\nclass Navigator {\n    constructor(delegate) {\n        this.delegate = delegate;\n    }\n    proposeVisit(location, options = {}) {\n        if (this.delegate.allowsVisitingLocationWithAction(location, options.action)) {\n            if (locationIsVisitable(location, this.view.snapshot.rootLocation)) {\n                this.delegate.visitProposedToLocation(location, options);\n            }\n            else {\n                window.location.href = location.toString();\n            }\n        }\n    }\n    startVisit(locatable, restorationIdentifier, options = {}) {\n        this.stop();\n        this.currentVisit = new Visit(this, expandURL(locatable), restorationIdentifier, Object.assign({ referrer: this.location }, options));\n        this.currentVisit.start();\n    }\n    submitForm(form, submitter) {\n        this.stop();\n        this.formSubmission = new FormSubmission(this, form, submitter, true);\n        this.formSubmission.start();\n    }\n    stop() {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n            delete this.formSubmission;\n        }\n        if (this.currentVisit) {\n            this.currentVisit.cancel();\n            delete this.currentVisit;\n        }\n    }\n    get adapter() {\n        return this.delegate.adapter;\n    }\n    get view() {\n        return this.delegate.view;\n    }\n    get history() {\n        return this.delegate.history;\n    }\n    formSubmissionStarted(formSubmission) {\n        if (typeof this.adapter.formSubmissionStarted === \"function\") {\n            this.adapter.formSubmissionStarted(formSubmission);\n        }\n    }\n    async formSubmissionSucceededWithResponse(formSubmission, fetchResponse) {\n        if (formSubmission == this.formSubmission) {\n            const responseHTML = await fetchResponse.responseHTML;\n            if (responseHTML) {\n                const shouldCacheSnapshot = formSubmission.isSafe;\n                if (!shouldCacheSnapshot) {\n                    this.view.clearSnapshotCache();\n                }\n                const { statusCode, redirected } = fetchResponse;\n                const action = this.getActionForFormSubmission(formSubmission);\n                const visitOptions = {\n                    action,\n                    shouldCacheSnapshot,\n                    response: { statusCode, responseHTML, redirected },\n                };\n                this.proposeVisit(fetchResponse.location, visitOptions);\n            }\n        }\n    }\n    async formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        const responseHTML = await fetchResponse.responseHTML;\n        if (responseHTML) {\n            const snapshot = PageSnapshot.fromHTMLString(responseHTML);\n            if (fetchResponse.serverError) {\n                await this.view.renderError(snapshot, this.currentVisit);\n            }\n            else {\n                await this.view.renderPage(snapshot, false, true, this.currentVisit);\n            }\n            this.view.scrollToTop();\n            this.view.clearSnapshotCache();\n        }\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished(formSubmission) {\n        if (typeof this.adapter.formSubmissionFinished === \"function\") {\n            this.adapter.formSubmissionFinished(formSubmission);\n        }\n    }\n    visitStarted(visit) {\n        this.delegate.visitStarted(visit);\n    }\n    visitCompleted(visit) {\n        this.delegate.visitCompleted(visit);\n    }\n    locationWithActionIsSamePage(location, action) {\n        const anchor = getAnchor(location);\n        const currentAnchor = getAnchor(this.view.lastRenderedLocation);\n        const isRestorationToTop = action === \"restore\" && typeof anchor === \"undefined\";\n        return (action !== \"replace\" &&\n            getRequestURL(location) === getRequestURL(this.view.lastRenderedLocation) &&\n            (isRestorationToTop || (anchor != null && anchor !== currentAnchor)));\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.delegate.visitScrolledToSamePageLocation(oldURL, newURL);\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    getActionForFormSubmission({ submitter, formElement }) {\n        return getVisitAction(submitter, formElement) || \"advance\";\n    }\n}\n\nvar PageStage;\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 = {}));\nclass PageObserver {\n    constructor(delegate) {\n        this.stage = PageStage.initial;\n        this.started = false;\n        this.interpretReadyState = () => {\n            const { readyState } = this;\n            if (readyState == \"interactive\") {\n                this.pageIsInteractive();\n            }\n            else if (readyState == \"complete\") {\n                this.pageIsComplete();\n            }\n        };\n        this.pageWillUnload = () => {\n            this.delegate.pageWillUnload();\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            if (this.stage == PageStage.initial) {\n                this.stage = PageStage.loading;\n            }\n            document.addEventListener(\"readystatechange\", this.interpretReadyState, false);\n            addEventListener(\"pagehide\", this.pageWillUnload, false);\n            this.started = true;\n        }\n    }\n    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    pageIsInteractive() {\n        if (this.stage == PageStage.loading) {\n            this.stage = PageStage.interactive;\n            this.delegate.pageBecameInteractive();\n        }\n    }\n    pageIsComplete() {\n        this.pageIsInteractive();\n        if (this.stage == PageStage.interactive) {\n            this.stage = PageStage.complete;\n            this.delegate.pageLoaded();\n        }\n    }\n    get readyState() {\n        return document.readyState;\n    }\n}\n\nclass ScrollObserver {\n    constructor(delegate) {\n        this.started = false;\n        this.onScroll = () => {\n            this.updatePosition({ x: window.pageXOffset, y: window.pageYOffset });\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            addEventListener(\"scroll\", this.onScroll, false);\n            this.onScroll();\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            removeEventListener(\"scroll\", this.onScroll, false);\n            this.started = false;\n        }\n    }\n    updatePosition(position) {\n        this.delegate.scrollPositionChanged(position);\n    }\n}\n\nclass StreamMessageRenderer {\n    render({ fragment }) {\n        Bardo.preservingPermanentElements(this, getPermanentElementMapForFragment(fragment), () => document.documentElement.appendChild(fragment));\n    }\n    enteringBardo(currentPermanentElement, newPermanentElement) {\n        newPermanentElement.replaceWith(currentPermanentElement.cloneNode(true));\n    }\n    leavingBardo() { }\n}\nfunction getPermanentElementMapForFragment(fragment) {\n    const permanentElementsInDocument = queryPermanentElementsAll(document.documentElement);\n    const permanentElementMap = {};\n    for (const permanentElementInDocument of permanentElementsInDocument) {\n        const { id } = permanentElementInDocument;\n        for (const streamElement of fragment.querySelectorAll(\"turbo-stream\")) {\n            const elementInStream = getPermanentElementById(streamElement.templateElement.content, id);\n            if (elementInStream) {\n                permanentElementMap[id] = [permanentElementInDocument, elementInStream];\n            }\n        }\n    }\n    return permanentElementMap;\n}\n\nclass StreamObserver {\n    constructor(delegate) {\n        this.sources = new Set();\n        this.started = false;\n        this.inspectFetchResponse = ((event) => {\n            const response = fetchResponseFromEvent(event);\n            if (response && fetchResponseIsStream(response)) {\n                event.preventDefault();\n                this.receiveMessageResponse(response);\n            }\n        });\n        this.receiveMessageEvent = (event) => {\n            if (this.started && typeof event.data == \"string\") {\n                this.receiveMessageHTML(event.data);\n            }\n        };\n        this.delegate = delegate;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            addEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            removeEventListener(\"turbo:before-fetch-response\", this.inspectFetchResponse, false);\n        }\n    }\n    connectStreamSource(source) {\n        if (!this.streamSourceIsConnected(source)) {\n            this.sources.add(source);\n            source.addEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    disconnectStreamSource(source) {\n        if (this.streamSourceIsConnected(source)) {\n            this.sources.delete(source);\n            source.removeEventListener(\"message\", this.receiveMessageEvent, false);\n        }\n    }\n    streamSourceIsConnected(source) {\n        return this.sources.has(source);\n    }\n    async receiveMessageResponse(response) {\n        const html = await response.responseHTML;\n        if (html) {\n            this.receiveMessageHTML(html);\n        }\n    }\n    receiveMessageHTML(html) {\n        this.delegate.receivedMessageFromStream(StreamMessage.wrap(html));\n    }\n}\nfunction fetchResponseFromEvent(event) {\n    var _a;\n    const fetchResponse = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.fetchResponse;\n    if (fetchResponse instanceof FetchResponse) {\n        return fetchResponse;\n    }\n}\nfunction fetchResponseIsStream(response) {\n    var _a;\n    const contentType = (_a = response.contentType) !== null && _a !== void 0 ? _a : \"\";\n    return contentType.startsWith(StreamMessage.contentType);\n}\n\nclass ErrorRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        const { documentElement, body } = document;\n        documentElement.replaceChild(newElement, body);\n    }\n    async render() {\n        this.replaceHeadAndBody();\n        this.activateScriptElements();\n    }\n    replaceHeadAndBody() {\n        const { documentElement, head } = document;\n        documentElement.replaceChild(this.newHead, head);\n        this.renderElement(this.currentElement, this.newElement);\n    }\n    activateScriptElements() {\n        for (const replaceableElement of this.scriptElements) {\n            const parentNode = replaceableElement.parentNode;\n            if (parentNode) {\n                const element = activateScriptElement(replaceableElement);\n                parentNode.replaceChild(element, replaceableElement);\n            }\n        }\n    }\n    get newHead() {\n        return this.newSnapshot.headSnapshot.element;\n    }\n    get scriptElements() {\n        return document.documentElement.querySelectorAll(\"script\");\n    }\n}\n\nclass PageRenderer extends Renderer {\n    static renderElement(currentElement, newElement) {\n        if (document.body && newElement instanceof HTMLBodyElement) {\n            document.body.replaceWith(newElement);\n        }\n        else {\n            document.documentElement.appendChild(newElement);\n        }\n    }\n    get shouldRender() {\n        return this.newSnapshot.isVisitable && this.trackedElementsAreIdentical;\n    }\n    get reloadReason() {\n        if (!this.newSnapshot.isVisitable) {\n            return {\n                reason: \"turbo_visit_control_is_reload\",\n            };\n        }\n        if (!this.trackedElementsAreIdentical) {\n            return {\n                reason: \"tracked_element_mismatch\",\n            };\n        }\n    }\n    async prepareToRender() {\n        await this.mergeHead();\n    }\n    async render() {\n        if (this.willRender) {\n            await this.replaceBody();\n        }\n    }\n    finishRendering() {\n        super.finishRendering();\n        if (!this.isPreview) {\n            this.focusFirstAutofocusableElement();\n        }\n    }\n    get currentHeadSnapshot() {\n        return this.currentSnapshot.headSnapshot;\n    }\n    get newHeadSnapshot() {\n        return this.newSnapshot.headSnapshot;\n    }\n    get newElement() {\n        return this.newSnapshot.element;\n    }\n    async mergeHead() {\n        const mergedHeadElements = this.mergeProvisionalElements();\n        const newStylesheetElements = this.copyNewHeadStylesheetElements();\n        this.copyNewHeadScriptElements();\n        await mergedHeadElements;\n        await newStylesheetElements;\n    }\n    async replaceBody() {\n        await this.preservingPermanentElements(async () => {\n            this.activateNewBody();\n            await this.assignNewBody();\n        });\n    }\n    get trackedElementsAreIdentical() {\n        return this.currentHeadSnapshot.trackedElementSignature == this.newHeadSnapshot.trackedElementSignature;\n    }\n    async copyNewHeadStylesheetElements() {\n        const loadingElements = [];\n        for (const element of this.newHeadStylesheetElements) {\n            loadingElements.push(waitForLoad(element));\n            document.head.appendChild(element);\n        }\n        await Promise.all(loadingElements);\n    }\n    copyNewHeadScriptElements() {\n        for (const element of this.newHeadScriptElements) {\n            document.head.appendChild(activateScriptElement(element));\n        }\n    }\n    async mergeProvisionalElements() {\n        const newHeadElements = [...this.newHeadProvisionalElements];\n        for (const element of this.currentHeadProvisionalElements) {\n            if (!this.isCurrentElementInElementList(element, newHeadElements)) {\n                document.head.removeChild(element);\n            }\n        }\n        for (const element of newHeadElements) {\n            document.head.appendChild(element);\n        }\n    }\n    isCurrentElementInElementList(element, elementList) {\n        for (const [index, newElement] of elementList.entries()) {\n            if (element.tagName == \"TITLE\") {\n                if (newElement.tagName != \"TITLE\") {\n                    continue;\n                }\n                if (element.innerHTML == newElement.innerHTML) {\n                    elementList.splice(index, 1);\n                    return true;\n                }\n            }\n            if (newElement.isEqualNode(element)) {\n                elementList.splice(index, 1);\n                return true;\n            }\n        }\n        return false;\n    }\n    removeCurrentHeadProvisionalElements() {\n        for (const element of this.currentHeadProvisionalElements) {\n            document.head.removeChild(element);\n        }\n    }\n    copyNewHeadProvisionalElements() {\n        for (const element of this.newHeadProvisionalElements) {\n            document.head.appendChild(element);\n        }\n    }\n    activateNewBody() {\n        document.adoptNode(this.newElement);\n        this.activateNewBodyScriptElements();\n    }\n    activateNewBodyScriptElements() {\n        for (const inertScriptElement of this.newBodyScriptElements) {\n            const activatedScriptElement = activateScriptElement(inertScriptElement);\n            inertScriptElement.replaceWith(activatedScriptElement);\n        }\n    }\n    async assignNewBody() {\n        await this.renderElement(this.currentElement, this.newElement);\n    }\n    get newHeadStylesheetElements() {\n        return this.newHeadSnapshot.getStylesheetElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get newHeadScriptElements() {\n        return this.newHeadSnapshot.getScriptElementsNotInSnapshot(this.currentHeadSnapshot);\n    }\n    get currentHeadProvisionalElements() {\n        return this.currentHeadSnapshot.provisionalElements;\n    }\n    get newHeadProvisionalElements() {\n        return this.newHeadSnapshot.provisionalElements;\n    }\n    get newBodyScriptElements() {\n        return this.newElement.querySelectorAll(\"script\");\n    }\n}\n\nclass SnapshotCache {\n    constructor(size) {\n        this.keys = [];\n        this.snapshots = {};\n        this.size = size;\n    }\n    has(location) {\n        return toCacheKey(location) in this.snapshots;\n    }\n    get(location) {\n        if (this.has(location)) {\n            const snapshot = this.read(location);\n            this.touch(location);\n            return snapshot;\n        }\n    }\n    put(location, snapshot) {\n        this.write(location, snapshot);\n        this.touch(location);\n        return snapshot;\n    }\n    clear() {\n        this.snapshots = {};\n    }\n    read(location) {\n        return this.snapshots[toCacheKey(location)];\n    }\n    write(location, snapshot) {\n        this.snapshots[toCacheKey(location)] = snapshot;\n    }\n    touch(location) {\n        const key = toCacheKey(location);\n        const index = this.keys.indexOf(key);\n        if (index > -1)\n            this.keys.splice(index, 1);\n        this.keys.unshift(key);\n        this.trim();\n    }\n    trim() {\n        for (const key of this.keys.splice(this.size)) {\n            delete this.snapshots[key];\n        }\n    }\n}\n\nclass PageView extends View {\n    constructor() {\n        super(...arguments);\n        this.snapshotCache = new SnapshotCache(10);\n        this.lastRenderedLocation = new URL(location.href);\n        this.forceReloaded = false;\n    }\n    renderPage(snapshot, isPreview = false, willRender = true, visit) {\n        const renderer = new PageRenderer(this.snapshot, snapshot, PageRenderer.renderElement, isPreview, willRender);\n        if (!renderer.shouldRender) {\n            this.forceReloaded = true;\n        }\n        else {\n            visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        }\n        return this.render(renderer);\n    }\n    renderError(snapshot, visit) {\n        visit === null || visit === void 0 ? void 0 : visit.changeHistory();\n        const renderer = new ErrorRenderer(this.snapshot, snapshot, ErrorRenderer.renderElement, false);\n        return this.render(renderer);\n    }\n    clearSnapshotCache() {\n        this.snapshotCache.clear();\n    }\n    async cacheSnapshot(snapshot = this.snapshot) {\n        if (snapshot.isCacheable) {\n            this.delegate.viewWillCacheSnapshot();\n            const { lastRenderedLocation: location } = this;\n            await nextEventLoopTick();\n            const cachedSnapshot = snapshot.clone();\n            this.snapshotCache.put(location, cachedSnapshot);\n            return cachedSnapshot;\n        }\n    }\n    getCachedSnapshotForLocation(location) {\n        return this.snapshotCache.get(location);\n    }\n    get snapshot() {\n        return PageSnapshot.fromElement(this.element);\n    }\n}\n\nclass Preloader {\n    constructor(delegate) {\n        this.selector = \"a[data-turbo-preload]\";\n        this.delegate = delegate;\n    }\n    get snapshotCache() {\n        return this.delegate.navigator.view.snapshotCache;\n    }\n    start() {\n        if (document.readyState === \"loading\") {\n            return document.addEventListener(\"DOMContentLoaded\", () => {\n                this.preloadOnLoadLinksForView(document.body);\n            });\n        }\n        else {\n            this.preloadOnLoadLinksForView(document.body);\n        }\n    }\n    preloadOnLoadLinksForView(element) {\n        for (const link of element.querySelectorAll(this.selector)) {\n            this.preloadURL(link);\n        }\n    }\n    async preloadURL(link) {\n        const location = new URL(link.href);\n        if (this.snapshotCache.has(location)) {\n            return;\n        }\n        try {\n            const response = await fetch(location.toString(), { headers: { \"VND.PREFETCH\": \"true\", Accept: \"text/html\" } });\n            const responseText = await response.text();\n            const snapshot = PageSnapshot.fromHTMLString(responseText);\n            this.snapshotCache.put(location, snapshot);\n        }\n        catch (_) {\n        }\n    }\n}\n\nclass Session {\n    constructor() {\n        this.navigator = new Navigator(this);\n        this.history = new History(this);\n        this.preloader = new Preloader(this);\n        this.view = new PageView(this, document.documentElement);\n        this.adapter = new BrowserAdapter(this);\n        this.pageObserver = new PageObserver(this);\n        this.cacheObserver = new CacheObserver();\n        this.linkClickObserver = new LinkClickObserver(this, window);\n        this.formSubmitObserver = new FormSubmitObserver(this, document);\n        this.scrollObserver = new ScrollObserver(this);\n        this.streamObserver = new StreamObserver(this);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, document.documentElement);\n        this.frameRedirector = new FrameRedirector(this, document.documentElement);\n        this.streamMessageRenderer = new StreamMessageRenderer();\n        this.drive = true;\n        this.enabled = true;\n        this.progressBarDelay = 500;\n        this.started = false;\n        this.formMode = \"on\";\n    }\n    start() {\n        if (!this.started) {\n            this.pageObserver.start();\n            this.cacheObserver.start();\n            this.formLinkClickObserver.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.preloader.start();\n            this.started = true;\n            this.enabled = true;\n        }\n    }\n    disable() {\n        this.enabled = false;\n    }\n    stop() {\n        if (this.started) {\n            this.pageObserver.stop();\n            this.cacheObserver.stop();\n            this.formLinkClickObserver.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    registerAdapter(adapter) {\n        this.adapter = adapter;\n    }\n    visit(location, options = {}) {\n        const frameElement = options.frame ? document.getElementById(options.frame) : null;\n        if (frameElement instanceof FrameElement) {\n            frameElement.src = location.toString();\n            frameElement.loaded;\n        }\n        else {\n            this.navigator.proposeVisit(expandURL(location), options);\n        }\n    }\n    connectStreamSource(source) {\n        this.streamObserver.connectStreamSource(source);\n    }\n    disconnectStreamSource(source) {\n        this.streamObserver.disconnectStreamSource(source);\n    }\n    renderStreamMessage(message) {\n        this.streamMessageRenderer.render(StreamMessage.wrap(message));\n    }\n    clearCache() {\n        this.view.clearSnapshotCache();\n    }\n    setProgressBarDelay(delay) {\n        this.progressBarDelay = delay;\n    }\n    setFormMode(mode) {\n        this.formMode = mode;\n    }\n    get location() {\n        return this.history.location;\n    }\n    get restorationIdentifier() {\n        return this.history.restorationIdentifier;\n    }\n    historyPoppedToLocationWithRestorationIdentifier(location, restorationIdentifier) {\n        if (this.enabled) {\n            this.navigator.startVisit(location, restorationIdentifier, {\n                action: \"restore\",\n                historyChanged: true,\n            });\n        }\n        else {\n            this.adapter.pageInvalidated({\n                reason: \"turbo_disabled\",\n            });\n        }\n    }\n    scrollPositionChanged(position) {\n        this.history.updateRestorationData({ scrollPosition: position });\n    }\n    willSubmitFormLinkToLocation(link, location) {\n        return this.elementIsNavigatable(link) && locationIsVisitable(location, this.snapshot.rootLocation);\n    }\n    submittedFormLinkToLocation() { }\n    willFollowLinkToLocation(link, location, event) {\n        return (this.elementIsNavigatable(link) &&\n            locationIsVisitable(location, this.snapshot.rootLocation) &&\n            this.applicationAllowsFollowingLinkToLocation(link, location, event));\n    }\n    followedLinkToLocation(link, location) {\n        const action = this.getActionForLink(link);\n        const acceptsStreamResponse = link.hasAttribute(\"data-turbo-stream\");\n        this.visit(location.href, { action, acceptsStreamResponse });\n    }\n    allowsVisitingLocationWithAction(location, action) {\n        return this.locationWithActionIsSamePage(location, action) || this.applicationAllowsVisitingLocation(location);\n    }\n    visitProposedToLocation(location, options) {\n        extendURLWithDeprecatedProperties(location);\n        this.adapter.visitProposedToLocation(location, options);\n    }\n    visitStarted(visit) {\n        if (!visit.acceptsStreamResponse) {\n            markAsBusy(document.documentElement);\n        }\n        extendURLWithDeprecatedProperties(visit.location);\n        if (!visit.silent) {\n            this.notifyApplicationAfterVisitingLocation(visit.location, visit.action);\n        }\n    }\n    visitCompleted(visit) {\n        clearBusyState(document.documentElement);\n        this.notifyApplicationAfterPageLoad(visit.getTimingMetrics());\n    }\n    locationWithActionIsSamePage(location, action) {\n        return this.navigator.locationWithActionIsSamePage(location, action);\n    }\n    visitScrolledToSamePageLocation(oldURL, newURL) {\n        this.notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL);\n    }\n    willSubmitForm(form, submitter) {\n        const action = getAction(form, submitter);\n        return (this.submissionIsNavigatable(form, submitter) &&\n            locationIsVisitable(expandURL(action), this.snapshot.rootLocation));\n    }\n    formSubmitted(form, submitter) {\n        this.navigator.submitForm(form, submitter);\n    }\n    pageBecameInteractive() {\n        this.view.lastRenderedLocation = this.location;\n        this.notifyApplicationAfterPageLoad();\n    }\n    pageLoaded() {\n        this.history.assumeControlOfScrollRestoration();\n    }\n    pageWillUnload() {\n        this.history.relinquishControlOfScrollRestoration();\n    }\n    receivedMessageFromStream(message) {\n        this.renderStreamMessage(message);\n    }\n    viewWillCacheSnapshot() {\n        var _a;\n        if (!((_a = this.navigator.currentVisit) === null || _a === void 0 ? void 0 : _a.silent)) {\n            this.notifyApplicationBeforeCachingSnapshot();\n        }\n    }\n    allowsImmediateRender({ element }, options) {\n        const event = this.notifyApplicationBeforeRender(element, options);\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) {\n        this.view.lastRenderedLocation = this.history.location;\n        this.notifyApplicationAfterRender();\n    }\n    preloadOnLoadLinksForView(element) {\n        this.preloader.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated(reason) {\n        this.adapter.pageInvalidated(reason);\n    }\n    frameLoaded(frame) {\n        this.notifyApplicationAfterFrameLoad(frame);\n    }\n    frameRendered(fetchResponse, frame) {\n        this.notifyApplicationAfterFrameRender(fetchResponse, frame);\n    }\n    applicationAllowsFollowingLinkToLocation(link, location, ev) {\n        const event = this.notifyApplicationAfterClickingLinkToLocation(link, location, ev);\n        return !event.defaultPrevented;\n    }\n    applicationAllowsVisitingLocation(location) {\n        const event = this.notifyApplicationBeforeVisitingLocation(location);\n        return !event.defaultPrevented;\n    }\n    notifyApplicationAfterClickingLinkToLocation(link, location, event) {\n        return dispatch(\"turbo:click\", {\n            target: link,\n            detail: { url: location.href, originalEvent: event },\n            cancelable: true,\n        });\n    }\n    notifyApplicationBeforeVisitingLocation(location) {\n        return dispatch(\"turbo:before-visit\", {\n            detail: { url: location.href },\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterVisitingLocation(location, action) {\n        return dispatch(\"turbo:visit\", { detail: { url: location.href, action } });\n    }\n    notifyApplicationBeforeCachingSnapshot() {\n        return dispatch(\"turbo:before-cache\");\n    }\n    notifyApplicationBeforeRender(newBody, options) {\n        return dispatch(\"turbo:before-render\", {\n            detail: Object.assign({ newBody }, options),\n            cancelable: true,\n        });\n    }\n    notifyApplicationAfterRender() {\n        return dispatch(\"turbo:render\");\n    }\n    notifyApplicationAfterPageLoad(timing = {}) {\n        return dispatch(\"turbo:load\", {\n            detail: { url: this.location.href, timing },\n        });\n    }\n    notifyApplicationAfterVisitingSamePageLocation(oldURL, newURL) {\n        dispatchEvent(new HashChangeEvent(\"hashchange\", {\n            oldURL: oldURL.toString(),\n            newURL: newURL.toString(),\n        }));\n    }\n    notifyApplicationAfterFrameLoad(frame) {\n        return dispatch(\"turbo:frame-load\", { target: frame });\n    }\n    notifyApplicationAfterFrameRender(fetchResponse, frame) {\n        return dispatch(\"turbo:frame-render\", {\n            detail: { fetchResponse },\n            target: frame,\n            cancelable: true,\n        });\n    }\n    submissionIsNavigatable(form, submitter) {\n        if (this.formMode == \"off\") {\n            return false;\n        }\n        else {\n            const submitterIsNavigatable = submitter ? this.elementIsNavigatable(submitter) : true;\n            if (this.formMode == \"optin\") {\n                return submitterIsNavigatable && form.closest('[data-turbo=\"true\"]') != null;\n            }\n            else {\n                return submitterIsNavigatable && this.elementIsNavigatable(form);\n            }\n        }\n    }\n    elementIsNavigatable(element) {\n        const container = findClosestRecursively(element, \"[data-turbo]\");\n        const withinFrame = findClosestRecursively(element, \"turbo-frame\");\n        if (this.drive || withinFrame) {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") != \"false\";\n            }\n            else {\n                return true;\n            }\n        }\n        else {\n            if (container) {\n                return container.getAttribute(\"data-turbo\") == \"true\";\n            }\n            else {\n                return false;\n            }\n        }\n    }\n    getActionForLink(link) {\n        return getVisitAction(link) || \"advance\";\n    }\n    get snapshot() {\n        return this.view.snapshot;\n    }\n}\nfunction extendURLWithDeprecatedProperties(url) {\n    Object.defineProperties(url, deprecatedLocationPropertyDescriptors);\n}\nconst deprecatedLocationPropertyDescriptors = {\n    absoluteURL: {\n        get() {\n            return this.toString();\n        },\n    },\n};\n\nclass Cache {\n    constructor(session) {\n        this.session = session;\n    }\n    clear() {\n        this.session.clearCache();\n    }\n    resetCacheControl() {\n        this.setCacheControl(\"\");\n    }\n    exemptPageFromCache() {\n        this.setCacheControl(\"no-cache\");\n    }\n    exemptPageFromPreview() {\n        this.setCacheControl(\"no-preview\");\n    }\n    setCacheControl(value) {\n        setMetaContent(\"turbo-cache-control\", value);\n    }\n}\n\nconst StreamActions = {\n    after() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e.nextSibling); });\n    },\n    append() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.append(this.templateContent));\n    },\n    before() {\n        this.targetElements.forEach((e) => { var _a; return (_a = e.parentElement) === null || _a === void 0 ? void 0 : _a.insertBefore(this.templateContent, e); });\n    },\n    prepend() {\n        this.removeDuplicateTargetChildren();\n        this.targetElements.forEach((e) => e.prepend(this.templateContent));\n    },\n    remove() {\n        this.targetElements.forEach((e) => e.remove());\n    },\n    replace() {\n        this.targetElements.forEach((e) => e.replaceWith(this.templateContent));\n    },\n    update() {\n        this.targetElements.forEach((targetElement) => {\n            targetElement.innerHTML = \"\";\n            targetElement.append(this.templateContent);\n        });\n    },\n};\n\nconst session = new Session();\nconst cache = new Cache(session);\nconst { navigator: navigator$1 } = session;\nfunction start() {\n    session.start();\n}\nfunction registerAdapter(adapter) {\n    session.registerAdapter(adapter);\n}\nfunction visit(location, options) {\n    session.visit(location, options);\n}\nfunction connectStreamSource(source) {\n    session.connectStreamSource(source);\n}\nfunction disconnectStreamSource(source) {\n    session.disconnectStreamSource(source);\n}\nfunction renderStreamMessage(message) {\n    session.renderStreamMessage(message);\n}\nfunction clearCache() {\n    console.warn(\"Please replace `Turbo.clearCache()` with `Turbo.cache.clear()`. The top-level function is deprecated and will be removed in a future version of Turbo.`\");\n    session.clearCache();\n}\nfunction setProgressBarDelay(delay) {\n    session.setProgressBarDelay(delay);\n}\nfunction setConfirmMethod(confirmMethod) {\n    FormSubmission.confirmMethod = confirmMethod;\n}\nfunction setFormMode(mode) {\n    session.setFormMode(mode);\n}\n\nvar Turbo = /*#__PURE__*/Object.freeze({\n    __proto__: null,\n    navigator: navigator$1,\n    session: session,\n    cache: cache,\n    PageRenderer: PageRenderer,\n    PageSnapshot: PageSnapshot,\n    FrameRenderer: FrameRenderer,\n    start: start,\n    registerAdapter: registerAdapter,\n    visit: visit,\n    connectStreamSource: connectStreamSource,\n    disconnectStreamSource: disconnectStreamSource,\n    renderStreamMessage: renderStreamMessage,\n    clearCache: clearCache,\n    setProgressBarDelay: setProgressBarDelay,\n    setConfirmMethod: setConfirmMethod,\n    setFormMode: setFormMode,\n    StreamActions: StreamActions\n});\n\nclass TurboFrameMissingError extends Error {\n}\n\nclass FrameController {\n    constructor(element) {\n        this.fetchResponseLoaded = (_fetchResponse) => { };\n        this.currentFetchRequest = null;\n        this.resolveVisitPromise = () => { };\n        this.connected = false;\n        this.hasBeenLoaded = false;\n        this.ignoredAttributes = new Set();\n        this.action = null;\n        this.visitCachedSnapshot = ({ element }) => {\n            const frame = element.querySelector(\"#\" + this.element.id);\n            if (frame && this.previousFrameElement) {\n                frame.replaceChildren(...this.previousFrameElement.children);\n            }\n            delete this.previousFrameElement;\n        };\n        this.element = element;\n        this.view = new FrameView(this, this.element);\n        this.appearanceObserver = new AppearanceObserver(this, this.element);\n        this.formLinkClickObserver = new FormLinkClickObserver(this, this.element);\n        this.linkInterceptor = new LinkInterceptor(this, this.element);\n        this.restorationIdentifier = uuid();\n        this.formSubmitObserver = new FormSubmitObserver(this, this.element);\n    }\n    connect() {\n        if (!this.connected) {\n            this.connected = true;\n            if (this.loadingStyle == FrameLoadingStyle.lazy) {\n                this.appearanceObserver.start();\n            }\n            else {\n                this.loadSourceURL();\n            }\n            this.formLinkClickObserver.start();\n            this.linkInterceptor.start();\n            this.formSubmitObserver.start();\n        }\n    }\n    disconnect() {\n        if (this.connected) {\n            this.connected = false;\n            this.appearanceObserver.stop();\n            this.formLinkClickObserver.stop();\n            this.linkInterceptor.stop();\n            this.formSubmitObserver.stop();\n        }\n    }\n    disabledChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.eager) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLChanged() {\n        if (this.isIgnoringChangesTo(\"src\"))\n            return;\n        if (this.element.isConnected) {\n            this.complete = false;\n        }\n        if (this.loadingStyle == FrameLoadingStyle.eager || this.hasBeenLoaded) {\n            this.loadSourceURL();\n        }\n    }\n    sourceURLReloaded() {\n        const { src } = this.element;\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            this.element.removeAttribute(\"complete\");\n        });\n        this.element.src = null;\n        this.element.src = src;\n        return this.element.loaded;\n    }\n    completeChanged() {\n        if (this.isIgnoringChangesTo(\"complete\"))\n            return;\n        this.loadSourceURL();\n    }\n    loadingStyleChanged() {\n        if (this.loadingStyle == FrameLoadingStyle.lazy) {\n            this.appearanceObserver.start();\n        }\n        else {\n            this.appearanceObserver.stop();\n            this.loadSourceURL();\n        }\n    }\n    async loadSourceURL() {\n        if (this.enabled && this.isActive && !this.complete && this.sourceURL) {\n            this.element.loaded = this.visit(expandURL(this.sourceURL));\n            this.appearanceObserver.stop();\n            await this.element.loaded;\n            this.hasBeenLoaded = true;\n        }\n    }\n    async loadResponse(fetchResponse) {\n        if (fetchResponse.redirected || (fetchResponse.succeeded && fetchResponse.isHTML)) {\n            this.sourceURL = fetchResponse.response.url;\n        }\n        try {\n            const html = await fetchResponse.responseHTML;\n            if (html) {\n                const document = parseHTMLDocument(html);\n                const pageSnapshot = PageSnapshot.fromDocument(document);\n                if (pageSnapshot.isVisitable) {\n                    await this.loadFrameResponse(fetchResponse, document);\n                }\n                else {\n                    await this.handleUnvisitableFrameResponse(fetchResponse);\n                }\n            }\n        }\n        finally {\n            this.fetchResponseLoaded = () => { };\n        }\n    }\n    elementAppearedInViewport(element) {\n        this.proposeVisitIfNavigatedWithAction(element, element);\n        this.loadSourceURL();\n    }\n    willSubmitFormLinkToLocation(link) {\n        return this.shouldInterceptNavigation(link);\n    }\n    submittedFormLinkToLocation(link, _location, form) {\n        const frame = this.findFrameElement(link);\n        if (frame)\n            form.setAttribute(\"data-turbo-frame\", frame.id);\n    }\n    shouldInterceptLinkClick(element, _location, _event) {\n        return this.shouldInterceptNavigation(element);\n    }\n    linkClickIntercepted(element, location) {\n        this.navigateFrame(element, location);\n    }\n    willSubmitForm(element, submitter) {\n        return element.closest(\"turbo-frame\") == this.element && this.shouldInterceptNavigation(element, submitter);\n    }\n    formSubmitted(element, submitter) {\n        if (this.formSubmission) {\n            this.formSubmission.stop();\n        }\n        this.formSubmission = new FormSubmission(this, element, submitter);\n        const { fetchRequest } = this.formSubmission;\n        this.prepareRequest(fetchRequest);\n        this.formSubmission.start();\n    }\n    prepareRequest(request) {\n        var _a;\n        request.headers[\"Turbo-Frame\"] = this.id;\n        if ((_a = this.currentNavigationElement) === null || _a === void 0 ? void 0 : _a.hasAttribute(\"data-turbo-stream\")) {\n            request.acceptResponseType(StreamMessage.contentType);\n        }\n    }\n    requestStarted(_request) {\n        markAsBusy(this.element);\n    }\n    requestPreventedHandlingResponse(_request, _response) {\n        this.resolveVisitPromise();\n    }\n    async requestSucceededWithResponse(request, response) {\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    async requestFailedWithResponse(request, response) {\n        await this.loadResponse(response);\n        this.resolveVisitPromise();\n    }\n    requestErrored(request, error) {\n        console.error(error);\n        this.resolveVisitPromise();\n    }\n    requestFinished(_request) {\n        clearBusyState(this.element);\n    }\n    formSubmissionStarted({ formElement }) {\n        markAsBusy(formElement, this.findFrameElement(formElement));\n    }\n    formSubmissionSucceededWithResponse(formSubmission, response) {\n        const frame = this.findFrameElement(formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, formSubmission.formElement, formSubmission.submitter);\n        frame.delegate.loadResponse(response);\n        if (!formSubmission.isSafe) {\n            session.clearCache();\n        }\n    }\n    formSubmissionFailedWithResponse(formSubmission, fetchResponse) {\n        this.element.delegate.loadResponse(fetchResponse);\n        session.clearCache();\n    }\n    formSubmissionErrored(formSubmission, error) {\n        console.error(error);\n    }\n    formSubmissionFinished({ formElement }) {\n        clearBusyState(formElement, this.findFrameElement(formElement));\n    }\n    allowsImmediateRender({ element: newFrame }, options) {\n        const event = dispatch(\"turbo:before-frame-render\", {\n            target: this.element,\n            detail: Object.assign({ newFrame }, options),\n            cancelable: true,\n        });\n        const { defaultPrevented, detail: { render }, } = event;\n        if (this.view.renderer && render) {\n            this.view.renderer.renderElement = render;\n        }\n        return !defaultPrevented;\n    }\n    viewRenderedSnapshot(_snapshot, _isPreview) { }\n    preloadOnLoadLinksForView(element) {\n        session.preloadOnLoadLinksForView(element);\n    }\n    viewInvalidated() { }\n    willRenderFrame(currentElement, _newElement) {\n        this.previousFrameElement = currentElement.cloneNode(true);\n    }\n    async loadFrameResponse(fetchResponse, document) {\n        const newFrameElement = await this.extractForeignFrameElement(document.body);\n        if (newFrameElement) {\n            const snapshot = new Snapshot(newFrameElement);\n            const renderer = new FrameRenderer(this, this.view.snapshot, snapshot, FrameRenderer.renderElement, false, false);\n            if (this.view.renderPromise)\n                await this.view.renderPromise;\n            this.changeHistory();\n            await this.view.render(renderer);\n            this.complete = true;\n            session.frameRendered(fetchResponse, this.element);\n            session.frameLoaded(this.element);\n            this.fetchResponseLoaded(fetchResponse);\n        }\n        else if (this.willHandleFrameMissingFromResponse(fetchResponse)) {\n            this.handleFrameMissingFromResponse(fetchResponse);\n        }\n    }\n    async visit(url) {\n        var _a;\n        const request = new FetchRequest(this, FetchMethod.get, url, new URLSearchParams(), this.element);\n        (_a = this.currentFetchRequest) === null || _a === void 0 ? void 0 : _a.cancel();\n        this.currentFetchRequest = request;\n        return new Promise((resolve) => {\n            this.resolveVisitPromise = () => {\n                this.resolveVisitPromise = () => { };\n                this.currentFetchRequest = null;\n                resolve();\n            };\n            request.perform();\n        });\n    }\n    navigateFrame(element, url, submitter) {\n        const frame = this.findFrameElement(element, submitter);\n        frame.delegate.proposeVisitIfNavigatedWithAction(frame, element, submitter);\n        this.withCurrentNavigationElement(element, () => {\n            frame.src = url;\n        });\n    }\n    proposeVisitIfNavigatedWithAction(frame, element, submitter) {\n        this.action = getVisitAction(submitter, element, frame);\n        if (this.action) {\n            const pageSnapshot = PageSnapshot.fromElement(frame).clone();\n            const { visitCachedSnapshot } = frame.delegate;\n            frame.delegate.fetchResponseLoaded = (fetchResponse) => {\n                if (frame.src) {\n                    const { statusCode, redirected } = fetchResponse;\n                    const responseHTML = frame.ownerDocument.documentElement.outerHTML;\n                    const response = { statusCode, redirected, responseHTML };\n                    const options = {\n                        response,\n                        visitCachedSnapshot,\n                        willRender: false,\n                        updateHistory: false,\n                        restorationIdentifier: this.restorationIdentifier,\n                        snapshot: pageSnapshot,\n                    };\n                    if (this.action)\n                        options.action = this.action;\n                    session.visit(frame.src, options);\n                }\n            };\n        }\n    }\n    changeHistory() {\n        if (this.action) {\n            const method = getHistoryMethodForAction(this.action);\n            session.history.update(method, expandURL(this.element.src || \"\"), this.restorationIdentifier);\n        }\n    }\n    async handleUnvisitableFrameResponse(fetchResponse) {\n        console.warn(`The response (${fetchResponse.statusCode}) from <turbo-frame id=\"${this.element.id}\"> is performing a full page visit due to turbo-visit-control.`);\n        await this.visitResponse(fetchResponse.response);\n    }\n    willHandleFrameMissingFromResponse(fetchResponse) {\n        this.element.setAttribute(\"complete\", \"\");\n        const response = fetchResponse.response;\n        const visit = async (url, options = {}) => {\n            if (url instanceof Response) {\n                this.visitResponse(url);\n            }\n            else {\n                session.visit(url, options);\n            }\n        };\n        const event = dispatch(\"turbo:frame-missing\", {\n            target: this.element,\n            detail: { response, visit },\n            cancelable: true,\n        });\n        return !event.defaultPrevented;\n    }\n    handleFrameMissingFromResponse(fetchResponse) {\n        this.view.missing();\n        this.throwFrameMissingError(fetchResponse);\n    }\n    throwFrameMissingError(fetchResponse) {\n        const message = `The response (${fetchResponse.statusCode}) did not contain the expected <turbo-frame id=\"${this.element.id}\"> and will be ignored. To perform a full page visit instead, set turbo-visit-control to reload.`;\n        throw new TurboFrameMissingError(message);\n    }\n    async visitResponse(response) {\n        const wrapped = new FetchResponse(response);\n        const responseHTML = await wrapped.responseHTML;\n        const { location, redirected, statusCode } = wrapped;\n        return session.visit(location, { response: { redirected, statusCode, responseHTML } });\n    }\n    findFrameElement(element, submitter) {\n        var _a;\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        return (_a = getFrameElementById(id)) !== null && _a !== void 0 ? _a : this.element;\n    }\n    async extractForeignFrameElement(container) {\n        let element;\n        const id = CSS.escape(this.id);\n        try {\n            element = activateElement(container.querySelector(`turbo-frame#${id}`), this.sourceURL);\n            if (element) {\n                return element;\n            }\n            element = activateElement(container.querySelector(`turbo-frame[src][recurse~=${id}]`), this.sourceURL);\n            if (element) {\n                await element.loaded;\n                return await this.extractForeignFrameElement(element);\n            }\n        }\n        catch (error) {\n            console.error(error);\n            return new FrameElement();\n        }\n        return null;\n    }\n    formActionIsVisitable(form, submitter) {\n        const action = getAction(form, submitter);\n        return locationIsVisitable(expandURL(action), this.rootLocation);\n    }\n    shouldInterceptNavigation(element, submitter) {\n        const id = getAttribute(\"data-turbo-frame\", submitter, element) || this.element.getAttribute(\"target\");\n        if (element instanceof HTMLFormElement && !this.formActionIsVisitable(element, submitter)) {\n            return false;\n        }\n        if (!this.enabled || id == \"_top\") {\n            return false;\n        }\n        if (id) {\n            const frameElement = getFrameElementById(id);\n            if (frameElement) {\n                return !frameElement.disabled;\n            }\n        }\n        if (!session.elementIsNavigatable(element)) {\n            return false;\n        }\n        if (submitter && !session.elementIsNavigatable(submitter)) {\n            return false;\n        }\n        return true;\n    }\n    get id() {\n        return this.element.id;\n    }\n    get enabled() {\n        return !this.element.disabled;\n    }\n    get sourceURL() {\n        if (this.element.src) {\n            return this.element.src;\n        }\n    }\n    set sourceURL(sourceURL) {\n        this.ignoringChangesToAttribute(\"src\", () => {\n            this.element.src = sourceURL !== null && sourceURL !== void 0 ? sourceURL : null;\n        });\n    }\n    get loadingStyle() {\n        return this.element.loading;\n    }\n    get isLoading() {\n        return this.formSubmission !== undefined || this.resolveVisitPromise() !== undefined;\n    }\n    get complete() {\n        return this.element.hasAttribute(\"complete\");\n    }\n    set complete(value) {\n        this.ignoringChangesToAttribute(\"complete\", () => {\n            if (value) {\n                this.element.setAttribute(\"complete\", \"\");\n            }\n            else {\n                this.element.removeAttribute(\"complete\");\n            }\n        });\n    }\n    get isActive() {\n        return this.element.isActive && this.connected;\n    }\n    get rootLocation() {\n        var _a;\n        const meta = this.element.ownerDocument.querySelector(`meta[name=\"turbo-root\"]`);\n        const root = (_a = meta === null || meta === void 0 ? void 0 : meta.content) !== null && _a !== void 0 ? _a : \"/\";\n        return expandURL(root);\n    }\n    isIgnoringChangesTo(attributeName) {\n        return this.ignoredAttributes.has(attributeName);\n    }\n    ignoringChangesToAttribute(attributeName, callback) {\n        this.ignoredAttributes.add(attributeName);\n        callback();\n        this.ignoredAttributes.delete(attributeName);\n    }\n    withCurrentNavigationElement(element, callback) {\n        this.currentNavigationElement = element;\n        callback();\n        delete this.currentNavigationElement;\n    }\n}\nfunction getFrameElementById(id) {\n    if (id != null) {\n        const element = document.getElementById(id);\n        if (element instanceof FrameElement) {\n            return element;\n        }\n    }\n}\nfunction activateElement(element, currentURL) {\n    if (element) {\n        const src = element.getAttribute(\"src\");\n        if (src != null && currentURL != null && urlsAreEqual(src, currentURL)) {\n            throw new Error(`Matching <turbo-frame id=\"${element.id}\"> element has a source URL which references itself`);\n        }\n        if (element.ownerDocument !== document) {\n            element = document.importNode(element, true);\n        }\n        if (element instanceof FrameElement) {\n            element.connectedCallback();\n            element.disconnectedCallback();\n            return element;\n        }\n    }\n}\n\nclass StreamElement extends HTMLElement {\n    static async renderElement(newElement) {\n        await newElement.performAction();\n    }\n    async connectedCallback() {\n        try {\n            await this.render();\n        }\n        catch (error) {\n            console.error(error);\n        }\n        finally {\n            this.disconnect();\n        }\n    }\n    async render() {\n        var _a;\n        return ((_a = this.renderPromise) !== null && _a !== void 0 ? _a : (this.renderPromise = (async () => {\n            const event = this.beforeRenderEvent;\n            if (this.dispatchEvent(event)) {\n                await nextAnimationFrame();\n                await event.detail.render(this);\n            }\n        })()));\n    }\n    disconnect() {\n        try {\n            this.remove();\n        }\n        catch (_a) { }\n    }\n    removeDuplicateTargetChildren() {\n        this.duplicateChildren.forEach((c) => c.remove());\n    }\n    get duplicateChildren() {\n        var _a;\n        const existingChildren = this.targetElements.flatMap((e) => [...e.children]).filter((c) => !!c.id);\n        const newChildrenIds = [...(((_a = this.templateContent) === null || _a === void 0 ? void 0 : _a.children) || [])].filter((c) => !!c.id).map((c) => c.id);\n        return existingChildren.filter((c) => newChildrenIds.includes(c.id));\n    }\n    get performAction() {\n        if (this.action) {\n            const actionFunction = StreamActions[this.action];\n            if (actionFunction) {\n                return actionFunction;\n            }\n            this.raise(\"unknown action\");\n        }\n        this.raise(\"action attribute is missing\");\n    }\n    get targetElements() {\n        if (this.target) {\n            return this.targetElementsById;\n        }\n        else if (this.targets) {\n            return this.targetElementsByQuery;\n        }\n        else {\n            this.raise(\"target or targets attribute is missing\");\n        }\n    }\n    get templateContent() {\n        return this.templateElement.content.cloneNode(true);\n    }\n    get templateElement() {\n        if (this.firstElementChild === null) {\n            const template = this.ownerDocument.createElement(\"template\");\n            this.appendChild(template);\n            return template;\n        }\n        else if (this.firstElementChild instanceof HTMLTemplateElement) {\n            return this.firstElementChild;\n        }\n        this.raise(\"first child element must be a <template> element\");\n    }\n    get action() {\n        return this.getAttribute(\"action\");\n    }\n    get target() {\n        return this.getAttribute(\"target\");\n    }\n    get targets() {\n        return this.getAttribute(\"targets\");\n    }\n    raise(message) {\n        throw new Error(`${this.description}: ${message}`);\n    }\n    get description() {\n        var _a, _b;\n        return (_b = ((_a = this.outerHTML.match(/<[^>]+>/)) !== null && _a !== void 0 ? _a : [])[0]) !== null && _b !== void 0 ? _b : \"<turbo-stream>\";\n    }\n    get beforeRenderEvent() {\n        return new CustomEvent(\"turbo:before-stream-render\", {\n            bubbles: true,\n            cancelable: true,\n            detail: { newStream: this, render: StreamElement.renderElement },\n        });\n    }\n    get targetElementsById() {\n        var _a;\n        const element = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.getElementById(this.target);\n        if (element !== null) {\n            return [element];\n        }\n        else {\n            return [];\n        }\n    }\n    get targetElementsByQuery() {\n        var _a;\n        const elements = (_a = this.ownerDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll(this.targets);\n        if (elements.length !== 0) {\n            return Array.prototype.slice.call(elements);\n        }\n        else {\n            return [];\n        }\n    }\n}\n\nclass StreamSourceElement extends HTMLElement {\n    constructor() {\n        super(...arguments);\n        this.streamSource = null;\n    }\n    connectedCallback() {\n        this.streamSource = this.src.match(/^ws{1,2}:/) ? new WebSocket(this.src) : new EventSource(this.src);\n        connectStreamSource(this.streamSource);\n    }\n    disconnectedCallback() {\n        if (this.streamSource) {\n            disconnectStreamSource(this.streamSource);\n        }\n    }\n    get src() {\n        return this.getAttribute(\"src\") || \"\";\n    }\n}\n\nFrameElement.delegateConstructor = FrameController;\nif (customElements.get(\"turbo-frame\") === undefined) {\n    customElements.define(\"turbo-frame\", FrameElement);\n}\nif (customElements.get(\"turbo-stream\") === undefined) {\n    customElements.define(\"turbo-stream\", StreamElement);\n}\nif (customElements.get(\"turbo-stream-source\") === undefined) {\n    customElements.define(\"turbo-stream-source\", StreamSourceElement);\n}\n\n(() => {\n    let element = document.currentScript;\n    if (!element)\n        return;\n    if (element.hasAttribute(\"data-turbo-suppress-warning\"))\n        return;\n    element = element.parentElement;\n    while (element) {\n        if (element == document.body) {\n            return console.warn(unindent `\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.hotwired.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        element = element.parentElement;\n    }\n})();\n\nwindow.Turbo = Turbo;\nstart();\n\nexport { FrameElement, FrameLoadingStyle, FrameRenderer, PageRenderer, PageSnapshot, StreamActions, StreamElement, StreamSourceElement, cache, clearCache, connectStreamSource, disconnectStreamSource, navigator$1 as navigator, registerAdapter, renderStreamMessage, session, setConfirmMethod, setFormMode, setProgressBarDelay, start, visit };\n", "let consumer\n\nexport async function getConsumer() {\n  return consumer || setConsumer(createConsumer().then(setConsumer))\n}\n\nexport function setConsumer(newConsumer) {\n  return consumer = newConsumer\n}\n\nexport async function createConsumer() {\n  const { createConsumer } = await import(/* webpackChunkName: \"actioncable\" */ \"@rails/actioncable/src\")\n  return createConsumer()\n}\n\nexport async function subscribeTo(channel, mixin) {\n  const { subscriptions } = await getConsumer()\n  return subscriptions.create(channel, mixin)\n}\n", "// Based on https://github.com/nathan7/snakeize\n//\n// This software is released under the MIT license:\n// Permission is hereby granted, free of charge, to any person obtaining a copy of\n// this software and associated documentation files (the \"Software\"), to deal in\n// the Software without restriction, including without limitation the rights to\n// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\n// the Software, and to permit persons to whom the Software is furnished to do so,\n// subject to the following conditions:\n\n// The above copyright notice and this permission notice shall be included in all\n// copies or substantial portions of the Software.\n\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\n// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\n// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\n// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\n// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\nexport default function walk (obj) {\n    if (!obj || typeof obj !== 'object') return obj;\n    if (obj instanceof Date || obj instanceof RegExp) return obj;\n    if (Array.isArray(obj)) return obj.map(walk);\n    return Object.keys(obj).reduce(function (acc, key) {\n        var camel = key[0].toLowerCase() + key.slice(1).replace(/([A-Z]+)/g, function (m, x) {\n            return '_' + x.toLowerCase();\n        });\n        acc[camel] = walk(obj[key]);\n        return acc;\n    }, {});\n};", "import { connectStreamSource, disconnectStreamSource } from \"@hotwired/turbo\"\nimport { subscribeTo } from \"./cable\"\nimport snakeize from \"./snakeize\"\n\nclass TurboCableStreamSourceElement extends HTMLElement {\n  async connectedCallback() {\n    connectStreamSource(this)\n    this.subscription = await subscribeTo(this.channel, {\n      received: this.dispatchMessageEvent.bind(this),\n      connected: this.subscriptionConnected.bind(this),\n      disconnected: this.subscriptionDisconnected.bind(this)\n    })\n  }\n\n  disconnectedCallback() {\n    disconnectStreamSource(this)\n    if (this.subscription) this.subscription.unsubscribe()\n  }\n\n  dispatchMessageEvent(data) {\n    const event = new MessageEvent(\"message\", { data })\n    return this.dispatchEvent(event)\n  }\n\n  subscriptionConnected() {\n    this.setAttribute(\"connected\", \"\")\n  }\n\n  subscriptionDisconnected() {\n    this.removeAttribute(\"connected\")\n  }\n\n  get channel() {\n    const channel = this.getAttribute(\"channel\")\n    const signed_stream_name = this.getAttribute(\"signed-stream-name\")\n    return { channel, signed_stream_name, ...snakeize({ ...this.dataset }) }\n  }\n}\n\n\nif (customElements.get(\"turbo-cable-stream-source\") === undefined) {\n  customElements.define(\"turbo-cable-stream-source\", TurboCableStreamSourceElement)\n}\n", "export function encodeMethodIntoRequestBody(event) {\n  if (event.target instanceof HTMLFormElement) {\n    const { target: form, detail: { fetchOptions } } = event\n\n    form.addEventListener(\"turbo:submit-start\", ({ detail: { formSubmission: { submitter } } }) => {\n      const body = isBodyInit(fetchOptions.body) ? fetchOptions.body : new URLSearchParams()\n      const method = determineFetchMethod(submitter, body, form)\n\n      if (!/get/i.test(method)) {\n        if (/post/i.test(method)) {\n          body.delete(\"_method\")\n        } else {\n          body.set(\"_method\", method)\n        }\n\n        fetchOptions.method = \"post\"\n      }\n    }, { once: true })\n  }\n}\n\nfunction determineFetchMethod(submitter, body, form) {\n  const formMethod = determineFormMethod(submitter)\n  const overrideMethod = body.get(\"_method\")\n  const method = form.getAttribute(\"method\") || \"get\"\n\n  if (typeof formMethod == \"string\") {\n    return formMethod\n  } else if (typeof overrideMethod == \"string\") {\n    return overrideMethod\n  } else {\n    return method\n  }\n}\n\nfunction determineFormMethod(submitter) {\n  if (submitter instanceof HTMLButtonElement || submitter instanceof HTMLInputElement) {\n    if (submitter.hasAttribute(\"formmethod\")) {\n      return submitter.formMethod\n    } else {\n      return null\n    }\n  } else {\n    return null\n  }\n}\n\nfunction isBodyInit(body) {\n  return body instanceof FormData || body instanceof URLSearchParams\n}\n", "import \"./cable_stream_source_element\"\n\nimport * as Turbo from \"@hotwired/turbo\"\nexport { Turbo }\n\nimport * as cable from \"./cable\"\nexport { cable }\n\nimport { encodeMethodIntoRequestBody } from \"./fetch_requests\"\n\naddEventListener(\"turbo:before-fetch-request\", encodeMethodIntoRequestBody)\n", "/*\nTrix 2.0.4\nCopyright \u00A9 2022 37signals, LLC\n */\nconst t={preview:{presentation:\"gallery\",caption:{name:!0,size:!0}},file:{caption:{size:!0}}},e={default:{tagName:\"div\",parse:!1},quote:{tagName:\"blockquote\",nestable:!0},heading1:{tagName:\"h1\",terminal:!0,breakOnReturn:!0,group:!1},code:{tagName:\"pre\",terminal:!0,text:{plaintext:!0}},bulletList:{tagName:\"ul\",parse:!1},bullet:{tagName:\"li\",listAttribute:\"bulletList\",group:!1,nestable:!0,test(t){return i(t.parentNode)===e[this.listAttribute].tagName}},numberList:{tagName:\"ol\",parse:!1},number:{tagName:\"li\",listAttribute:\"numberList\",group:!1,nestable:!0,test(t){return i(t.parentNode)===e[this.listAttribute].tagName}},attachmentGallery:{tagName:\"div\",exclusive:!0,terminal:!0,parse:!1,group:!1}},i=t=>{var e;return null==t||null===(e=t.tagName)||void 0===e?void 0:e.toLowerCase()},n=navigator.userAgent.match(/android\\s([0-9]+.*Chrome)/i),r=n&&parseInt(n[1]);var o={composesExistingText:/Android.*Chrome/.test(navigator.userAgent),recentAndroid:r&&r>12,samsungAndroid:r&&navigator.userAgent.match(/Android.*SM-/),forcesObjectResizing:/Trident.*rv:11/.test(navigator.userAgent),supportsInputEvents:\"undefined\"!=typeof InputEvent&&[\"data\",\"getTargetRanges\",\"inputType\"].every((t=>t in InputEvent.prototype))},s={attachFiles:\"Attach Files\",bold:\"Bold\",bullets:\"Bullets\",byte:\"Byte\",bytes:\"Bytes\",captionPlaceholder:\"Add a caption\u2026\",code:\"Code\",heading1:\"Heading\",indent:\"Increase Level\",italic:\"Italic\",link:\"Link\",numbers:\"Numbers\",outdent:\"Decrease Level\",quote:\"Quote\",redo:\"Redo\",remove:\"Remove\",strike:\"Strikethrough\",undo:\"Undo\",unlink:\"Unlink\",url:\"URL\",urlPlaceholder:\"Enter a URL\u2026\",GB:\"GB\",KB:\"KB\",MB:\"MB\",PB:\"PB\",TB:\"TB\"};const a=[s.bytes,s.KB,s.MB,s.GB,s.TB,s.PB];var l={prefix:\"IEC\",precision:2,formatter(t){switch(t){case 0:return\"0 \".concat(s.bytes);case 1:return\"1 \".concat(s.byte);default:let e;\"SI\"===this.prefix?e=1e3:\"IEC\"===this.prefix&&(e=1024);const i=Math.floor(Math.log(t)/Math.log(e)),n=(t/Math.pow(e,i)).toFixed(this.precision).replace(/0*$/,\"\").replace(/\\.$/,\"\");return\"\".concat(n,\" \").concat(a[i])}}};const c=function(t){for(const e in t){const i=t[e];this[e]=i}return this},h=document.documentElement,u=h.matches,d=function(t){let{onElement:e,matchingSelector:i,withCallback:n,inPhase:r,preventDefault:o,times:s}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=e||h,l=i,c=\"capturing\"===r,u=function(t){null!=s&&0==--s&&u.destroy();const e=p(t.target,{matchingSelector:l});null!=e&&(null==n||n.call(e,t,e),o&&t.preventDefault())};return u.destroy=()=>a.removeEventListener(t,u,c),a.addEventListener(t,u,c),u},g=function(t){let{onElement:e,bubbles:i,cancelable:n,attributes:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=null!=e?e:h;i=!1!==i,n=!1!==n;const s=document.createEvent(\"Events\");return s.initEvent(t,i,n),null!=r&&c.call(s,r),o.dispatchEvent(s)},m=function(t,e){if(1===(null==t?void 0:t.nodeType))return u.call(t,e)},p=function(t){let{matchingSelector:e,untilNode:i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};for(;t&&t.nodeType!==Node.ELEMENT_NODE;)t=t.parentNode;if(null!=t){if(null==e)return t;if(t.closest&&null==i)return t.closest(e);for(;t&&t!==i;){if(m(t,e))return t;t=t.parentNode}}},f=t=>document.activeElement!==t&&b(t,document.activeElement),b=function(t,e){if(t&&e)for(;e;){if(e===t)return!0;e=e.parentNode}},v=function(t){var e;if(null===(e=t)||void 0===e||!e.parentNode)return;let i=0;for(t=t.previousSibling;t;)i++,t=t.previousSibling;return i},A=t=>{var e;return null==t||null===(e=t.parentNode)||void 0===e?void 0:e.removeChild(t)},x=function(t){let{onlyNodesOfType:e,usingFilter:i,expandEntityReferences:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=(()=>{switch(e){case\"element\":return NodeFilter.SHOW_ELEMENT;case\"text\":return NodeFilter.SHOW_TEXT;case\"comment\":return NodeFilter.SHOW_COMMENT;default:return NodeFilter.SHOW_ALL}})();return document.createTreeWalker(t,r,null!=i?i:null,!0===n)},y=t=>{var e;return null==t||null===(e=t.tagName)||void 0===e?void 0:e.toLowerCase()},C=function(t){let e,i,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};\"object\"==typeof t?(n=t,t=n.tagName):n={attributes:n};const r=document.createElement(t);if(null!=n.editable&&(null==n.attributes&&(n.attributes={}),n.attributes.contenteditable=n.editable),n.attributes)for(e in n.attributes)i=n.attributes[e],r.setAttribute(e,i);if(n.style)for(e in n.style)i=n.style[e],r.style[e]=i;if(n.data)for(e in n.data)i=n.data[e],r.dataset[e]=i;return n.className&&n.className.split(\" \").forEach((t=>{r.classList.add(t)})),n.textContent&&(r.textContent=n.textContent),n.childNodes&&[].concat(n.childNodes).forEach((t=>{r.appendChild(t)})),r};let R;const E=function(){if(null!=R)return R;R=[];for(const t in e){const i=e[t];i.tagName&&R.push(i.tagName)}return R},S=t=>D(null==t?void 0:t.firstChild),k=function(t){return E().includes(y(t))&&!E().includes(y(t.firstChild))},L=function(t){let{strict:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{strict:!0};return e?D(t):D(t)||!D(t.firstChild)&&k(t)},D=t=>w(t)&&\"block\"===(null==t?void 0:t.data),w=t=>(null==t?void 0:t.nodeType)===Node.COMMENT_NODE,T=function(t){let{name:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(t)return I(t)?\"\\ufeff\"===t.data?!e||t.parentNode.dataset.trixCursorTarget===e:void 0:T(t.firstChild)},F=t=>m(t,\"[data-trix-attachment]\"),B=t=>I(t)&&\"\"===(null==t?void 0:t.data),I=t=>(null==t?void 0:t.nodeType)===Node.TEXT_NODE,P={level2Enabled:!0,getLevel(){return this.level2Enabled&&o.supportsInputEvents?2:0},pickFiles(t){const e=C(\"input\",{type:\"file\",multiple:!0,hidden:!0,id:this.fileInputId});e.addEventListener(\"change\",(()=>{t(e.files),A(e)})),A(document.getElementById(this.fileInputId)),document.body.appendChild(e),e.click()}};var N={removeBlankTableCells:!1,tableCellSeparator:\" | \",tableRowSeparator:\"\\n\"},O={bold:{tagName:\"strong\",inheritable:!0,parser(t){const e=window.getComputedStyle(t);return\"bold\"===e.fontWeight||e.fontWeight>=600}},italic:{tagName:\"em\",inheritable:!0,parser:t=>\"italic\"===window.getComputedStyle(t).fontStyle},href:{groupTagName:\"a\",parser(t){const e=\"a:not(\".concat(\"[data-trix-attachment]\",\")\"),i=t.closest(e);if(i)return i.getAttribute(\"href\")}},strike:{tagName:\"del\",inheritable:!0},frozen:{style:{backgroundColor:\"highlight\"}}},M={getDefaultHTML:()=>'<div class=\"trix-button-row\">\\n      <span class=\"trix-button-group trix-button-group--text-tools\" data-trix-button-group=\"text-tools\">\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bold\" data-trix-attribute=\"bold\" data-trix-key=\"b\" title=\"'.concat(s.bold,'\" tabindex=\"-1\">').concat(s.bold,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-italic\" data-trix-attribute=\"italic\" data-trix-key=\"i\" title=\"').concat(s.italic,'\" tabindex=\"-1\">').concat(s.italic,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-strike\" data-trix-attribute=\"strike\" title=\"').concat(s.strike,'\" tabindex=\"-1\">').concat(s.strike,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-link\" data-trix-attribute=\"href\" data-trix-action=\"link\" data-trix-key=\"k\" title=\"').concat(s.link,'\" tabindex=\"-1\">').concat(s.link,'</button>\\n      </span>\\n\\n      <span class=\"trix-button-group trix-button-group--block-tools\" data-trix-button-group=\"block-tools\">\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-1\" data-trix-attribute=\"heading1\" title=\"').concat(s.heading1,'\" tabindex=\"-1\">').concat(s.heading1,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-quote\" data-trix-attribute=\"quote\" title=\"').concat(s.quote,'\" tabindex=\"-1\">').concat(s.quote,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-code\" data-trix-attribute=\"code\" title=\"').concat(s.code,'\" tabindex=\"-1\">').concat(s.code,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-bullet-list\" data-trix-attribute=\"bullet\" title=\"').concat(s.bullets,'\" tabindex=\"-1\">').concat(s.bullets,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-number-list\" data-trix-attribute=\"number\" title=\"').concat(s.numbers,'\" tabindex=\"-1\">').concat(s.numbers,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-decrease-nesting-level\" data-trix-action=\"decreaseNestingLevel\" title=\"').concat(s.outdent,'\" tabindex=\"-1\">').concat(s.outdent,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-increase-nesting-level\" data-trix-action=\"increaseNestingLevel\" title=\"').concat(s.indent,'\" tabindex=\"-1\">').concat(s.indent,'</button>\\n      </span>\\n\\n      <span class=\"trix-button-group trix-button-group--file-tools\" data-trix-button-group=\"file-tools\">\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-attach\" data-trix-action=\"attachFiles\" title=\"').concat(s.attachFiles,'\" tabindex=\"-1\">').concat(s.attachFiles,'</button>\\n      </span>\\n\\n      <span class=\"trix-button-group-spacer\"></span>\\n\\n      <span class=\"trix-button-group trix-button-group--history-tools\" data-trix-button-group=\"history-tools\">\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-undo\" data-trix-action=\"undo\" data-trix-key=\"z\" title=\"').concat(s.undo,'\" tabindex=\"-1\">').concat(s.undo,'</button>\\n        <button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-redo\" data-trix-action=\"redo\" data-trix-key=\"shift+z\" title=\"').concat(s.redo,'\" tabindex=\"-1\">').concat(s.redo,'</button>\\n      </span>\\n    </div>\\n\\n    <div class=\"trix-dialogs\" data-trix-dialogs>\\n      <div class=\"trix-dialog trix-dialog--link\" data-trix-dialog=\"href\" data-trix-dialog-attribute=\"href\">\\n        <div class=\"trix-dialog__link-fields\">\\n          <input type=\"url\" name=\"href\" class=\"trix-input trix-input--dialog\" placeholder=\"').concat(s.urlPlaceholder,'\" aria-label=\"').concat(s.url,'\" required data-trix-input>\\n          <div class=\"trix-button-group\">\\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"').concat(s.link,'\" data-trix-method=\"setAttribute\">\\n            <input type=\"button\" class=\"trix-button trix-button--dialog\" value=\"').concat(s.unlink,'\" data-trix-method=\"removeAttribute\">\\n          </div>\\n        </div>\\n      </div>\\n    </div>')};const j={interval:5e3};var W=Object.freeze({__proto__:null,attachments:t,blockAttributes:e,browser:o,css:{attachment:\"attachment\",attachmentCaption:\"attachment__caption\",attachmentCaptionEditor:\"attachment__caption-editor\",attachmentMetadata:\"attachment__metadata\",attachmentMetadataContainer:\"attachment__metadata-container\",attachmentName:\"attachment__name\",attachmentProgress:\"attachment__progress\",attachmentSize:\"attachment__size\",attachmentToolbar:\"attachment__toolbar\",attachmentGallery:\"attachment-gallery\"},fileSize:l,input:P,keyNames:{8:\"backspace\",9:\"tab\",13:\"return\",27:\"escape\",37:\"left\",39:\"right\",46:\"delete\",68:\"d\",72:\"h\",79:\"o\"},lang:s,parser:N,textAttributes:O,toolbar:M,undo:j});class U{static proxyMethod(t){const{name:e,toMethod:i,toProperty:n,optional:r}=q(t);this.prototype[e]=function(){let t,o;var s,a;i?o=r?null===(s=this[i])||void 0===s?void 0:s.call(this):this[i]():n&&(o=this[n]);return r?(t=null===(a=o)||void 0===a?void 0:a[e],t?V.call(t,o,arguments):void 0):(t=o[e],V.call(t,o,arguments))}}}const q=function(t){const e=t.match(z);if(!e)throw new Error(\"can't parse @proxyMethod expression: \".concat(t));const i={name:e[4]};return null!=e[2]?i.toMethod=e[1]:i.toProperty=e[1],null!=e[3]&&(i.optional=!0),i},{apply:V}=Function.prototype,z=new RegExp(\"^(.+?)(\\\\(\\\\))?(\\\\?)?\\\\.(.+?)$\");var _,H,J;class K extends U{static box(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\";return t instanceof this?t:this.fromUCS2String(null==t?void 0:t.toString())}static fromUCS2String(t){return new this(t,Y(t))}static fromCodepoints(t){return new this(Q(t),t)}constructor(t,e){super(...arguments),this.ucs2String=t,this.codepoints=e,this.length=this.codepoints.length,this.ucs2Length=this.ucs2String.length}offsetToUCS2Offset(t){return Q(this.codepoints.slice(0,Math.max(0,t))).length}offsetFromUCS2Offset(t){return Y(this.ucs2String.slice(0,Math.max(0,t))).length}slice(){return this.constructor.fromCodepoints(this.codepoints.slice(...arguments))}charAt(t){return this.slice(t,t+1)}isEqualTo(t){return this.constructor.box(t).ucs2String===this.ucs2String}toJSON(){return this.ucs2String}getCacheKey(){return this.ucs2String}toString(){return this.ucs2String}}const G=1===(null===(_=Array.from)||void 0===_?void 0:_.call(Array,\"\uD83D\uDC7C\").length),$=null!=(null===(H=\" \".codePointAt)||void 0===H?void 0:H.call(\" \",0)),X=\" \uD83D\uDC7C\"===(null===(J=String.fromCodePoint)||void 0===J?void 0:J.call(String,32,128124));let Y,Q;Y=G&&$?t=>Array.from(t).map((t=>t.codePointAt(0))):function(t){const e=[];let i=0;const{length:n}=t;for(;i<n;){let r=t.charCodeAt(i++);if(55296<=r&&r<=56319&&i<n){const e=t.charCodeAt(i++);56320==(64512&e)?r=((1023&r)<<10)+(1023&e)+65536:i--}e.push(r)}return e},Q=X?t=>String.fromCodePoint(...Array.from(t||[])):function(t){return(()=>{const e=[];return Array.from(t).forEach((t=>{let i=\"\";t>65535&&(t-=65536,i+=String.fromCharCode(t>>>10&1023|55296),t=56320|1023&t),e.push(i+String.fromCharCode(t))})),e})().join(\"\")};let Z=0;class tt extends U{static fromJSONString(t){return this.fromJSON(JSON.parse(t))}constructor(){super(...arguments),this.id=++Z}hasSameConstructorAs(t){return this.constructor===(null==t?void 0:t.constructor)}isEqualTo(t){return this===t}inspect(){const t=[],e=this.contentsForInspection()||{};for(const i in e){const n=e[i];t.push(\"\".concat(i,\"=\").concat(n))}return\"#<\".concat(this.constructor.name,\":\").concat(this.id).concat(t.length?\" \".concat(t.join(\", \")):\"\",\">\")}contentsForInspection(){}toJSONString(){return JSON.stringify(this)}toUTF16String(){return K.box(this)}getCacheKey(){return this.id.toString()}}const et=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(t.length!==e.length)return!1;for(let i=0;i<t.length;i++){if(t[i]!==e[i])return!1}return!0},it=function(t){const e=t.slice(0);for(var i=arguments.length,n=new Array(i>1?i-1:0),r=1;r<i;r++)n[r-1]=arguments[r];return e.splice(...n),e},nt=/[\\u05BE\\u05C0\\u05C3\\u05D0-\\u05EA\\u05F0-\\u05F4\\u061B\\u061F\\u0621-\\u063A\\u0640-\\u064A\\u066D\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D5\\u06E5\\u06E6\\u200F\\u202B\\u202E\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC]/,rt=function(){const t=C(\"input\",{dir:\"auto\",name:\"x\",dirName:\"x.dir\"}),e=C(\"form\");e.appendChild(t);const i=function(){try{return new FormData(e).has(t.dirName)}catch(t){return!1}}(),n=function(){try{return t.matches(\":dir(ltr),:dir(rtl)\")}catch(t){return!1}}();return i?function(i){return t.value=i,new FormData(e).get(t.dirName)}:n?function(e){return t.value=e,t.matches(\":dir(rtl)\")?\"rtl\":\"ltr\"}:function(t){const e=t.trim().charAt(0);return nt.test(e)?\"rtl\":\"ltr\"}}();let ot=null,st=null,at=null,lt=null;const ct=()=>(ot||(ot=gt().concat(ut())),ot),ht=t=>e[t],ut=()=>(st||(st=Object.keys(e)),st),dt=t=>O[t],gt=()=>(at||(at=Object.keys(O)),at),mt=function(t,e){pt(t).textContent=e.replace(/%t/g,t)},pt=function(t){const e=document.createElement(\"style\");e.setAttribute(\"type\",\"text/css\"),e.setAttribute(\"data-tag-name\",t.toLowerCase());const i=ft();return i&&e.setAttribute(\"nonce\",i),document.head.insertBefore(e,document.head.firstChild),e},ft=function(){const t=bt(\"trix-csp-nonce\")||bt(\"csp-nonce\");if(t)return t.getAttribute(\"content\")},bt=t=>document.head.querySelector(\"meta[name=\".concat(t,\"]\")),vt={\"application/x-trix-feature-detection\":\"test\"},At=function(t){const e=t.getData(\"text/plain\"),i=t.getData(\"text/html\");if(!e||!i)return null==e?void 0:e.length;{const{body:t}=(new DOMParser).parseFromString(i,\"text/html\");if(t.textContent===e)return!t.querySelector(\"*\")}},xt=/Mac|^iP/.test(navigator.platform)?t=>t.metaKey:t=>t.ctrlKey,yt=t=>setTimeout(t,1),Ct=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e={};for(const i in t){const n=t[i];e[i]=n}return e},Rt=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(Object.keys(t).length!==Object.keys(e).length)return!1;for(const i in t){if(t[i]!==e[i])return!1}return!0},Et=function(t){if(null!=t)return Array.isArray(t)||(t=[t,t]),[Lt(t[0]),Lt(null!=t[1]?t[1]:t[0])]},St=function(t){if(null==t)return;const[e,i]=Et(t);return Dt(e,i)},kt=function(t,e){if(null==t||null==e)return;const[i,n]=Et(t),[r,o]=Et(e);return Dt(i,r)&&Dt(n,o)},Lt=function(t){return\"number\"==typeof t?t:Ct(t)},Dt=function(t,e){return\"number\"==typeof t?t===e:Rt(t,e)};class wt extends U{constructor(){super(...arguments),this.update=this.update.bind(this),this.run=this.run.bind(this),this.selectionManagers=[]}start(){if(!this.started)return this.started=!0,\"onselectionchange\"in document?document.addEventListener(\"selectionchange\",this.update,!0):this.run()}stop(){if(this.started)return this.started=!1,document.removeEventListener(\"selectionchange\",this.update,!0)}registerSelectionManager(t){if(!this.selectionManagers.includes(t))return this.selectionManagers.push(t),this.start()}unregisterSelectionManager(t){if(this.selectionManagers=this.selectionManagers.filter((e=>e!==t)),0===this.selectionManagers.length)return this.stop()}notifySelectionManagersOfSelectionChange(){return this.selectionManagers.map((t=>t.selectionDidChange()))}update(){const t=It();if(!Tt(t,this.domRange))return this.domRange=t,this.notifySelectionManagersOfSelectionChange()}reset(){return this.domRange=null,this.update()}run(){if(this.started)return this.update(),requestAnimationFrame(this.run)}}const Tt=(t,e)=>(null==t?void 0:t.startContainer)===(null==e?void 0:e.startContainer)&&(null==t?void 0:t.startOffset)===(null==e?void 0:e.startOffset)&&(null==t?void 0:t.endContainer)===(null==e?void 0:e.endContainer)&&(null==t?void 0:t.endOffset)===(null==e?void 0:e.endOffset),Ft=new wt,Bt=function(){const t=window.getSelection();if(t.rangeCount>0)return t},It=function(){var t;const e=null===(t=Bt())||void 0===t?void 0:t.getRangeAt(0);if(e&&!Nt(e))return e},Pt=function(t){const e=window.getSelection();return e.removeAllRanges(),e.addRange(t),Ft.update()},Nt=t=>Ot(t.startContainer)||Ot(t.endContainer),Ot=t=>!Object.getPrototypeOf(t),Mt=t=>t.replace(new RegExp(\"\".concat(\"\\ufeff\"),\"g\"),\"\").replace(new RegExp(\"\".concat(\"\u00A0\"),\"g\"),\" \"),jt=new RegExp(\"[^\\\\S\".concat(\"\u00A0\",\"]\")),Wt=t=>t.replace(new RegExp(\"\".concat(jt.source),\"g\"),\" \").replace(/\\ {2,}/g,\" \"),Ut=function(t,e){if(t.isEqualTo(e))return[\"\",\"\"];const i=qt(t,e),{length:n}=i.utf16String;let r;if(n){const{offset:o}=i,s=t.codepoints.slice(0,o).concat(t.codepoints.slice(o+n));r=qt(e,K.fromCodepoints(s))}else r=qt(e,t);return[i.utf16String.toString(),r.utf16String.toString()]},qt=function(t,e){let i=0,n=t.length,r=e.length;for(;i<n&&t.charAt(i).isEqualTo(e.charAt(i));)i++;for(;n>i+1&&t.charAt(n-1).isEqualTo(e.charAt(r-1));)n--,r--;return{utf16String:t.slice(i,n),offset:i}};class Vt extends tt{static fromCommonAttributesOfObjects(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!t.length)return new this;let e=Jt(t[0]),i=e.getKeys();return t.slice(1).forEach((t=>{i=e.getKeysCommonToHash(Jt(t)),e=e.slice(i)})),e}static box(t){return Jt(t)}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(...arguments),this.values=Ht(t)}add(t,e){return this.merge(zt(t,e))}remove(t){return new Vt(Ht(this.values,t))}get(t){return this.values[t]}has(t){return t in this.values}merge(t){return new Vt(_t(this.values,Kt(t)))}slice(t){const e={};return Array.from(t).forEach((t=>{this.has(t)&&(e[t]=this.values[t])})),new Vt(e)}getKeys(){return Object.keys(this.values)}getKeysCommonToHash(t){return t=Jt(t),this.getKeys().filter((e=>this.values[e]===t.values[e]))}isEqualTo(t){return et(this.toArray(),Jt(t).toArray())}isEmpty(){return 0===this.getKeys().length}toArray(){if(!this.array){const t=[];for(const e in this.values){const i=this.values[e];t.push(t.push(e,i))}this.array=t.slice(0)}return this.array}toObject(){return Ht(this.values)}toJSON(){return this.toObject()}contentsForInspection(){return{values:JSON.stringify(this.values)}}}const zt=function(t,e){const i={};return i[t]=e,i},_t=function(t,e){const i=Ht(t);for(const t in e){const n=e[t];i[t]=n}return i},Ht=function(t,e){const i={};return Object.keys(t).sort().forEach((n=>{n!==e&&(i[n]=t[n])})),i},Jt=function(t){return t instanceof Vt?t:new Vt(t)},Kt=function(t){return t instanceof Vt?t.values:t};class Gt{static groupObjects(){let t,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{depth:i,asTree:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};n&&null==i&&(i=0);const r=[];return Array.from(e).forEach((e=>{var o;if(t){var s,a,l;if(null!==(s=e.canBeGrouped)&&void 0!==s&&s.call(e,i)&&null!==(a=(l=t[t.length-1]).canBeGroupedWith)&&void 0!==a&&a.call(l,e,i))return void t.push(e);r.push(new this(t,{depth:i,asTree:n})),t=null}null!==(o=e.canBeGrouped)&&void 0!==o&&o.call(e,i)?t=[e]:r.push(e)})),t&&r.push(new this(t,{depth:i,asTree:n})),r}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{depth:e,asTree:i}=arguments.length>1?arguments[1]:void 0;this.objects=t,i&&(this.depth=e,this.objects=this.constructor.groupObjects(this.objects,{asTree:i,depth:this.depth+1}))}getObjects(){return this.objects}getDepth(){return this.depth}getCacheKey(){const t=[\"objectGroup\"];return Array.from(this.getObjects()).forEach((e=>{t.push(e.getCacheKey())})),t.join(\"/\")}}class $t extends U{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];super(...arguments),this.objects={},Array.from(t).forEach((t=>{const e=JSON.stringify(t);null==this.objects[e]&&(this.objects[e]=t)}))}find(t){const e=JSON.stringify(t);return this.objects[e]}}class Xt{constructor(t){this.reset(t)}add(t){const e=Yt(t);this.elements[e]=t}remove(t){const e=Yt(t),i=this.elements[e];if(i)return delete this.elements[e],i}reset(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return this.elements={},Array.from(t).forEach((t=>{this.add(t)})),t}}const Yt=t=>t.dataset.trixStoreKey;class Qt extends U{isPerforming(){return!0===this.performing}hasPerformed(){return!0===this.performed}hasSucceeded(){return this.performed&&this.succeeded}hasFailed(){return this.performed&&!this.succeeded}getPromise(){return this.promise||(this.promise=new Promise(((t,e)=>(this.performing=!0,this.perform(((i,n)=>{this.succeeded=i,this.performing=!1,this.performed=!0,this.succeeded?t(n):e(n)})))))),this.promise}perform(t){return t(!1)}release(){var t,e;null===(t=this.promise)||void 0===t||null===(e=t.cancel)||void 0===e||e.call(t),this.promise=null,this.performing=null,this.performed=null,this.succeeded=null}}Qt.proxyMethod(\"getPromise().then\"),Qt.proxyMethod(\"getPromise().catch\");class Zt extends U{constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(...arguments),this.object=t,this.options=e,this.childViews=[],this.rootView=this}getNodes(){return this.nodes||(this.nodes=this.createNodes()),this.nodes.map((t=>t.cloneNode(!0)))}invalidate(){var t;return this.nodes=null,this.childViews=[],null===(t=this.parentView)||void 0===t?void 0:t.invalidate()}invalidateViewForObject(t){var e;return null===(e=this.findViewForObject(t))||void 0===e?void 0:e.invalidate()}findOrCreateCachedChildView(t,e,i){let n=this.getCachedViewForObject(e);return n?this.recordChildView(n):(n=this.createChildView(...arguments),this.cacheViewForObject(n,e)),n}createChildView(t,e){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};e instanceof Gt&&(i.viewClass=t,t=te);const n=new t(e,i);return this.recordChildView(n)}recordChildView(t){return t.parentView=this,t.rootView=this.rootView,this.childViews.push(t),t}getAllChildViews(){let t=[];return this.childViews.forEach((e=>{t.push(e),t=t.concat(e.getAllChildViews())})),t}findElement(){return this.findElementForObject(this.object)}findElementForObject(t){const e=null==t?void 0:t.id;if(e)return this.rootView.element.querySelector(\"[data-trix-id='\".concat(e,\"']\"))}findViewForObject(t){for(const e of this.getAllChildViews())if(e.object===t)return e}getViewCache(){return this.rootView!==this?this.rootView.getViewCache():this.isViewCachingEnabled()?(this.viewCache||(this.viewCache={}),this.viewCache):void 0}isViewCachingEnabled(){return!1!==this.shouldCacheViews}enableViewCaching(){this.shouldCacheViews=!0}disableViewCaching(){this.shouldCacheViews=!1}getCachedViewForObject(t){var e;return null===(e=this.getViewCache())||void 0===e?void 0:e[t.getCacheKey()]}cacheViewForObject(t,e){const i=this.getViewCache();i&&(i[e.getCacheKey()]=t)}garbageCollectCachedViews(){const t=this.getViewCache();if(t){const e=this.getAllChildViews().concat(this).map((t=>t.object.getCacheKey()));for(const i in t)e.includes(i)||delete t[i]}}}class te extends Zt{constructor(){super(...arguments),this.objectGroup=this.object,this.viewClass=this.options.viewClass,delete this.options.viewClass}getChildViews(){return this.childViews.length||Array.from(this.objectGroup.getObjects()).forEach((t=>{this.findOrCreateCachedChildView(this.viewClass,t,this.options)})),this.childViews}createNodes(){const t=this.createContainerElement();return this.getChildViews().forEach((e=>{Array.from(e.getNodes()).forEach((e=>{t.appendChild(e)}))})),[t]}createContainerElement(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.objectGroup.getDepth();return this.getChildViews()[0].createContainerElement(t)}}const{css:ee}=W;class ie extends Zt{constructor(){super(...arguments),this.attachment=this.object,this.attachment.uploadProgressDelegate=this,this.attachmentPiece=this.options.piece}createContentNodes(){return[]}createNodes(){let t;const e=t=C({tagName:\"figure\",className:this.getClassName(),data:this.getData(),editable:!1}),i=this.getHref();return i&&(t=C({tagName:\"a\",editable:!1,attributes:{href:i,tabindex:-1}}),e.appendChild(t)),this.attachment.hasContent()?t.innerHTML=this.attachment.getContent():this.createContentNodes().forEach((e=>{t.appendChild(e)})),t.appendChild(this.createCaptionElement()),this.attachment.isPending()&&(this.progressElement=C({tagName:\"progress\",attributes:{class:ee.attachmentProgress,value:this.attachment.getUploadProgress(),max:100},data:{trixMutable:!0,trixStoreKey:[\"progressElement\",this.attachment.id].join(\"/\")}}),e.appendChild(this.progressElement)),[ne(\"left\"),e,ne(\"right\")]}createCaptionElement(){const t=C({tagName:\"figcaption\",className:ee.attachmentCaption}),e=this.attachmentPiece.getCaption();if(e)t.classList.add(\"\".concat(ee.attachmentCaption,\"--edited\")),t.textContent=e;else{let e,i;const n=this.getCaptionConfig();if(n.name&&(e=this.attachment.getFilename()),n.size&&(i=this.attachment.getFormattedFilesize()),e){const i=C({tagName:\"span\",className:ee.attachmentName,textContent:e});t.appendChild(i)}if(i){e&&t.appendChild(document.createTextNode(\" \"));const n=C({tagName:\"span\",className:ee.attachmentSize,textContent:i});t.appendChild(n)}}return t}getClassName(){const t=[ee.attachment,\"\".concat(ee.attachment,\"--\").concat(this.attachment.getType())],e=this.attachment.getExtension();return e&&t.push(\"\".concat(ee.attachment,\"--\").concat(e)),t.join(\" \")}getData(){const t={trixAttachment:JSON.stringify(this.attachment),trixContentType:this.attachment.getContentType(),trixId:this.attachment.id},{attributes:e}=this.attachmentPiece;return e.isEmpty()||(t.trixAttributes=JSON.stringify(e)),this.attachment.isPending()&&(t.trixSerialize=!1),t}getHref(){if(!re(this.attachment.getContent(),\"a\"))return this.attachment.getHref()}getCaptionConfig(){var e;const i=this.attachment.getType(),n=Ct(null===(e=t[i])||void 0===e?void 0:e.caption);return\"file\"===i&&(n.name=!0),n}findProgressElement(){var t;return null===(t=this.findElement())||void 0===t?void 0:t.querySelector(\"progress\")}attachmentDidChangeUploadProgress(){const t=this.attachment.getUploadProgress(),e=this.findProgressElement();e&&(e.value=t)}}const ne=t=>C({tagName:\"span\",textContent:\"\\ufeff\",data:{trixCursorTarget:t,trixSerialize:!1}}),re=function(t,e){const i=C(\"div\");return i.innerHTML=t||\"\",i.querySelector(e)};class oe extends ie{constructor(){super(...arguments),this.attachment.previewDelegate=this}createContentNodes(){return this.image=C({tagName:\"img\",attributes:{src:\"\"},data:{trixMutable:!0}}),this.refresh(this.image),[this.image]}createCaptionElement(){const t=super.createCaptionElement(...arguments);return t.textContent||t.setAttribute(\"data-trix-placeholder\",s.captionPlaceholder),t}refresh(t){var e;t||(t=null===(e=this.findElement())||void 0===e?void 0:e.querySelector(\"img\"));if(t)return this.updateAttributesForImage(t)}updateAttributesForImage(t){const e=this.attachment.getURL(),i=this.attachment.getPreviewURL();if(t.src=i||e,i===e)t.removeAttribute(\"data-trix-serialized-attributes\");else{const i=JSON.stringify({src:e});t.setAttribute(\"data-trix-serialized-attributes\",i)}const n=this.attachment.getWidth(),r=this.attachment.getHeight();null!=n&&(t.width=n),null!=r&&(t.height=r);const o=[\"imageElement\",this.attachment.id,t.src,t.width,t.height].join(\"/\");t.dataset.trixStoreKey=o}attachmentDidChangeAttributes(){return this.refresh(this.image),this.refresh()}}class se extends Zt{constructor(){super(...arguments),this.piece=this.object,this.attributes=this.piece.getAttributes(),this.textConfig=this.options.textConfig,this.context=this.options.context,this.piece.attachment?this.attachment=this.piece.attachment:this.string=this.piece.toString()}createNodes(){let t=this.attachment?this.createAttachmentNodes():this.createStringNodes();const e=this.createElement();if(e){const i=function(t){for(;null!==(e=t)&&void 0!==e&&e.firstElementChild;){var e;t=t.firstElementChild}return t}(e);Array.from(t).forEach((t=>{i.appendChild(t)})),t=[e]}return t}createAttachmentNodes(){const t=this.attachment.isPreviewable()?oe:ie;return this.createChildView(t,this.piece.attachment,{piece:this.piece}).getNodes()}createStringNodes(){var t;if(null!==(t=this.textConfig)&&void 0!==t&&t.plaintext)return[document.createTextNode(this.string)];{const t=[],e=this.string.split(\"\\n\");for(let i=0;i<e.length;i++){const n=e[i];if(i>0){const e=C(\"br\");t.push(e)}if(n.length){const e=document.createTextNode(this.preserveSpaces(n));t.push(e)}}return t}}createElement(){let t,e,i;const n={};for(e in this.attributes){i=this.attributes[e];const o=dt(e);if(o){if(o.tagName){var r;const e=C(o.tagName);r?(r.appendChild(e),r=e):t=r=e}if(o.styleProperty&&(n[o.styleProperty]=i),o.style)for(e in o.style)i=o.style[e],n[e]=i}}if(Object.keys(n).length)for(e in t||(t=C(\"span\")),n)i=n[e],t.style[e]=i;return t}createContainerElement(){for(const t in this.attributes){const e=this.attributes[t],i=dt(t);if(i&&i.groupTagName){const n={};return n[t]=e,C(i.groupTagName,n)}}}preserveSpaces(t){return this.context.isLast&&(t=t.replace(/\\ $/,\"\u00A0\")),t=t.replace(/(\\S)\\ {3}(\\S)/g,\"$1 \".concat(\"\u00A0\",\" $2\")).replace(/\\ {2}/g,\"\".concat(\"\u00A0\",\" \")).replace(/\\ {2}/g,\" \".concat(\"\u00A0\")),(this.context.isFirst||this.context.followsWhitespace)&&(t=t.replace(/^\\ /,\"\u00A0\")),t}}class ae extends Zt{constructor(){super(...arguments),this.text=this.object,this.textConfig=this.options.textConfig}createNodes(){const t=[],e=Gt.groupObjects(this.getPieces()),i=e.length-1;for(let r=0;r<e.length;r++){const o=e[r],s={};0===r&&(s.isFirst=!0),r===i&&(s.isLast=!0),le(n)&&(s.followsWhitespace=!0);const a=this.findOrCreateCachedChildView(se,o,{textConfig:this.textConfig,context:s});t.push(...Array.from(a.getNodes()||[]));var n=o}return t}getPieces(){return Array.from(this.text.getPieces()).filter((t=>!t.hasAttribute(\"blockBreak\")))}}const le=t=>/\\s$/.test(null==t?void 0:t.toString()),{css:ce}=W;class he extends Zt{constructor(){super(...arguments),this.block=this.object,this.attributes=this.block.getAttributes()}createNodes(){const t=[document.createComment(\"block\")];if(this.block.isEmpty())t.push(C(\"br\"));else{var i;const e=null===(i=ht(this.block.getLastAttribute()))||void 0===i?void 0:i.text,n=this.findOrCreateCachedChildView(ae,this.block.text,{textConfig:e});t.push(...Array.from(n.getNodes()||[])),this.shouldAddExtraNewlineElement()&&t.push(C(\"br\"))}if(this.attributes.length)return t;{let i;const{tagName:n}=e.default;this.block.isRTL()&&(i={dir:\"rtl\"});const r=C({tagName:n,attributes:i});return t.forEach((t=>r.appendChild(t))),[r]}}createContainerElement(t){let e,i;const n=this.attributes[t],{tagName:r}=ht(n);if(0===t&&this.block.isRTL()&&(e={dir:\"rtl\"}),\"attachmentGallery\"===n){const t=this.block.getBlockBreakPosition();i=\"\".concat(ce.attachmentGallery,\" \").concat(ce.attachmentGallery,\"--\").concat(t)}return C({tagName:r,className:i,attributes:e})}shouldAddExtraNewlineElement(){return/\\n\\n$/.test(this.block.toString())}}class ue extends Zt{static render(t){const e=C(\"div\"),i=new this(t,{element:e});return i.render(),i.sync(),e}constructor(){super(...arguments),this.element=this.options.element,this.elementStore=new Xt,this.setDocument(this.object)}setDocument(t){t.isEqualTo(this.document)||(this.document=this.object=t)}render(){if(this.childViews=[],this.shadowElement=C(\"div\"),!this.document.isEmpty()){const t=Gt.groupObjects(this.document.getBlocks(),{asTree:!0});Array.from(t).forEach((t=>{const e=this.findOrCreateCachedChildView(he,t);Array.from(e.getNodes()).map((t=>this.shadowElement.appendChild(t)))}))}}isSynced(){return ge(this.shadowElement,this.element)}sync(){const t=this.createDocumentFragmentForSync();for(;this.element.lastChild;)this.element.removeChild(this.element.lastChild);return this.element.appendChild(t),this.didSync()}didSync(){return this.elementStore.reset(de(this.element)),yt((()=>this.garbageCollectCachedViews()))}createDocumentFragmentForSync(){const t=document.createDocumentFragment();return Array.from(this.shadowElement.childNodes).forEach((e=>{t.appendChild(e.cloneNode(!0))})),Array.from(de(t)).forEach((t=>{const e=this.elementStore.remove(t);e&&t.parentNode.replaceChild(e,t)})),t}}const de=t=>t.querySelectorAll(\"[data-trix-store-key]\"),ge=(t,e)=>me(t.innerHTML)===me(e.innerHTML),me=t=>t.replace(/&nbsp;/g,\" \");function pe(t){this.wrapped=t}function fe(t){var e,i;function n(e,i){try{var o=t[e](i),s=o.value,a=s instanceof pe;Promise.resolve(a?s.wrapped:s).then((function(t){a?n(\"return\"===e?\"return\":\"next\",t):r(o.done?\"return\":\"normal\",t)}),(function(t){n(\"throw\",t)}))}catch(t){r(\"throw\",t)}}function r(t,r){switch(t){case\"return\":e.resolve({value:r,done:!0});break;case\"throw\":e.reject(r);break;default:e.resolve({value:r,done:!1})}(e=e.next)?n(e.key,e.arg):i=null}this._invoke=function(t,r){return new Promise((function(o,s){var a={key:t,arg:r,resolve:o,reject:s,next:null};i?i=i.next=a:(e=i=a,n(t,r))}))},\"function\"!=typeof t.return&&(this.return=void 0)}function be(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}fe.prototype[\"function\"==typeof Symbol&&Symbol.asyncIterator||\"@@asyncIterator\"]=function(){return this},fe.prototype.next=function(t){return this._invoke(\"next\",t)},fe.prototype.throw=function(t){return this._invoke(\"throw\",t)},fe.prototype.return=function(t){return this._invoke(\"return\",t)};class ve extends tt{static registerType(t,e){e.type=t,this.types[t]=e}static fromJSON(t){const e=this.types[t.type];if(e)return e.fromJSON(t)}constructor(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(...arguments),this.attributes=Vt.box(e)}copyWithAttributes(t){return new this.constructor(this.getValue(),t)}copyWithAdditionalAttributes(t){return this.copyWithAttributes(this.attributes.merge(t))}copyWithoutAttribute(t){return this.copyWithAttributes(this.attributes.remove(t))}copy(){return this.copyWithAttributes(this.attributes)}getAttribute(t){return this.attributes.get(t)}getAttributesHash(){return this.attributes}getAttributes(){return this.attributes.toObject()}hasAttribute(t){return this.attributes.has(t)}hasSameStringValueAsPiece(t){return t&&this.toString()===t.toString()}hasSameAttributesAsPiece(t){return t&&(this.attributes===t.attributes||this.attributes.isEqualTo(t.attributes))}isBlockBreak(){return!1}isEqualTo(t){return super.isEqualTo(...arguments)||this.hasSameConstructorAs(t)&&this.hasSameStringValueAsPiece(t)&&this.hasSameAttributesAsPiece(t)}isEmpty(){return 0===this.length}isSerializable(){return!0}toJSON(){return{type:this.constructor.type,attributes:this.getAttributes()}}contentsForInspection(){return{type:this.constructor.type,attributes:this.attributes.inspect()}}canBeGrouped(){return this.hasAttribute(\"href\")}canBeGroupedWith(t){return this.getAttribute(\"href\")===t.getAttribute(\"href\")}getLength(){return this.length}canBeConsolidatedWith(t){return!1}}be(ve,\"types\",{});class Ae extends Qt{constructor(t){super(...arguments),this.url=t}perform(t){const e=new Image;e.onload=()=>(e.width=this.width=e.naturalWidth,e.height=this.height=e.naturalHeight,t(!0,e)),e.onerror=()=>t(!1),e.src=this.url}}class xe extends tt{static attachmentForFile(t){const e=new this(this.attributesForFile(t));return e.setFile(t),e}static attributesForFile(t){return new Vt({filename:t.name,filesize:t.size,contentType:t.type})}static fromJSON(t){return new this(t)}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};super(t),this.releaseFile=this.releaseFile.bind(this),this.attributes=Vt.box(t),this.didChangeAttributes()}getAttribute(t){return this.attributes.get(t)}hasAttribute(t){return this.attributes.has(t)}getAttributes(){return this.attributes.toObject()}setAttributes(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const e=this.attributes.merge(t);var i,n,r,o;if(!this.attributes.isEqualTo(e))return this.attributes=e,this.didChangeAttributes(),null===(i=this.previewDelegate)||void 0===i||null===(n=i.attachmentDidChangeAttributes)||void 0===n||n.call(i,this),null===(r=this.delegate)||void 0===r||null===(o=r.attachmentDidChangeAttributes)||void 0===o?void 0:o.call(r,this)}didChangeAttributes(){if(this.isPreviewable())return this.preloadURL()}isPending(){return null!=this.file&&!(this.getURL()||this.getHref())}isPreviewable(){return this.attributes.has(\"previewable\")?this.attributes.get(\"previewable\"):xe.previewablePattern.test(this.getContentType())}getType(){return this.hasContent()?\"content\":this.isPreviewable()?\"preview\":\"file\"}getURL(){return this.attributes.get(\"url\")}getHref(){return this.attributes.get(\"href\")}getFilename(){return this.attributes.get(\"filename\")||\"\"}getFilesize(){return this.attributes.get(\"filesize\")}getFormattedFilesize(){const t=this.attributes.get(\"filesize\");return\"number\"==typeof t?l.formatter(t):\"\"}getExtension(){var t;return null===(t=this.getFilename().match(/\\.(\\w+)$/))||void 0===t?void 0:t[1].toLowerCase()}getContentType(){return this.attributes.get(\"contentType\")}hasContent(){return this.attributes.has(\"content\")}getContent(){return this.attributes.get(\"content\")}getWidth(){return this.attributes.get(\"width\")}getHeight(){return this.attributes.get(\"height\")}getFile(){return this.file}setFile(t){if(this.file=t,this.isPreviewable())return this.preloadFile()}releaseFile(){this.releasePreloadedFile(),this.file=null}getUploadProgress(){return null!=this.uploadProgress?this.uploadProgress:0}setUploadProgress(t){var e,i;if(this.uploadProgress!==t)return this.uploadProgress=t,null===(e=this.uploadProgressDelegate)||void 0===e||null===(i=e.attachmentDidChangeUploadProgress)||void 0===i?void 0:i.call(e,this)}toJSON(){return this.getAttributes()}getCacheKey(){return[super.getCacheKey(...arguments),this.attributes.getCacheKey(),this.getPreviewURL()].join(\"/\")}getPreviewURL(){return this.previewURL||this.preloadingURL}setPreviewURL(t){var e,i,n,r;if(t!==this.getPreviewURL())return this.previewURL=t,null===(e=this.previewDelegate)||void 0===e||null===(i=e.attachmentDidChangeAttributes)||void 0===i||i.call(e,this),null===(n=this.delegate)||void 0===n||null===(r=n.attachmentDidChangePreviewURL)||void 0===r?void 0:r.call(n,this)}preloadURL(){return this.preload(this.getURL(),this.releaseFile)}preloadFile(){if(this.file)return this.fileObjectURL=URL.createObjectURL(this.file),this.preload(this.fileObjectURL)}releasePreloadedFile(){this.fileObjectURL&&(URL.revokeObjectURL(this.fileObjectURL),this.fileObjectURL=null)}preload(t,e){if(t&&t!==this.getPreviewURL()){this.preloadingURL=t;return new Ae(t).then((i=>{let{width:n,height:r}=i;return this.getWidth()&&this.getHeight()||this.setAttributes({width:n,height:r}),this.preloadingURL=null,this.setPreviewURL(t),null==e?void 0:e()})).catch((()=>(this.preloadingURL=null,null==e?void 0:e())))}}}be(xe,\"previewablePattern\",/^image(\\/(gif|png|jpe?g)|$)/);class ye extends ve{static fromJSON(t){return new this(xe.fromJSON(t.attachment),t.attributes)}constructor(t){super(...arguments),this.attachment=t,this.length=1,this.ensureAttachmentExclusivelyHasAttribute(\"href\"),this.attachment.hasContent()||this.removeProhibitedAttributes()}ensureAttachmentExclusivelyHasAttribute(t){this.hasAttribute(t)&&(this.attachment.hasAttribute(t)||this.attachment.setAttributes(this.attributes.slice([t])),this.attributes=this.attributes.remove(t))}removeProhibitedAttributes(){const t=this.attributes.slice(ye.permittedAttributes);t.isEqualTo(this.attributes)||(this.attributes=t)}getValue(){return this.attachment}isSerializable(){return!this.attachment.isPending()}getCaption(){return this.attributes.get(\"caption\")||\"\"}isEqualTo(t){var e;return super.isEqualTo(t)&&this.attachment.id===(null==t||null===(e=t.attachment)||void 0===e?void 0:e.id)}toString(){return\"\uFFFC\"}toJSON(){const t=super.toJSON(...arguments);return t.attachment=this.attachment,t}getCacheKey(){return[super.getCacheKey(...arguments),this.attachment.getCacheKey()].join(\"/\")}toConsole(){return JSON.stringify(this.toString())}}be(ye,\"permittedAttributes\",[\"caption\",\"presentation\"]),ve.registerType(\"attachment\",ye);class Ce extends ve{static fromJSON(t){return new this(t.string,t.attributes)}constructor(t){super(...arguments),this.string=(t=>t.replace(/\\r\\n/g,\"\\n\"))(t),this.length=this.string.length}getValue(){return this.string}toString(){return this.string.toString()}isBlockBreak(){return\"\\n\"===this.toString()&&!0===this.getAttribute(\"blockBreak\")}toJSON(){const t=super.toJSON(...arguments);return t.string=this.string,t}canBeConsolidatedWith(t){return t&&this.hasSameConstructorAs(t)&&this.hasSameAttributesAsPiece(t)}consolidateWith(t){return new this.constructor(this.toString()+t.toString(),this.attributes)}splitAtOffset(t){let e,i;return 0===t?(e=null,i=this):t===this.length?(e=this,i=null):(e=new this.constructor(this.string.slice(0,t),this.attributes),i=new this.constructor(this.string.slice(t),this.attributes)),[e,i]}toConsole(){let{string:t}=this;return t.length>15&&(t=t.slice(0,14)+\"\u2026\"),JSON.stringify(t.toString())}}ve.registerType(\"string\",Ce);class Re extends tt{static box(t){return t instanceof this?t:new this(t)}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];super(...arguments),this.objects=t.slice(0),this.length=this.objects.length}indexOf(t){return this.objects.indexOf(t)}splice(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return new this.constructor(it(this.objects,...e))}eachObject(t){return this.objects.map(((e,i)=>t(e,i)))}insertObjectAtIndex(t,e){return this.splice(e,0,t)}insertSplittableListAtIndex(t,e){return this.splice(e,0,...t.objects)}insertSplittableListAtPosition(t,e){const[i,n]=this.splitObjectAtPosition(e);return new this.constructor(i).insertSplittableListAtIndex(t,n)}editObjectAtIndex(t,e){return this.replaceObjectAtIndex(e(this.objects[t]),t)}replaceObjectAtIndex(t,e){return this.splice(e,1,t)}removeObjectAtIndex(t){return this.splice(t,1)}getObjectAtIndex(t){return this.objects[t]}getSplittableListInRange(t){const[e,i,n]=this.splitObjectsAtRange(t);return new this.constructor(e.slice(i,n+1))}selectSplittableList(t){const e=this.objects.filter((e=>t(e)));return new this.constructor(e)}removeObjectsInRange(t){const[e,i,n]=this.splitObjectsAtRange(t);return new this.constructor(e).splice(i,n-i+1)}transformObjectsInRange(t,e){const[i,n,r]=this.splitObjectsAtRange(t),o=i.map(((t,i)=>n<=i&&i<=r?e(t):t));return new this.constructor(o)}splitObjectsAtRange(t){let e,[i,n,r]=this.splitObjectAtPosition(Se(t));return[i,e]=new this.constructor(i).splitObjectAtPosition(ke(t)+r),[i,n,e-1]}getObjectAtPosition(t){const{index:e}=this.findIndexAndOffsetAtPosition(t);return this.objects[e]}splitObjectAtPosition(t){let e,i;const{index:n,offset:r}=this.findIndexAndOffsetAtPosition(t),o=this.objects.slice(0);if(null!=n)if(0===r)e=n,i=0;else{const t=this.getObjectAtIndex(n),[s,a]=t.splitAtOffset(r);o.splice(n,1,s,a),e=n+1,i=s.getLength()-r}else e=o.length,i=0;return[o,e,i]}consolidate(){const t=[];let e=this.objects[0];return this.objects.slice(1).forEach((i=>{var n,r;null!==(n=(r=e).canBeConsolidatedWith)&&void 0!==n&&n.call(r,i)?e=e.consolidateWith(i):(t.push(e),e=i)})),e&&t.push(e),new this.constructor(t)}consolidateFromIndexToIndex(t,e){const i=this.objects.slice(0).slice(t,e+1),n=new this.constructor(i).consolidate().toArray();return this.splice(t,i.length,...n)}findIndexAndOffsetAtPosition(t){let e,i=0;for(e=0;e<this.objects.length;e++){const n=i+this.objects[e].getLength();if(i<=t&&t<n)return{index:e,offset:t-i};i=n}return{index:null,offset:null}}findPositionAtIndexAndOffset(t,e){let i=0;for(let n=0;n<this.objects.length;n++){const r=this.objects[n];if(n<t)i+=r.getLength();else if(n===t){i+=e;break}}return i}getEndPosition(){return null==this.endPosition&&(this.endPosition=0,this.objects.forEach((t=>this.endPosition+=t.getLength()))),this.endPosition}toString(){return this.objects.join(\"\")}toArray(){return this.objects.slice(0)}toJSON(){return this.toArray()}isEqualTo(t){return super.isEqualTo(...arguments)||Ee(this.objects,null==t?void 0:t.objects)}contentsForInspection(){return{objects:\"[\".concat(this.objects.map((t=>t.inspect())).join(\", \"),\"]\")}}}const Ee=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(t.length!==e.length)return!1;let i=!0;for(let n=0;n<t.length;n++){const r=t[n];i&&!r.isEqualTo(e[n])&&(i=!1)}return i},Se=t=>t[0],ke=t=>t[1];class Le extends tt{static textForAttachmentWithAttributes(t,e){return new this([new ye(t,e)])}static textForStringWithAttributes(t,e){return new this([new Ce(t,e)])}static fromJSON(t){return new this(Array.from(t).map((t=>ve.fromJSON(t))))}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];super(...arguments);const e=t.filter((t=>!t.isEmpty()));this.pieceList=new Re(e)}copy(){return this.copyWithPieceList(this.pieceList)}copyWithPieceList(t){return new this.constructor(t.consolidate().toArray())}copyUsingObjectMap(t){const e=this.getPieces().map((e=>t.find(e)||e));return new this.constructor(e)}appendText(t){return this.insertTextAtPosition(t,this.getLength())}insertTextAtPosition(t,e){return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(t.pieceList,e))}removeTextAtRange(t){return this.copyWithPieceList(this.pieceList.removeObjectsInRange(t))}replaceTextAtRange(t,e){return this.removeTextAtRange(e).insertTextAtPosition(t,e[0])}moveTextFromRangeToPosition(t,e){if(t[0]<=e&&e<=t[1])return;const i=this.getTextAtRange(t),n=i.getLength();return t[0]<e&&(e-=n),this.removeTextAtRange(t).insertTextAtPosition(i,e)}addAttributeAtRange(t,e,i){const n={};return n[t]=e,this.addAttributesAtRange(n,i)}addAttributesAtRange(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,(e=>e.copyWithAdditionalAttributes(t))))}removeAttributeAtRange(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,(e=>e.copyWithoutAttribute(t))))}setAttributesAtRange(t,e){return this.copyWithPieceList(this.pieceList.transformObjectsInRange(e,(e=>e.copyWithAttributes(t))))}getAttributesAtPosition(t){var e;return(null===(e=this.pieceList.getObjectAtPosition(t))||void 0===e?void 0:e.getAttributes())||{}}getCommonAttributes(){const t=Array.from(this.pieceList.toArray()).map((t=>t.getAttributes()));return Vt.fromCommonAttributesOfObjects(t).toObject()}getCommonAttributesAtRange(t){return this.getTextAtRange(t).getCommonAttributes()||{}}getExpandedRangeForAttributeAtOffset(t,e){let i,n=i=e;const r=this.getLength();for(;n>0&&this.getCommonAttributesAtRange([n-1,i])[t];)n--;for(;i<r&&this.getCommonAttributesAtRange([e,i+1])[t];)i++;return[n,i]}getTextAtRange(t){return this.copyWithPieceList(this.pieceList.getSplittableListInRange(t))}getStringAtRange(t){return this.pieceList.getSplittableListInRange(t).toString()}getStringAtPosition(t){return this.getStringAtRange([t,t+1])}startsWithString(t){return this.getStringAtRange([0,t.length])===t}endsWithString(t){const e=this.getLength();return this.getStringAtRange([e-t.length,e])===t}getAttachmentPieces(){return this.pieceList.toArray().filter((t=>!!t.attachment))}getAttachments(){return this.getAttachmentPieces().map((t=>t.attachment))}getAttachmentAndPositionById(t){let e=0;for(const n of this.pieceList.toArray()){var i;if((null===(i=n.attachment)||void 0===i?void 0:i.id)===t)return{attachment:n.attachment,position:e};e+=n.length}return{attachment:null,position:null}}getAttachmentById(t){const{attachment:e}=this.getAttachmentAndPositionById(t);return e}getRangeOfAttachment(t){const e=this.getAttachmentAndPositionById(t.id),i=e.position;if(t=e.attachment)return[i,i+1]}updateAttributesForAttachment(t,e){const i=this.getRangeOfAttachment(e);return i?this.addAttributesAtRange(t,i):this}getLength(){return this.pieceList.getEndPosition()}isEmpty(){return 0===this.getLength()}isEqualTo(t){var e;return super.isEqualTo(t)||(null==t||null===(e=t.pieceList)||void 0===e?void 0:e.isEqualTo(this.pieceList))}isBlockBreak(){return 1===this.getLength()&&this.pieceList.getObjectAtIndex(0).isBlockBreak()}eachPiece(t){return this.pieceList.eachObject(t)}getPieces(){return this.pieceList.toArray()}getPieceAtPosition(t){return this.pieceList.getObjectAtPosition(t)}contentsForInspection(){return{pieceList:this.pieceList.inspect()}}toSerializableText(){const t=this.pieceList.selectSplittableList((t=>t.isSerializable()));return this.copyWithPieceList(t)}toString(){return this.pieceList.toString()}toJSON(){return this.pieceList.toJSON()}toConsole(){return JSON.stringify(this.pieceList.toArray().map((t=>JSON.parse(t.toConsole()))))}getDirection(){return rt(this.toString())}isRTL(){return\"rtl\"===this.getDirection()}}class De extends tt{static fromJSON(t){return new this(Le.fromJSON(t.text),t.attributes)}constructor(t,e){super(...arguments),this.text=we(t||new Le),this.attributes=e||[]}isEmpty(){return this.text.isBlockBreak()}isEqualTo(t){return!!super.isEqualTo(t)||this.text.isEqualTo(null==t?void 0:t.text)&&et(this.attributes,null==t?void 0:t.attributes)}copyWithText(t){return new De(t,this.attributes)}copyWithoutText(){return this.copyWithText(null)}copyWithAttributes(t){return new De(this.text,t)}copyWithoutAttributes(){return this.copyWithAttributes(null)}copyUsingObjectMap(t){const e=t.find(this.text);return e?this.copyWithText(e):this.copyWithText(this.text.copyUsingObjectMap(t))}addAttribute(t){const e=this.attributes.concat(Ne(t));return this.copyWithAttributes(e)}removeAttribute(t){const{listAttribute:e}=ht(t),i=Me(Me(this.attributes,t),e);return this.copyWithAttributes(i)}removeLastAttribute(){return this.removeAttribute(this.getLastAttribute())}getLastAttribute(){return Oe(this.attributes)}getAttributes(){return this.attributes.slice(0)}getAttributeLevel(){return this.attributes.length}getAttributeAtLevel(t){return this.attributes[t-1]}hasAttribute(t){return this.attributes.includes(t)}hasAttributes(){return this.getAttributeLevel()>0}getLastNestableAttribute(){return Oe(this.getNestableAttributes())}getNestableAttributes(){return this.attributes.filter((t=>ht(t).nestable))}getNestingLevel(){return this.getNestableAttributes().length}decreaseNestingLevel(){const t=this.getLastNestableAttribute();return t?this.removeAttribute(t):this}increaseNestingLevel(){const t=this.getLastNestableAttribute();if(t){const e=this.attributes.lastIndexOf(t),i=it(this.attributes,e+1,0,...Ne(t));return this.copyWithAttributes(i)}return this}getListItemAttributes(){return this.attributes.filter((t=>ht(t).listAttribute))}isListItem(){var t;return null===(t=ht(this.getLastAttribute()))||void 0===t?void 0:t.listAttribute}isTerminalBlock(){var t;return null===(t=ht(this.getLastAttribute()))||void 0===t?void 0:t.terminal}breaksOnReturn(){var t;return null===(t=ht(this.getLastAttribute()))||void 0===t?void 0:t.breakOnReturn}findLineBreakInDirectionFromPosition(t,e){const i=this.toString();let n;switch(t){case\"forward\":n=i.indexOf(\"\\n\",e);break;case\"backward\":n=i.slice(0,e).lastIndexOf(\"\\n\")}if(-1!==n)return n}contentsForInspection(){return{text:this.text.inspect(),attributes:this.attributes}}toString(){return this.text.toString()}toJSON(){return{text:this.text,attributes:this.attributes}}getDirection(){return this.text.getDirection()}isRTL(){return this.text.isRTL()}getLength(){return this.text.getLength()}canBeConsolidatedWith(t){return!this.hasAttributes()&&!t.hasAttributes()&&this.getDirection()===t.getDirection()}consolidateWith(t){const e=Le.textForStringWithAttributes(\"\\n\"),i=this.getTextWithoutBlockBreak().appendText(e);return this.copyWithText(i.appendText(t.text))}splitAtOffset(t){let e,i;return 0===t?(e=null,i=this):t===this.getLength()?(e=this,i=null):(e=this.copyWithText(this.text.getTextAtRange([0,t])),i=this.copyWithText(this.text.getTextAtRange([t,this.getLength()]))),[e,i]}getBlockBreakPosition(){return this.text.getLength()-1}getTextWithoutBlockBreak(){return Ie(this.text)?this.text.getTextAtRange([0,this.getBlockBreakPosition()]):this.text.copy()}canBeGrouped(t){return this.attributes[t]}canBeGroupedWith(t,i){const n=t.getAttributes(),r=n[i],o=this.attributes[i];return o===r&&!(!1===ht(o).group&&!(()=>{if(!lt){lt=[];for(const t in e){const{listAttribute:i}=e[t];null!=i&&lt.push(i)}}return lt})().includes(n[i+1]))&&(this.getDirection()===t.getDirection()||t.isEmpty())}}const we=function(t){return t=Te(t),t=Be(t)},Te=function(t){let e=!1;const i=t.getPieces();let n=i.slice(0,i.length-1);const r=i[i.length-1];return r?(n=n.map((t=>t.isBlockBreak()?(e=!0,Pe(t)):t)),e?new Le([...n,r]):t):t},Fe=Le.textForStringWithAttributes(\"\\n\",{blockBreak:!0}),Be=function(t){return Ie(t)?t:t.appendText(Fe)},Ie=function(t){const e=t.getLength();if(0===e)return!1;return t.getTextAtRange([e-1,e]).isBlockBreak()},Pe=t=>t.copyWithoutAttribute(\"blockBreak\"),Ne=function(t){const{listAttribute:e}=ht(t);return e?[e,t]:[t]},Oe=t=>t.slice(-1)[0],Me=function(t,e){const i=t.lastIndexOf(e);return-1===i?t:it(t,i,1)};class je extends tt{static fromJSON(t){return new this(Array.from(t).map((t=>De.fromJSON(t))))}static fromString(t,e){const i=Le.textForStringWithAttributes(t,e);return new this([new De(i)])}constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];super(...arguments),0===t.length&&(t=[new De]),this.blockList=Re.box(t)}isEmpty(){const t=this.getBlockAtIndex(0);return 1===this.blockList.length&&t.isEmpty()&&!t.hasAttributes()}copy(){const t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}).consolidateBlocks?this.blockList.consolidate().toArray():this.blockList.toArray();return new this.constructor(t)}copyUsingObjectsFromDocument(t){const e=new $t(t.getObjects());return this.copyUsingObjectMap(e)}copyUsingObjectMap(t){const e=this.getBlocks().map((e=>t.find(e)||e.copyUsingObjectMap(t)));return new this.constructor(e)}copyWithBaseBlockAttributes(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const e=this.getBlocks().map((e=>{const i=t.concat(e.getAttributes());return e.copyWithAttributes(i)}));return new this.constructor(e)}replaceBlock(t,e){const i=this.blockList.indexOf(t);return-1===i?this:new this.constructor(this.blockList.replaceObjectAtIndex(e,i))}insertDocumentAtRange(t,e){const{blockList:i}=t;e=Et(e);let[n]=e;const{index:r,offset:o}=this.locationFromPosition(n);let s=this;const a=this.getBlockAtPosition(n);return St(e)&&a.isEmpty()&&!a.hasAttributes()?s=new this.constructor(s.blockList.removeObjectAtIndex(r)):a.getBlockBreakPosition()===o&&n++,s=s.removeTextAtRange(e),new this.constructor(s.blockList.insertSplittableListAtPosition(i,n))}mergeDocumentAtRange(t,e){let i,n;e=Et(e);const[r]=e,o=this.locationFromPosition(r),s=this.getBlockAtIndex(o.index).getAttributes(),a=t.getBaseBlockAttributes(),l=s.slice(-a.length);if(et(a,l)){const e=s.slice(0,-a.length);i=t.copyWithBaseBlockAttributes(e)}else i=t.copy({consolidateBlocks:!0}).copyWithBaseBlockAttributes(s);const c=i.getBlockCount(),h=i.getBlockAtIndex(0);if(et(s,h.getAttributes())){const t=h.getTextWithoutBlockBreak();if(n=this.insertTextAtRange(t,e),c>1){i=new this.constructor(i.getBlocks().slice(1));const e=r+t.getLength();n=n.insertDocumentAtRange(i,e)}}else n=this.insertDocumentAtRange(i,e);return n}insertTextAtRange(t,e){e=Et(e);const[i]=e,{index:n,offset:r}=this.locationFromPosition(i),o=this.removeTextAtRange(e);return new this.constructor(o.blockList.editObjectAtIndex(n,(e=>e.copyWithText(e.text.insertTextAtPosition(t,r)))))}removeTextAtRange(t){let e;t=Et(t);const[i,n]=t;if(St(t))return this;const[r,o]=Array.from(this.locationRangeFromRange(t)),s=r.index,a=r.offset,l=this.getBlockAtIndex(s),c=o.index,h=o.offset,u=this.getBlockAtIndex(c);if(n-i==1&&l.getBlockBreakPosition()===a&&u.getBlockBreakPosition()!==h&&\"\\n\"===u.text.getStringAtPosition(h))e=this.blockList.editObjectAtIndex(c,(t=>t.copyWithText(t.text.removeTextAtRange([h,h+1]))));else{let t;const i=l.text.getTextAtRange([0,a]),n=u.text.getTextAtRange([h,u.getLength()]),r=i.appendText(n);t=s!==c&&0===a&&l.getAttributeLevel()>=u.getAttributeLevel()?u.copyWithText(r):l.copyWithText(r);const o=c+1-s;e=this.blockList.splice(s,o,t)}return new this.constructor(e)}moveTextFromRangeToPosition(t,e){let i;t=Et(t);const[n,r]=t;if(n<=e&&e<=r)return this;let o=this.getDocumentAtRange(t),s=this.removeTextAtRange(t);const a=n<e;a&&(e-=o.getLength());const[l,...c]=o.getBlocks();return 0===c.length?(i=l.getTextWithoutBlockBreak(),a&&(e+=1)):i=l.text,s=s.insertTextAtRange(i,e),0===c.length?s:(o=new this.constructor(c),e+=i.getLength(),s.insertDocumentAtRange(o,e))}addAttributeAtRange(t,e,i){let{blockList:n}=this;return this.eachBlockAtRange(i,((i,r,o)=>n=n.editObjectAtIndex(o,(function(){return ht(t)?i.addAttribute(t,e):r[0]===r[1]?i:i.copyWithText(i.text.addAttributeAtRange(t,e,r))})))),new this.constructor(n)}addAttribute(t,e){let{blockList:i}=this;return this.eachBlock(((n,r)=>i=i.editObjectAtIndex(r,(()=>n.addAttribute(t,e))))),new this.constructor(i)}removeAttributeAtRange(t,e){let{blockList:i}=this;return this.eachBlockAtRange(e,(function(e,n,r){ht(t)?i=i.editObjectAtIndex(r,(()=>e.removeAttribute(t))):n[0]!==n[1]&&(i=i.editObjectAtIndex(r,(()=>e.copyWithText(e.text.removeAttributeAtRange(t,n)))))})),new this.constructor(i)}updateAttributesForAttachment(t,e){const i=this.getRangeOfAttachment(e),[n]=Array.from(i),{index:r}=this.locationFromPosition(n),o=this.getTextAtIndex(r);return new this.constructor(this.blockList.editObjectAtIndex(r,(i=>i.copyWithText(o.updateAttributesForAttachment(t,e)))))}removeAttributeForAttachment(t,e){const i=this.getRangeOfAttachment(e);return this.removeAttributeAtRange(t,i)}insertBlockBreakAtRange(t){let e;t=Et(t);const[i]=t,{offset:n}=this.locationFromPosition(i),r=this.removeTextAtRange(t);return 0===n&&(e=[new De]),new this.constructor(r.blockList.insertSplittableListAtPosition(new Re(e),i))}applyBlockAttributeAtRange(t,e,i){const n=this.expandRangeToLineBreaksAndSplitBlocks(i);let r=n.document;i=n.range;const o=ht(t);if(o.listAttribute){r=r.removeLastListAttributeAtRange(i,{exceptAttributeName:t});const e=r.convertLineBreaksToBlockBreaksInRange(i);r=e.document,i=e.range}else r=o.exclusive?r.removeBlockAttributesAtRange(i):o.terminal?r.removeLastTerminalAttributeAtRange(i):r.consolidateBlocksAtRange(i);return r.addAttributeAtRange(t,e,i)}removeLastListAttributeAtRange(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{blockList:i}=this;return this.eachBlockAtRange(t,(function(t,n,r){const o=t.getLastAttribute();o&&ht(o).listAttribute&&o!==e.exceptAttributeName&&(i=i.editObjectAtIndex(r,(()=>t.removeAttribute(o))))})),new this.constructor(i)}removeLastTerminalAttributeAtRange(t){let{blockList:e}=this;return this.eachBlockAtRange(t,(function(t,i,n){const r=t.getLastAttribute();r&&ht(r).terminal&&(e=e.editObjectAtIndex(n,(()=>t.removeAttribute(r))))})),new this.constructor(e)}removeBlockAttributesAtRange(t){let{blockList:e}=this;return this.eachBlockAtRange(t,(function(t,i,n){t.hasAttributes()&&(e=e.editObjectAtIndex(n,(()=>t.copyWithoutAttributes())))})),new this.constructor(e)}expandRangeToLineBreaksAndSplitBlocks(t){let e;t=Et(t);let[i,n]=t;const r=this.locationFromPosition(i),o=this.locationFromPosition(n);let s=this;const a=s.getBlockAtIndex(r.index);if(r.offset=a.findLineBreakInDirectionFromPosition(\"backward\",r.offset),null!=r.offset&&(e=s.positionFromLocation(r),s=s.insertBlockBreakAtRange([e,e+1]),o.index+=1,o.offset-=s.getBlockAtIndex(r.index).getLength(),r.index+=1),r.offset=0,0===o.offset&&o.index>r.index)o.index-=1,o.offset=s.getBlockAtIndex(o.index).getBlockBreakPosition();else{const t=s.getBlockAtIndex(o.index);\"\\n\"===t.text.getStringAtRange([o.offset-1,o.offset])?o.offset-=1:o.offset=t.findLineBreakInDirectionFromPosition(\"forward\",o.offset),o.offset!==t.getBlockBreakPosition()&&(e=s.positionFromLocation(o),s=s.insertBlockBreakAtRange([e,e+1]))}return i=s.positionFromLocation(r),n=s.positionFromLocation(o),{document:s,range:t=Et([i,n])}}convertLineBreaksToBlockBreaksInRange(t){t=Et(t);let[e]=t;const i=this.getStringAtRange(t).slice(0,-1);let n=this;return i.replace(/.*?\\n/g,(function(t){e+=t.length,n=n.insertBlockBreakAtRange([e-1,e])})),{document:n,range:t}}consolidateBlocksAtRange(t){t=Et(t);const[e,i]=t,n=this.locationFromPosition(e).index,r=this.locationFromPosition(i).index;return new this.constructor(this.blockList.consolidateFromIndexToIndex(n,r))}getDocumentAtRange(t){t=Et(t);const e=this.blockList.getSplittableListInRange(t).toArray();return new this.constructor(e)}getStringAtRange(t){let e;const i=t=Et(t);return i[i.length-1]!==this.getLength()&&(e=-1),this.getDocumentAtRange(t).toString().slice(0,e)}getBlockAtIndex(t){return this.blockList.getObjectAtIndex(t)}getBlockAtPosition(t){const{index:e}=this.locationFromPosition(t);return this.getBlockAtIndex(e)}getTextAtIndex(t){var e;return null===(e=this.getBlockAtIndex(t))||void 0===e?void 0:e.text}getTextAtPosition(t){const{index:e}=this.locationFromPosition(t);return this.getTextAtIndex(e)}getPieceAtPosition(t){const{index:e,offset:i}=this.locationFromPosition(t);return this.getTextAtIndex(e).getPieceAtPosition(i)}getCharacterAtPosition(t){const{index:e,offset:i}=this.locationFromPosition(t);return this.getTextAtIndex(e).getStringAtRange([i,i+1])}getLength(){return this.blockList.getEndPosition()}getBlocks(){return this.blockList.toArray()}getBlockCount(){return this.blockList.length}getEditCount(){return this.editCount}eachBlock(t){return this.blockList.eachObject(t)}eachBlockAtRange(t,e){let i,n;t=Et(t);const[r,o]=t,s=this.locationFromPosition(r),a=this.locationFromPosition(o);if(s.index===a.index)return i=this.getBlockAtIndex(s.index),n=[s.offset,a.offset],e(i,n,s.index);for(let t=s.index;t<=a.index;t++)if(i=this.getBlockAtIndex(t),i){switch(t){case s.index:n=[s.offset,i.text.getLength()];break;case a.index:n=[0,a.offset];break;default:n=[0,i.text.getLength()]}e(i,n,t)}}getCommonAttributesAtRange(t){t=Et(t);const[e]=t;if(St(t))return this.getCommonAttributesAtPosition(e);{const e=[],i=[];return this.eachBlockAtRange(t,(function(t,n){if(n[0]!==n[1])return e.push(t.text.getCommonAttributesAtRange(n)),i.push(We(t))})),Vt.fromCommonAttributesOfObjects(e).merge(Vt.fromCommonAttributesOfObjects(i)).toObject()}}getCommonAttributesAtPosition(t){let e,i;const{index:n,offset:r}=this.locationFromPosition(t),o=this.getBlockAtIndex(n);if(!o)return{};const s=We(o),a=o.text.getAttributesAtPosition(r),l=o.text.getAttributesAtPosition(r-1),c=Object.keys(O).filter((t=>O[t].inheritable));for(e in l)i=l[e],(i===a[e]||c.includes(e))&&(s[e]=i);return s}getRangeOfCommonAttributeAtPosition(t,e){const{index:i,offset:n}=this.locationFromPosition(e),r=this.getTextAtIndex(i),[o,s]=Array.from(r.getExpandedRangeForAttributeAtOffset(t,n)),a=this.positionFromLocation({index:i,offset:o}),l=this.positionFromLocation({index:i,offset:s});return Et([a,l])}getBaseBlockAttributes(){let t=this.getBlockAtIndex(0).getAttributes();for(let e=1;e<this.getBlockCount();e++){const i=this.getBlockAtIndex(e).getAttributes(),n=Math.min(t.length,i.length);t=(()=>{const e=[];for(let r=0;r<n&&i[r]===t[r];r++)e.push(i[r]);return e})()}return t}getAttachmentById(t){for(const e of this.getAttachments())if(e.id===t)return e}getAttachmentPieces(){let t=[];return this.blockList.eachObject((e=>{let{text:i}=e;return t=t.concat(i.getAttachmentPieces())})),t}getAttachments(){return this.getAttachmentPieces().map((t=>t.attachment))}getRangeOfAttachment(t){let e=0;const i=this.blockList.toArray();for(let n=0;n<i.length;n++){const{text:r}=i[n],o=r.getRangeOfAttachment(t);if(o)return Et([e+o[0],e+o[1]]);e+=r.getLength()}}getLocationRangeOfAttachment(t){const e=this.getRangeOfAttachment(t);return this.locationRangeFromRange(e)}getAttachmentPieceForAttachment(t){for(const e of this.getAttachmentPieces())if(e.attachment===t)return e}findRangesForBlockAttribute(t){let e=0;const i=[];return this.getBlocks().forEach((n=>{const r=n.getLength();n.hasAttribute(t)&&i.push([e,e+r]),e+=r})),i}findRangesForTextAttribute(t){let{withValue:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=0,n=[];const r=[];return this.getPieces().forEach((o=>{const s=o.getLength();(function(i){return e?i.getAttribute(t)===e:i.hasAttribute(t)})(o)&&(n[1]===i?n[1]=i+s:r.push(n=[i,i+s])),i+=s})),r}locationFromPosition(t){const e=this.blockList.findIndexAndOffsetAtPosition(Math.max(0,t));if(null!=e.index)return e;{const t=this.getBlocks();return{index:t.length-1,offset:t[t.length-1].getLength()}}}positionFromLocation(t){return this.blockList.findPositionAtIndexAndOffset(t.index,t.offset)}locationRangeFromPosition(t){return Et(this.locationFromPosition(t))}locationRangeFromRange(t){if(!(t=Et(t)))return;const[e,i]=Array.from(t),n=this.locationFromPosition(e),r=this.locationFromPosition(i);return Et([n,r])}rangeFromLocationRange(t){let e;t=Et(t);const i=this.positionFromLocation(t[0]);return St(t)||(e=this.positionFromLocation(t[1])),Et([i,e])}isEqualTo(t){return this.blockList.isEqualTo(null==t?void 0:t.blockList)}getTexts(){return this.getBlocks().map((t=>t.text))}getPieces(){const t=[];return Array.from(this.getTexts()).forEach((e=>{t.push(...Array.from(e.getPieces()||[]))})),t}getObjects(){return this.getBlocks().concat(this.getTexts()).concat(this.getPieces())}toSerializableDocument(){const t=[];return this.blockList.eachObject((e=>t.push(e.copyWithText(e.text.toSerializableText())))),new this.constructor(t)}toString(){return this.blockList.toString()}toJSON(){return this.blockList.toJSON()}toConsole(){return JSON.stringify(this.blockList.toArray()).map((t=>JSON.parse(t.text.toConsole())))}}const We=function(t){const e={},i=t.getLastAttribute();return i&&(e[i]=!0),e},Ue=\"style href src width height class\".split(\" \"),qe=\"javascript:\".split(\" \"),Ve=\"script iframe\".split(\" \");class ze extends U{static sanitize(t,e){const i=new this(t,e);return i.sanitize(),i}constructor(t){let{allowedAttributes:e,forbiddenProtocols:i,forbiddenElements:n}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(...arguments),this.allowedAttributes=e||Ue,this.forbiddenProtocols=i||qe,this.forbiddenElements=n||Ve,this.body=_e(t)}sanitize(){return this.sanitizeElements(),this.normalizeListElementNesting()}getHTML(){return this.body.innerHTML}getBody(){return this.body}sanitizeElements(){const t=x(this.body),e=[];for(;t.nextNode();){const i=t.currentNode;switch(i.nodeType){case Node.ELEMENT_NODE:this.elementIsRemovable(i)?e.push(i):this.sanitizeElement(i);break;case Node.COMMENT_NODE:e.push(i)}}return e.forEach((t=>A(t))),this.body}sanitizeElement(t){return t.hasAttribute(\"href\")&&this.forbiddenProtocols.includes(t.protocol)&&t.removeAttribute(\"href\"),Array.from(t.attributes).forEach((e=>{let{name:i}=e;this.allowedAttributes.includes(i)||0===i.indexOf(\"data-trix\")||t.removeAttribute(i)})),t}normalizeListElementNesting(){return Array.from(this.body.querySelectorAll(\"ul,ol\")).forEach((t=>{const e=t.previousElementSibling;e&&\"li\"===y(e)&&e.appendChild(t)})),this.body}elementIsRemovable(t){if((null==t?void 0:t.nodeType)===Node.ELEMENT_NODE)return this.elementIsForbidden(t)||this.elementIsntSerializable(t)}elementIsForbidden(t){return this.forbiddenElements.includes(y(t))}elementIsntSerializable(t){return\"false\"===t.getAttribute(\"data-trix-serialize\")&&!F(t)}}const _e=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\";t=t.replace(/<\\/html[^>]*>[^]*$/i,\"</html>\");const e=document.implementation.createHTMLDocument(\"\");return e.documentElement.innerHTML=t,Array.from(e.head.querySelectorAll(\"style\")).forEach((t=>{e.body.appendChild(t)})),e.body},He=function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=\"string\";return{string:t=Mt(t),attributes:e,type:i}},Je=(t,e)=>{try{return JSON.parse(t.getAttribute(\"data-trix-\".concat(e)))}catch(t){return{}}};class Ke extends U{static parse(t,e){const i=new this(t,e);return i.parse(),i}constructor(t){let{referenceElement:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};super(...arguments),this.html=t,this.referenceElement=e,this.blocks=[],this.blockElements=[],this.processedElements=[]}getDocument(){return je.fromJSON(this.blocks)}parse(){try{this.createHiddenContainer();const t=ze.sanitize(this.html).getHTML();this.containerElement.innerHTML=t;const e=x(this.containerElement,{usingFilter:Ye});for(;e.nextNode();)this.processNode(e.currentNode);return this.translateBlockElementMarginsToNewlines()}finally{this.removeHiddenContainer()}}createHiddenContainer(){return this.referenceElement?(this.containerElement=this.referenceElement.cloneNode(!1),this.containerElement.removeAttribute(\"id\"),this.containerElement.setAttribute(\"data-trix-internal\",\"\"),this.containerElement.style.display=\"none\",this.referenceElement.parentNode.insertBefore(this.containerElement,this.referenceElement.nextSibling)):(this.containerElement=C({tagName:\"div\",style:{display:\"none\"}}),document.body.appendChild(this.containerElement))}removeHiddenContainer(){return A(this.containerElement)}processNode(t){switch(t.nodeType){case Node.TEXT_NODE:if(!this.isInsignificantTextNode(t))return this.appendBlockForTextNode(t),this.processTextNode(t);break;case Node.ELEMENT_NODE:return this.appendBlockForElement(t),this.processElement(t)}}appendBlockForTextNode(t){const e=t.parentNode;if(e===this.currentBlockElement&&this.isBlockElement(t.previousSibling))return this.appendStringWithAttributes(\"\\n\");if(e===this.containerElement||this.isBlockElement(e)){var i;const t=this.getBlockAttributes(e);et(t,null===(i=this.currentBlock)||void 0===i?void 0:i.attributes)||(this.currentBlock=this.appendBlockForAttributesWithElement(t,e),this.currentBlockElement=e)}}appendBlockForElement(t){const e=this.isBlockElement(t),i=b(this.currentBlockElement,t);if(e&&!this.isBlockElement(t.firstChild)){if(!this.isInsignificantTextNode(t.firstChild)||!this.isBlockElement(t.firstElementChild)){const e=this.getBlockAttributes(t);if(t.firstChild){if(i&&et(e,this.currentBlock.attributes))return this.appendStringWithAttributes(\"\\n\");this.currentBlock=this.appendBlockForAttributesWithElement(e,t),this.currentBlockElement=t}}}else if(this.currentBlockElement&&!i&&!e){const e=this.findParentBlockElement(t);if(e)return this.appendBlockForElement(e);this.currentBlock=this.appendEmptyBlock(),this.currentBlockElement=null}}findParentBlockElement(t){let{parentElement:e}=t;for(;e&&e!==this.containerElement;){if(this.isBlockElement(e)&&this.blockElements.includes(e))return e;e=e.parentElement}return null}processTextNode(t){let e=t.data;var i;Ge(t.parentNode)||(e=Wt(e),ti(null===(i=t.previousSibling)||void 0===i?void 0:i.textContent)&&(e=Qe(e)));return this.appendStringWithAttributes(e,this.getTextAttributes(t.parentNode))}processElement(t){let e;if(F(t)){if(e=Je(t,\"attachment\"),Object.keys(e).length){const i=this.getTextAttributes(t);this.appendAttachmentWithAttributes(e,i),t.innerHTML=\"\"}return this.processedElements.push(t)}switch(y(t)){case\"br\":return this.isExtraBR(t)||this.isBlockElement(t.nextSibling)||this.appendStringWithAttributes(\"\\n\",this.getTextAttributes(t)),this.processedElements.push(t);case\"img\":e={url:t.getAttribute(\"src\"),contentType:\"image\"};const i=(t=>{const e=t.getAttribute(\"width\"),i=t.getAttribute(\"height\"),n={};return e&&(n.width=parseInt(e,10)),i&&(n.height=parseInt(i,10)),n})(t);for(const t in i){const n=i[t];e[t]=n}return this.appendAttachmentWithAttributes(e,this.getTextAttributes(t)),this.processedElements.push(t);case\"tr\":if(this.needsTableSeparator(t))return this.appendStringWithAttributes(N.tableRowSeparator);break;case\"td\":if(this.needsTableSeparator(t))return this.appendStringWithAttributes(N.tableCellSeparator)}}appendBlockForAttributesWithElement(t,e){this.blockElements.push(e);const i=function(){return{text:[],attributes:arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}}}(t);return this.blocks.push(i),i}appendEmptyBlock(){return this.appendBlockForAttributesWithElement([],null)}appendStringWithAttributes(t,e){return this.appendPiece(He(t,e))}appendAttachmentWithAttributes(t,e){return this.appendPiece(function(t){return{attachment:t,attributes:arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},type:\"attachment\"}}(t,e))}appendPiece(t){return 0===this.blocks.length&&this.appendEmptyBlock(),this.blocks[this.blocks.length-1].text.push(t)}appendStringToTextAtIndex(t,e){const{text:i}=this.blocks[e],n=i[i.length-1];if(\"string\"!==(null==n?void 0:n.type))return i.push(He(t));n.string+=t}prependStringToTextAtIndex(t,e){const{text:i}=this.blocks[e],n=i[0];if(\"string\"!==(null==n?void 0:n.type))return i.unshift(He(t));n.string=t+n.string}getTextAttributes(t){let e;const i={};for(const n in O){const r=O[n];if(r.tagName&&p(t,{matchingSelector:r.tagName,untilNode:this.containerElement}))i[n]=!0;else if(r.parser){if(e=r.parser(t),e){let o=!1;for(const i of this.findBlockElementAncestors(t))if(r.parser(i)===e){o=!0;break}o||(i[n]=e)}}else r.styleProperty&&(e=t.style[r.styleProperty],e&&(i[n]=e))}if(F(t)){const n=Je(t,\"attributes\");for(const t in n)e=n[t],i[t]=e}return i}getBlockAttributes(t){const i=[];for(;t&&t!==this.containerElement;){for(const r in e){const o=e[r];var n;if(!1!==o.parse)if(y(t)===o.tagName)(null!==(n=o.test)&&void 0!==n&&n.call(o,t)||!o.test)&&(i.push(r),o.listAttribute&&i.push(o.listAttribute))}t=t.parentNode}return i.reverse()}findBlockElementAncestors(t){const e=[];for(;t&&t!==this.containerElement;){const i=y(t);E().includes(i)&&e.push(t),t=t.parentNode}return e}isBlockElement(t){if((null==t?void 0:t.nodeType)===Node.ELEMENT_NODE&&!F(t)&&!p(t,{matchingSelector:\"td\",untilNode:this.containerElement}))return E().includes(y(t))||\"block\"===window.getComputedStyle(t).display}isInsignificantTextNode(t){if((null==t?void 0:t.nodeType)!==Node.TEXT_NODE)return;if(!Ze(t.data))return;const{parentNode:e,previousSibling:i,nextSibling:n}=t;return $e(e.previousSibling)&&!this.isBlockElement(e.previousSibling)||Ge(e)?void 0:!i||this.isBlockElement(i)||!n||this.isBlockElement(n)}isExtraBR(t){return\"br\"===y(t)&&this.isBlockElement(t.parentNode)&&t.parentNode.lastChild===t}needsTableSeparator(t){if(N.removeBlankTableCells){var e;const i=null===(e=t.previousSibling)||void 0===e?void 0:e.textContent;return i&&/\\S/.test(i)}return t.previousSibling}translateBlockElementMarginsToNewlines(){const t=this.getMarginOfDefaultBlockElement();for(let e=0;e<this.blocks.length;e++){const i=this.getMarginOfBlockElementAtIndex(e);i&&(i.top>2*t.top&&this.prependStringToTextAtIndex(\"\\n\",e),i.bottom>2*t.bottom&&this.appendStringToTextAtIndex(\"\\n\",e))}}getMarginOfBlockElementAtIndex(t){const e=this.blockElements[t];if(e&&e.textContent&&!E().includes(y(e))&&!this.processedElements.includes(e))return Xe(e)}getMarginOfDefaultBlockElement(){const t=C(e.default.tagName);return this.containerElement.appendChild(t),Xe(t)}}const Ge=function(t){const{whiteSpace:e}=window.getComputedStyle(t);return[\"pre\",\"pre-wrap\",\"pre-line\"].includes(e)},$e=t=>t&&!ti(t.textContent),Xe=function(t){const e=window.getComputedStyle(t);if(\"block\"===e.display)return{top:parseInt(e.marginTop),bottom:parseInt(e.marginBottom)}},Ye=function(t){return\"style\"===y(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},Qe=t=>t.replace(new RegExp(\"^\".concat(jt.source,\"+\")),\"\"),Ze=t=>new RegExp(\"^\".concat(jt.source,\"*$\")).test(t),ti=t=>/\\s$/.test(t),ei=[\"contenteditable\",\"data-trix-id\",\"data-trix-store-key\",\"data-trix-mutable\",\"data-trix-placeholder\",\"tabindex\"],ii=\"[\".concat(\"data-trix-serialized-attributes\",\"]\"),ni=new RegExp(\"\\x3c!--block--\\x3e\",\"g\"),ri={\"application/json\":function(t){let e;if(t instanceof je)e=t;else{if(!(t instanceof HTMLElement))throw new Error(\"unserializable object\");e=Ke.parse(t.innerHTML).getDocument()}return e.toSerializableDocument().toJSONString()},\"text/html\":function(t){let e;if(t instanceof je)e=ue.render(t);else{if(!(t instanceof HTMLElement))throw new Error(\"unserializable object\");e=t.cloneNode(!0)}return Array.from(e.querySelectorAll(\"[data-trix-serialize=false]\")).forEach((t=>{A(t)})),ei.forEach((t=>{Array.from(e.querySelectorAll(\"[\".concat(t,\"]\"))).forEach((e=>{e.removeAttribute(t)}))})),Array.from(e.querySelectorAll(ii)).forEach((t=>{try{const e=JSON.parse(t.getAttribute(\"data-trix-serialized-attributes\"));t.removeAttribute(\"data-trix-serialized-attributes\");for(const i in e){const n=e[i];t.setAttribute(i,n)}}catch(t){}})),e.innerHTML.replace(ni,\"\")}};var oi=Object.freeze({__proto__:null});class si extends U{constructor(t,e){super(...arguments),this.attachmentManager=t,this.attachment=e,this.id=this.attachment.id,this.file=this.attachment.file}remove(){return this.attachmentManager.requestRemovalOfAttachment(this.attachment)}}si.proxyMethod(\"attachment.getAttribute\"),si.proxyMethod(\"attachment.hasAttribute\"),si.proxyMethod(\"attachment.setAttribute\"),si.proxyMethod(\"attachment.getAttributes\"),si.proxyMethod(\"attachment.setAttributes\"),si.proxyMethod(\"attachment.isPending\"),si.proxyMethod(\"attachment.isPreviewable\"),si.proxyMethod(\"attachment.getURL\"),si.proxyMethod(\"attachment.getHref\"),si.proxyMethod(\"attachment.getFilename\"),si.proxyMethod(\"attachment.getFilesize\"),si.proxyMethod(\"attachment.getFormattedFilesize\"),si.proxyMethod(\"attachment.getExtension\"),si.proxyMethod(\"attachment.getContentType\"),si.proxyMethod(\"attachment.getFile\"),si.proxyMethod(\"attachment.setFile\"),si.proxyMethod(\"attachment.releaseFile\"),si.proxyMethod(\"attachment.getUploadProgress\"),si.proxyMethod(\"attachment.setUploadProgress\");class ai extends U{constructor(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];super(...arguments),this.managedAttachments={},Array.from(t).forEach((t=>{this.manageAttachment(t)}))}getAttachments(){const t=[];for(const e in this.managedAttachments){const i=this.managedAttachments[e];t.push(i)}return t}manageAttachment(t){return this.managedAttachments[t.id]||(this.managedAttachments[t.id]=new si(this,t)),this.managedAttachments[t.id]}attachmentIsManaged(t){return t.id in this.managedAttachments}requestRemovalOfAttachment(t){var e,i;if(this.attachmentIsManaged(t))return null===(e=this.delegate)||void 0===e||null===(i=e.attachmentManagerDidRequestRemovalOfAttachment)||void 0===i?void 0:i.call(e,t)}unmanageAttachment(t){const e=this.managedAttachments[t.id];return delete this.managedAttachments[t.id],e}}class li{constructor(t){this.composition=t,this.document=this.composition.document;const e=this.composition.getSelectedRange();this.startPosition=e[0],this.endPosition=e[1],this.startLocation=this.document.locationFromPosition(this.startPosition),this.endLocation=this.document.locationFromPosition(this.endPosition),this.block=this.document.getBlockAtIndex(this.endLocation.index),this.breaksOnReturn=this.block.breaksOnReturn(),this.previousCharacter=this.block.text.getStringAtPosition(this.endLocation.offset-1),this.nextCharacter=this.block.text.getStringAtPosition(this.endLocation.offset)}shouldInsertBlockBreak(){return this.block.hasAttributes()&&this.block.isListItem()&&!this.block.isEmpty()?0!==this.startLocation.offset:this.breaksOnReturn&&\"\\n\"!==this.nextCharacter}shouldBreakFormattedBlock(){return this.block.hasAttributes()&&!this.block.isListItem()&&(this.breaksOnReturn&&\"\\n\"===this.nextCharacter||\"\\n\"===this.previousCharacter)}shouldDecreaseListLevel(){return this.block.hasAttributes()&&this.block.isListItem()&&this.block.isEmpty()}shouldPrependListItem(){return this.block.isListItem()&&0===this.startLocation.offset&&!this.block.isEmpty()}shouldRemoveLastBlockAttribute(){return this.block.hasAttributes()&&!this.block.isListItem()&&this.block.isEmpty()}}class ci extends U{constructor(){super(...arguments),this.document=new je,this.attachments=[],this.currentAttributes={},this.revision=0}setDocument(t){var e,i;if(!t.isEqualTo(this.document))return this.document=t,this.refreshAttachments(),this.revision++,null===(e=this.delegate)||void 0===e||null===(i=e.compositionDidChangeDocument)||void 0===i?void 0:i.call(e,t)}getSnapshot(){return{document:this.document,selectedRange:this.getSelectedRange()}}loadSnapshot(t){var e,i,n,r;let{document:o,selectedRange:s}=t;return null===(e=this.delegate)||void 0===e||null===(i=e.compositionWillLoadSnapshot)||void 0===i||i.call(e),this.setDocument(null!=o?o:new je),this.setSelection(null!=s?s:[0,0]),null===(n=this.delegate)||void 0===n||null===(r=n.compositionDidLoadSnapshot)||void 0===r?void 0:r.call(n)}insertText(t){let{updatePosition:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{updatePosition:!0};const i=this.getSelectedRange();this.setDocument(this.document.insertTextAtRange(t,i));const n=i[0],r=n+t.getLength();return e&&this.setSelection(r),this.notifyDelegateOfInsertionAtRange([n,r])}insertBlock(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new De;const e=new je([t]);return this.insertDocument(e)}insertDocument(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:new je;const e=this.getSelectedRange();this.setDocument(this.document.insertDocumentAtRange(t,e));const i=e[0],n=i+t.getLength();return this.setSelection(n),this.notifyDelegateOfInsertionAtRange([i,n])}insertString(t,e){const i=this.getCurrentTextAttributes(),n=Le.textForStringWithAttributes(t,i);return this.insertText(n,e)}insertBlockBreak(){const t=this.getSelectedRange();this.setDocument(this.document.insertBlockBreakAtRange(t));const e=t[0],i=e+1;return this.setSelection(i),this.notifyDelegateOfInsertionAtRange([e,i])}insertLineBreak(){const t=new li(this);if(t.shouldDecreaseListLevel())return this.decreaseListLevel(),this.setSelection(t.startPosition);if(t.shouldPrependListItem()){const e=new je([t.block.copyWithoutText()]);return this.insertDocument(e)}return t.shouldInsertBlockBreak()?this.insertBlockBreak():t.shouldRemoveLastBlockAttribute()?this.removeLastBlockAttribute():t.shouldBreakFormattedBlock()?this.breakFormattedBlock(t):this.insertString(\"\\n\")}insertHTML(t){const e=Ke.parse(t).getDocument(),i=this.getSelectedRange();this.setDocument(this.document.mergeDocumentAtRange(e,i));const n=i[0],r=n+e.getLength()-1;return this.setSelection(r),this.notifyDelegateOfInsertionAtRange([n,r])}replaceHTML(t){const e=Ke.parse(t).getDocument().copyUsingObjectsFromDocument(this.document),i=this.getLocationRange({strict:!1}),n=this.document.rangeFromLocationRange(i);return this.setDocument(e),this.setSelection(n)}insertFile(t){return this.insertFiles([t])}insertFiles(t){const e=[];return Array.from(t).forEach((t=>{var i;if(null!==(i=this.delegate)&&void 0!==i&&i.compositionShouldAcceptFile(t)){const i=xe.attachmentForFile(t);e.push(i)}})),this.insertAttachments(e)}insertAttachment(t){return this.insertAttachments([t])}insertAttachments(e){let i=new Le;return Array.from(e).forEach((e=>{var n;const r=e.getType(),o=null===(n=t[r])||void 0===n?void 0:n.presentation,s=this.getCurrentTextAttributes();o&&(s.presentation=o);const a=Le.textForAttachmentWithAttributes(e,s);i=i.appendText(a)})),this.insertText(i)}shouldManageDeletingInDirection(t){const e=this.getLocationRange();if(St(e)){if(\"backward\"===t&&0===e[0].offset)return!0;if(this.shouldManageMovingCursorInDirection(t))return!0}else if(e[0].index!==e[1].index)return!0;return!1}deleteInDirection(t){let e,i,n,{length:r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const o=this.getLocationRange();let s=this.getSelectedRange();const a=St(s);if(a?i=\"backward\"===t&&0===o[0].offset:n=o[0].index!==o[1].index,i&&this.canDecreaseBlockAttributeLevel()){const t=this.getBlock();if(t.isListItem()?this.decreaseListLevel():this.decreaseBlockAttributeLevel(),this.setSelection(s[0]),t.isEmpty())return!1}return a&&(s=this.getExpandedRangeInDirection(t,{length:r}),\"backward\"===t&&(e=this.getAttachmentAtRange(s))),e?(this.editAttachment(e),!1):(this.setDocument(this.document.removeTextAtRange(s)),this.setSelection(s[0]),!i&&!n&&void 0)}moveTextFromRange(t){const[e]=Array.from(this.getSelectedRange());return this.setDocument(this.document.moveTextFromRangeToPosition(t,e)),this.setSelection(e)}removeAttachment(t){const e=this.document.getRangeOfAttachment(t);if(e)return this.stopEditingAttachment(),this.setDocument(this.document.removeTextAtRange(e)),this.setSelection(e[0])}removeLastBlockAttribute(){const[t,e]=Array.from(this.getSelectedRange()),i=this.document.getBlockAtPosition(e);return this.removeCurrentAttribute(i.getLastAttribute()),this.setSelection(t)}insertPlaceholder(){return this.placeholderPosition=this.getPosition(),this.insertString(\" \")}selectPlaceholder(){if(null!=this.placeholderPosition)return this.setSelectedRange([this.placeholderPosition,this.placeholderPosition+\" \".length]),this.getSelectedRange()}forgetPlaceholder(){this.placeholderPosition=null}hasCurrentAttribute(t){const e=this.currentAttributes[t];return null!=e&&!1!==e}toggleCurrentAttribute(t){const e=!this.currentAttributes[t];return e?this.setCurrentAttribute(t,e):this.removeCurrentAttribute(t)}canSetCurrentAttribute(t){return ht(t)?this.canSetCurrentBlockAttribute(t):this.canSetCurrentTextAttribute(t)}canSetCurrentTextAttribute(t){const e=this.getSelectedDocument();if(e){for(const t of Array.from(e.getAttachments()))if(!t.hasContent())return!1;return!0}}canSetCurrentBlockAttribute(t){const e=this.getBlock();if(e)return!e.isTerminalBlock()}setCurrentAttribute(t,e){return ht(t)?this.setBlockAttribute(t,e):(this.setTextAttribute(t,e),this.currentAttributes[t]=e,this.notifyDelegateOfCurrentAttributesChange())}setTextAttribute(t,e){const i=this.getSelectedRange();if(!i)return;const[n,r]=Array.from(i);if(n!==r)return this.setDocument(this.document.addAttributeAtRange(t,e,i));if(\"href\"===t){const t=Le.textForStringWithAttributes(e,{href:e});return this.insertText(t)}}setBlockAttribute(t,e){const i=this.getSelectedRange();if(this.canSetCurrentAttribute(t))return this.setDocument(this.document.applyBlockAttributeAtRange(t,e,i)),this.setSelection(i)}removeCurrentAttribute(t){return ht(t)?(this.removeBlockAttribute(t),this.updateCurrentAttributes()):(this.removeTextAttribute(t),delete this.currentAttributes[t],this.notifyDelegateOfCurrentAttributesChange())}removeTextAttribute(t){const e=this.getSelectedRange();if(e)return this.setDocument(this.document.removeAttributeAtRange(t,e))}removeBlockAttribute(t){const e=this.getSelectedRange();if(e)return this.setDocument(this.document.removeAttributeAtRange(t,e))}canDecreaseNestingLevel(){var t;return(null===(t=this.getBlock())||void 0===t?void 0:t.getNestingLevel())>0}canIncreaseNestingLevel(){var t;const e=this.getBlock();if(e){if(null===(t=ht(e.getLastNestableAttribute()))||void 0===t||!t.listAttribute)return e.getNestingLevel()>0;{const t=this.getPreviousBlock();if(t)return function(){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return et((arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).slice(0,t.length),t)}(t.getListItemAttributes(),e.getListItemAttributes())}}}decreaseNestingLevel(){const t=this.getBlock();if(t)return this.setDocument(this.document.replaceBlock(t,t.decreaseNestingLevel()))}increaseNestingLevel(){const t=this.getBlock();if(t)return this.setDocument(this.document.replaceBlock(t,t.increaseNestingLevel()))}canDecreaseBlockAttributeLevel(){var t;return(null===(t=this.getBlock())||void 0===t?void 0:t.getAttributeLevel())>0}decreaseBlockAttributeLevel(){var t;const e=null===(t=this.getBlock())||void 0===t?void 0:t.getLastAttribute();if(e)return this.removeCurrentAttribute(e)}decreaseListLevel(){let[t]=Array.from(this.getSelectedRange());const{index:e}=this.document.locationFromPosition(t);let i=e;const n=this.getBlock().getAttributeLevel();let r=this.document.getBlockAtIndex(i+1);for(;r&&r.isListItem()&&!(r.getAttributeLevel()<=n);)i++,r=this.document.getBlockAtIndex(i+1);t=this.document.positionFromLocation({index:e,offset:0});const o=this.document.positionFromLocation({index:i,offset:0});return this.setDocument(this.document.removeLastListAttributeAtRange([t,o]))}updateCurrentAttributes(){const t=this.getSelectedRange({ignoreLock:!0});if(t){const e=this.document.getCommonAttributesAtRange(t);if(Array.from(ct()).forEach((t=>{e[t]||this.canSetCurrentAttribute(t)||(e[t]=!1)})),!Rt(e,this.currentAttributes))return this.currentAttributes=e,this.notifyDelegateOfCurrentAttributesChange()}}getCurrentAttributes(){return c.call({},this.currentAttributes)}getCurrentTextAttributes(){const t={};for(const e in this.currentAttributes){const i=this.currentAttributes[e];!1!==i&&dt(e)&&(t[e]=i)}return t}freezeSelection(){return this.setCurrentAttribute(\"frozen\",!0)}thawSelection(){return this.removeCurrentAttribute(\"frozen\")}hasFrozenSelection(){return this.hasCurrentAttribute(\"frozen\")}setSelection(t){var e;const i=this.document.locationRangeFromRange(t);return null===(e=this.delegate)||void 0===e?void 0:e.compositionDidRequestChangingSelectionToLocationRange(i)}getSelectedRange(){const t=this.getLocationRange();if(t)return this.document.rangeFromLocationRange(t)}setSelectedRange(t){const e=this.document.locationRangeFromRange(t);return this.getSelectionManager().setLocationRange(e)}getPosition(){const t=this.getLocationRange();if(t)return this.document.positionFromLocation(t[0])}getLocationRange(t){return this.targetLocationRange?this.targetLocationRange:this.getSelectionManager().getLocationRange(t)||Et({index:0,offset:0})}withTargetLocationRange(t,e){let i;this.targetLocationRange=t;try{i=e()}finally{this.targetLocationRange=null}return i}withTargetRange(t,e){const i=this.document.locationRangeFromRange(t);return this.withTargetLocationRange(i,e)}withTargetDOMRange(t,e){const i=this.createLocationRangeFromDOMRange(t,{strict:!1});return this.withTargetLocationRange(i,e)}getExpandedRangeInDirection(t){let{length:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},[i,n]=Array.from(this.getSelectedRange());return\"backward\"===t?e?i-=e:i=this.translateUTF16PositionFromOffset(i,-1):e?n+=e:n=this.translateUTF16PositionFromOffset(n,1),Et([i,n])}shouldManageMovingCursorInDirection(t){if(this.editingAttachment)return!0;const e=this.getExpandedRangeInDirection(t);return null!=this.getAttachmentAtRange(e)}moveCursorInDirection(t){let e,i;if(this.editingAttachment)i=this.document.getRangeOfAttachment(this.editingAttachment);else{const n=this.getSelectedRange();i=this.getExpandedRangeInDirection(t),e=!kt(n,i)}if(\"backward\"===t?this.setSelectedRange(i[0]):this.setSelectedRange(i[1]),e){const t=this.getAttachmentAtRange(i);if(t)return this.editAttachment(t)}}expandSelectionInDirection(t){let{length:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=this.getExpandedRangeInDirection(t,{length:e});return this.setSelectedRange(i)}expandSelectionForEditing(){if(this.hasCurrentAttribute(\"href\"))return this.expandSelectionAroundCommonAttribute(\"href\")}expandSelectionAroundCommonAttribute(t){const e=this.getPosition(),i=this.document.getRangeOfCommonAttributeAtPosition(t,e);return this.setSelectedRange(i)}selectionContainsAttachments(){var t;return(null===(t=this.getSelectedAttachments())||void 0===t?void 0:t.length)>0}selectionIsInCursorTarget(){return this.editingAttachment||this.positionIsCursorTarget(this.getPosition())}positionIsCursorTarget(t){const e=this.document.locationFromPosition(t);if(e)return this.locationIsCursorTarget(e)}positionIsBlockBreak(t){var e;return null===(e=this.document.getPieceAtPosition(t))||void 0===e?void 0:e.isBlockBreak()}getSelectedDocument(){const t=this.getSelectedRange();if(t)return this.document.getDocumentAtRange(t)}getSelectedAttachments(){var t;return null===(t=this.getSelectedDocument())||void 0===t?void 0:t.getAttachments()}getAttachments(){return this.attachments.slice(0)}refreshAttachments(){const t=this.document.getAttachments(),{added:e,removed:i}=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const i=[],n=[],r=new Set;t.forEach((t=>{r.add(t)}));const o=new Set;return e.forEach((t=>{o.add(t),r.has(t)||i.push(t)})),t.forEach((t=>{o.has(t)||n.push(t)})),{added:i,removed:n}}(this.attachments,t);return this.attachments=t,Array.from(i).forEach((t=>{var e,i;t.delegate=null,null===(e=this.delegate)||void 0===e||null===(i=e.compositionDidRemoveAttachment)||void 0===i||i.call(e,t)})),(()=>{const t=[];return Array.from(e).forEach((e=>{var i,n;e.delegate=this,t.push(null===(i=this.delegate)||void 0===i||null===(n=i.compositionDidAddAttachment)||void 0===n?void 0:n.call(i,e))})),t})()}attachmentDidChangeAttributes(t){var e,i;return this.revision++,null===(e=this.delegate)||void 0===e||null===(i=e.compositionDidEditAttachment)||void 0===i?void 0:i.call(e,t)}attachmentDidChangePreviewURL(t){var e,i;return this.revision++,null===(e=this.delegate)||void 0===e||null===(i=e.compositionDidChangeAttachmentPreviewURL)||void 0===i?void 0:i.call(e,t)}editAttachment(t,e){var i,n;if(t!==this.editingAttachment)return this.stopEditingAttachment(),this.editingAttachment=t,null===(i=this.delegate)||void 0===i||null===(n=i.compositionDidStartEditingAttachment)||void 0===n?void 0:n.call(i,this.editingAttachment,e)}stopEditingAttachment(){var t,e;this.editingAttachment&&(null===(t=this.delegate)||void 0===t||null===(e=t.compositionDidStopEditingAttachment)||void 0===e||e.call(t,this.editingAttachment),this.editingAttachment=null)}updateAttributesForAttachment(t,e){return this.setDocument(this.document.updateAttributesForAttachment(t,e))}removeAttributeForAttachment(t,e){return this.setDocument(this.document.removeAttributeForAttachment(t,e))}breakFormattedBlock(t){let{document:e}=t;const{block:i}=t;let n=t.startPosition,r=[n-1,n];i.getBlockBreakPosition()===t.startLocation.offset?(i.breaksOnReturn()&&\"\\n\"===t.nextCharacter?n+=1:e=e.removeTextAtRange(r),r=[n,n]):\"\\n\"===t.nextCharacter?\"\\n\"===t.previousCharacter?r=[n-1,n+1]:(r=[n,n+1],n+=1):t.startLocation.offset-1!=0&&(n+=1);const o=new je([i.removeLastAttribute().copyWithoutText()]);return this.setDocument(e.insertDocumentAtRange(o,r)),this.setSelection(n)}getPreviousBlock(){const t=this.getLocationRange();if(t){const{index:e}=t[0];if(e>0)return this.document.getBlockAtIndex(e-1)}}getBlock(){const t=this.getLocationRange();if(t)return this.document.getBlockAtIndex(t[0].index)}getAttachmentAtRange(t){const e=this.document.getDocumentAtRange(t);if(e.toString()===\"\".concat(\"\uFFFC\",\"\\n\"))return e.getAttachments()[0]}notifyDelegateOfCurrentAttributesChange(){var t,e;return null===(t=this.delegate)||void 0===t||null===(e=t.compositionDidChangeCurrentAttributes)||void 0===e?void 0:e.call(t,this.currentAttributes)}notifyDelegateOfInsertionAtRange(t){var e,i;return null===(e=this.delegate)||void 0===e||null===(i=e.compositionDidPerformInsertionAtRange)||void 0===i?void 0:i.call(e,t)}translateUTF16PositionFromOffset(t,e){const i=this.document.toUTF16String(),n=i.offsetFromUCS2Offset(t);return i.offsetToUCS2Offset(n+e)}}ci.proxyMethod(\"getSelectionManager().getPointRange\"),ci.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\"),ci.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\"),ci.proxyMethod(\"getSelectionManager().locationIsCursorTarget\"),ci.proxyMethod(\"getSelectionManager().selectionIsExpanded\"),ci.proxyMethod(\"delegate?.getSelectionManager\");class hi extends U{constructor(t){super(...arguments),this.composition=t,this.undoEntries=[],this.redoEntries=[]}recordUndoEntry(t){let{context:e,consolidatable:i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=this.undoEntries.slice(-1)[0];if(!i||!ui(n,t,e)){const i=this.createEntry({description:t,context:e});this.undoEntries.push(i),this.redoEntries=[]}}undo(){const t=this.undoEntries.pop();if(t){const e=this.createEntry(t);return this.redoEntries.push(e),this.composition.loadSnapshot(t.snapshot)}}redo(){const t=this.redoEntries.pop();if(t){const e=this.createEntry(t);return this.undoEntries.push(e),this.composition.loadSnapshot(t.snapshot)}}canUndo(){return this.undoEntries.length>0}canRedo(){return this.redoEntries.length>0}createEntry(){let{description:t,context:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{description:null==t?void 0:t.toString(),context:JSON.stringify(e),snapshot:this.composition.getSnapshot()}}}const ui=(t,e,i)=>(null==t?void 0:t.description)===(null==e?void 0:e.toString())&&(null==t?void 0:t.context)===JSON.stringify(i);class di{constructor(t){this.document=t.document,this.selectedRange=t.selectedRange}perform(){return this.removeBlockAttribute(),this.applyBlockAttribute()}getSnapshot(){return{document:this.document,selectedRange:this.selectedRange}}removeBlockAttribute(){return this.findRangesOfBlocks().map((t=>this.document=this.document.removeAttributeAtRange(\"attachmentGallery\",t)))}applyBlockAttribute(){let t=0;this.findRangesOfPieces().forEach((e=>{e[1]-e[0]>1&&(e[0]+=t,e[1]+=t,\"\\n\"!==this.document.getCharacterAtPosition(e[1])&&(this.document=this.document.insertBlockBreakAtRange(e[1]),e[1]<this.selectedRange[1]&&this.moveSelectedRangeForward(),e[1]++,t++),0!==e[0]&&\"\\n\"!==this.document.getCharacterAtPosition(e[0]-1)&&(this.document=this.document.insertBlockBreakAtRange(e[0]),e[0]<this.selectedRange[0]&&this.moveSelectedRangeForward(),e[0]++,t++),this.document=this.document.applyBlockAttributeAtRange(\"attachmentGallery\",!0,e))}))}findRangesOfBlocks(){return this.document.findRangesForBlockAttribute(\"attachmentGallery\")}findRangesOfPieces(){return this.document.findRangesForTextAttribute(\"presentation\",{withValue:\"gallery\"})}moveSelectedRangeForward(){this.selectedRange[0]+=1,this.selectedRange[1]+=1}}const gi=function(t){const e=new di(t);return e.perform(),e.getSnapshot()},mi=[gi];class pi{constructor(t,e,i){this.insertFiles=this.insertFiles.bind(this),this.composition=t,this.selectionManager=e,this.element=i,this.undoManager=new hi(this.composition),this.filters=mi.slice(0)}loadDocument(t){return this.loadSnapshot({document:t,selectedRange:[0,0]})}loadHTML(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\";const e=Ke.parse(t,{referenceElement:this.element}).getDocument();return this.loadDocument(e)}loadJSON(t){let{document:e,selectedRange:i}=t;return e=je.fromJSON(e),this.loadSnapshot({document:e,selectedRange:i})}loadSnapshot(t){return this.undoManager=new hi(this.composition),this.composition.loadSnapshot(t)}getDocument(){return this.composition.document}getSelectedDocument(){return this.composition.getSelectedDocument()}getSnapshot(){return this.composition.getSnapshot()}toJSON(){return this.getSnapshot()}deleteInDirection(t){return this.composition.deleteInDirection(t)}insertAttachment(t){return this.composition.insertAttachment(t)}insertAttachments(t){return this.composition.insertAttachments(t)}insertDocument(t){return this.composition.insertDocument(t)}insertFile(t){return this.composition.insertFile(t)}insertFiles(t){return this.composition.insertFiles(t)}insertHTML(t){return this.composition.insertHTML(t)}insertString(t){return this.composition.insertString(t)}insertText(t){return this.composition.insertText(t)}insertLineBreak(){return this.composition.insertLineBreak()}getSelectedRange(){return this.composition.getSelectedRange()}getPosition(){return this.composition.getPosition()}getClientRectAtPosition(t){const e=this.getDocument().locationRangeFromRange([t,t+1]);return this.selectionManager.getClientRectAtLocationRange(e)}expandSelectionInDirection(t){return this.composition.expandSelectionInDirection(t)}moveCursorInDirection(t){return this.composition.moveCursorInDirection(t)}setSelectedRange(t){return this.composition.setSelectedRange(t)}activateAttribute(t){let e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];return this.composition.setCurrentAttribute(t,e)}attributeIsActive(t){return this.composition.hasCurrentAttribute(t)}canActivateAttribute(t){return this.composition.canSetCurrentAttribute(t)}deactivateAttribute(t){return this.composition.removeCurrentAttribute(t)}canDecreaseNestingLevel(){return this.composition.canDecreaseNestingLevel()}canIncreaseNestingLevel(){return this.composition.canIncreaseNestingLevel()}decreaseNestingLevel(){if(this.canDecreaseNestingLevel())return this.composition.decreaseNestingLevel()}increaseNestingLevel(){if(this.canIncreaseNestingLevel())return this.composition.increaseNestingLevel()}canRedo(){return this.undoManager.canRedo()}canUndo(){return this.undoManager.canUndo()}recordUndoEntry(t){let{context:e,consolidatable:i}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.undoManager.recordUndoEntry(t,{context:e,consolidatable:i})}redo(){if(this.canRedo())return this.undoManager.redo()}undo(){if(this.canUndo())return this.undoManager.undo()}}class fi{constructor(t){this.element=t}findLocationFromContainerAndOffset(t,e){let{strict:i}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{strict:!0},n=0,r=!1;const o={index:0,offset:0},s=this.findAttachmentElementParentForNode(t);s&&(t=s.parentNode,e=v(s));const a=x(this.element,{usingFilter:xi});for(;a.nextNode();){const s=a.currentNode;if(s===t&&I(t)){T(s)||(o.offset+=e);break}if(s.parentNode===t){if(n++===e)break}else if(!b(t,s)&&n>0)break;L(s,{strict:i})?(r&&o.index++,o.offset=0,r=!0):o.offset+=bi(s)}return o}findContainerAndOffsetFromLocation(t){let e,i;if(0===t.index&&0===t.offset){for(e=this.element,i=0;e.firstChild;)if(e=e.firstChild,S(e)){i=1;break}return[e,i]}let[n,r]=this.findNodeAndOffsetFromLocation(t);if(n){if(I(n))0===bi(n)?(e=n.parentNode.parentNode,i=v(n.parentNode),T(n,{name:\"right\"})&&i++):(e=n,i=t.offset-r);else{if(e=n.parentNode,!L(n.previousSibling)&&!S(e))for(;n===e.lastChild&&(n=e,e=e.parentNode,!S(e)););i=v(n),0!==t.offset&&i++}return[e,i]}}findNodeAndOffsetFromLocation(t){let e,i,n=0;for(const r of this.getSignificantNodesForIndex(t.index)){const o=bi(r);if(t.offset<=n+o)if(I(r)){if(e=r,i=n,t.offset===i&&T(e))break}else e||(e=r,i=n);if(n+=o,n>t.offset)break}return[e,i]}findAttachmentElementParentForNode(t){for(;t&&t!==this.element;){if(F(t))return t;t=t.parentNode}}getSignificantNodesForIndex(t){const e=[],i=x(this.element,{usingFilter:vi});let n=!1;for(;i.nextNode();){const o=i.currentNode;var r;if(D(o)){if(null!=r?r++:r=0,r===t)n=!0;else if(n)break}else n&&e.push(o)}return e}}const bi=function(t){if(t.nodeType===Node.TEXT_NODE){if(T(t))return 0;return t.textContent.length}return\"br\"===y(t)||F(t)?1:0},vi=function(t){return Ai(t)===NodeFilter.FILTER_ACCEPT?xi(t):NodeFilter.FILTER_REJECT},Ai=function(t){return B(t)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},xi=function(t){return F(t.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT};class yi{createDOMRangeFromPoint(t){let e,{x:i,y:n}=t;if(document.caretPositionFromPoint){const{offsetNode:t,offset:r}=document.caretPositionFromPoint(i,n);return e=document.createRange(),e.setStart(t,r),e}if(document.caretRangeFromPoint)return document.caretRangeFromPoint(i,n);if(document.body.createTextRange){const t=It();try{const t=document.body.createTextRange();t.moveToPoint(i,n),t.select()}catch(t){}return e=It(),Pt(t),e}}getClientRectsForDOMRange(t){const e=Array.from(t.getClientRects());return[e[0],e[e.length-1]]}}class Ci extends U{constructor(t){super(...arguments),this.didMouseDown=this.didMouseDown.bind(this),this.selectionDidChange=this.selectionDidChange.bind(this),this.element=t,this.locationMapper=new fi(this.element),this.pointMapper=new yi,this.lockCount=0,d(\"mousedown\",{onElement:this.element,withCallback:this.didMouseDown})}getLocationRange(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return!1===t.strict?this.createLocationRangeFromDOMRange(It()):t.ignoreLock?this.currentLocationRange:this.lockedLocationRange?this.lockedLocationRange:this.currentLocationRange}setLocationRange(t){if(this.lockedLocationRange)return;t=Et(t);const e=this.createDOMRangeFromLocationRange(t);e&&(Pt(e),this.updateCurrentLocationRange(t))}setLocationRangeFromPointRange(t){t=Et(t);const e=this.getLocationAtPoint(t[0]),i=this.getLocationAtPoint(t[1]);this.setLocationRange([e,i])}getClientRectAtLocationRange(t){const e=this.createDOMRangeFromLocationRange(t);if(e)return this.getClientRectsForDOMRange(e)[1]}locationIsCursorTarget(t){const e=Array.from(this.findNodeAndOffsetFromLocation(t))[0];return T(e)}lock(){0==this.lockCount++&&(this.updateCurrentLocationRange(),this.lockedLocationRange=this.getLocationRange())}unlock(){if(0==--this.lockCount){const{lockedLocationRange:t}=this;if(this.lockedLocationRange=null,null!=t)return this.setLocationRange(t)}}clearSelection(){var t;return null===(t=Bt())||void 0===t?void 0:t.removeAllRanges()}selectionIsCollapsed(){var t;return!0===(null===(t=It())||void 0===t?void 0:t.collapsed)}selectionIsExpanded(){return!this.selectionIsCollapsed()}createLocationRangeFromDOMRange(t,e){if(null==t||!this.domRangeWithinElement(t))return;const i=this.findLocationFromContainerAndOffset(t.startContainer,t.startOffset,e);if(!i)return;const n=t.collapsed?void 0:this.findLocationFromContainerAndOffset(t.endContainer,t.endOffset,e);return Et([i,n])}didMouseDown(){return this.pauseTemporarily()}pauseTemporarily(){let t;this.paused=!0;const e=()=>{if(this.paused=!1,clearTimeout(i),Array.from(t).forEach((t=>{t.destroy()})),b(document,this.element))return this.selectionDidChange()},i=setTimeout(e,200);t=[\"mousemove\",\"keydown\"].map((t=>d(t,{onElement:document,withCallback:e})))}selectionDidChange(){if(!this.paused&&!f(this.element))return this.updateCurrentLocationRange()}updateCurrentLocationRange(t){var e,i;if((null!=t?t:t=this.createLocationRangeFromDOMRange(It()))&&!kt(t,this.currentLocationRange))return this.currentLocationRange=t,null===(e=this.delegate)||void 0===e||null===(i=e.locationRangeDidChange)||void 0===i?void 0:i.call(e,this.currentLocationRange.slice(0))}createDOMRangeFromLocationRange(t){const e=this.findContainerAndOffsetFromLocation(t[0]),i=St(t)?e:this.findContainerAndOffsetFromLocation(t[1])||e;if(null!=e&&null!=i){const t=document.createRange();return t.setStart(...Array.from(e||[])),t.setEnd(...Array.from(i||[])),t}}getLocationAtPoint(t){const e=this.createDOMRangeFromPoint(t);var i;if(e)return null===(i=this.createLocationRangeFromDOMRange(e))||void 0===i?void 0:i[0]}domRangeWithinElement(t){return t.collapsed?b(this.element,t.startContainer):b(this.element,t.startContainer)&&b(this.element,t.endContainer)}}Ci.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\"),Ci.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\"),Ci.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\"),Ci.proxyMethod(\"pointMapper.createDOMRangeFromPoint\"),Ci.proxyMethod(\"pointMapper.getClientRectsForDOMRange\");var Ri=Object.freeze({__proto__:null,Attachment:xe,AttachmentManager:ai,AttachmentPiece:ye,Block:De,Composition:ci,Document:je,Editor:pi,HTMLParser:Ke,HTMLSanitizer:ze,LineBreakInsertion:li,LocationMapper:fi,ManagedAttachment:si,Piece:ve,PointMapper:yi,SelectionManager:Ci,SplittableList:Re,StringPiece:Ce,Text:Le,UndoManager:hi}),Ei=Object.freeze({__proto__:null});const{lang:Si,css:ki,keyNames:Li}=W,Di=function(t){return function(){const e=t.apply(this,arguments);e.do(),this.undos||(this.undos=[]),this.undos.push(e.undo)}};class wi extends U{constructor(t,e,i){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};super(...arguments),be(this,\"makeElementMutable\",Di((()=>({do:()=>{this.element.dataset.trixMutable=!0},undo:()=>delete this.element.dataset.trixMutable})))),be(this,\"addToolbar\",Di((()=>{const t=C({tagName:\"div\",className:ki.attachmentToolbar,data:{trixMutable:!0},childNodes:C({tagName:\"div\",className:\"trix-button-row\",childNodes:C({tagName:\"span\",className:\"trix-button-group trix-button-group--actions\",childNodes:C({tagName:\"button\",className:\"trix-button trix-button--remove\",textContent:Si.remove,attributes:{title:Si.remove},data:{trixAction:\"remove\"}})})})});return this.attachment.isPreviewable()&&t.appendChild(C({tagName:\"div\",className:ki.attachmentMetadataContainer,childNodes:C({tagName:\"span\",className:ki.attachmentMetadata,childNodes:[C({tagName:\"span\",className:ki.attachmentName,textContent:this.attachment.getFilename(),attributes:{title:this.attachment.getFilename()}}),C({tagName:\"span\",className:ki.attachmentSize,textContent:this.attachment.getFormattedFilesize()})]})})),d(\"click\",{onElement:t,withCallback:this.didClickToolbar}),d(\"click\",{onElement:t,matchingSelector:\"[data-trix-action]\",withCallback:this.didClickActionButton}),g(\"trix-attachment-before-toolbar\",{onElement:this.element,attributes:{toolbar:t,attachment:this.attachment}}),{do:()=>this.element.appendChild(t),undo:()=>A(t)}}))),be(this,\"installCaptionEditor\",Di((()=>{const t=C({tagName:\"textarea\",className:ki.attachmentCaptionEditor,attributes:{placeholder:Si.captionPlaceholder},data:{trixMutable:!0}});t.value=this.attachmentPiece.getCaption();const e=t.cloneNode();e.classList.add(\"trix-autoresize-clone\"),e.tabIndex=-1;const i=function(){e.value=t.value,t.style.height=e.scrollHeight+\"px\"};d(\"input\",{onElement:t,withCallback:i}),d(\"input\",{onElement:t,withCallback:this.didInputCaption}),d(\"keydown\",{onElement:t,withCallback:this.didKeyDownCaption}),d(\"change\",{onElement:t,withCallback:this.didChangeCaption}),d(\"blur\",{onElement:t,withCallback:this.didBlurCaption});const n=this.element.querySelector(\"figcaption\"),r=n.cloneNode();return{do:()=>{if(n.style.display=\"none\",r.appendChild(t),r.appendChild(e),r.classList.add(\"\".concat(ki.attachmentCaption,\"--editing\")),n.parentElement.insertBefore(r,n),i(),this.options.editCaption)return yt((()=>t.focus()))},undo(){A(r),n.style.display=null}}}))),this.didClickToolbar=this.didClickToolbar.bind(this),this.didClickActionButton=this.didClickActionButton.bind(this),this.didKeyDownCaption=this.didKeyDownCaption.bind(this),this.didInputCaption=this.didInputCaption.bind(this),this.didChangeCaption=this.didChangeCaption.bind(this),this.didBlurCaption=this.didBlurCaption.bind(this),this.attachmentPiece=t,this.element=e,this.container=i,this.options=n,this.attachment=this.attachmentPiece.attachment,\"a\"===y(this.element)&&(this.element=this.element.firstChild),this.install()}install(){this.makeElementMutable(),this.addToolbar(),this.attachment.isPreviewable()&&this.installCaptionEditor()}uninstall(){var t;let e=this.undos.pop();for(this.savePendingCaption();e;)e(),e=this.undos.pop();null===(t=this.delegate)||void 0===t||t.didUninstallAttachmentEditor(this)}savePendingCaption(){if(this.pendingCaption){const r=this.pendingCaption;var t,e,i,n;if(this.pendingCaption=null,r)null===(t=this.delegate)||void 0===t||null===(e=t.attachmentEditorDidRequestUpdatingAttributesForAttachment)||void 0===e||e.call(t,{caption:r},this.attachment);else null===(i=this.delegate)||void 0===i||null===(n=i.attachmentEditorDidRequestRemovingAttributeForAttachment)||void 0===n||n.call(i,\"caption\",this.attachment)}}didClickToolbar(t){return t.preventDefault(),t.stopPropagation()}didClickActionButton(t){var e;if(\"remove\"===t.target.getAttribute(\"data-trix-action\"))return null===(e=this.delegate)||void 0===e?void 0:e.attachmentEditorDidRequestRemovalOfAttachment(this.attachment)}didKeyDownCaption(t){var e,i;if(\"return\"===Li[t.keyCode])return t.preventDefault(),this.savePendingCaption(),null===(e=this.delegate)||void 0===e||null===(i=e.attachmentEditorDidRequestDeselectingAttachment)||void 0===i?void 0:i.call(e,this.attachment)}didInputCaption(t){this.pendingCaption=t.target.value.replace(/\\s/g,\" \").trim()}didChangeCaption(t){return this.savePendingCaption()}didBlurCaption(t){return this.savePendingCaption()}}class Ti extends U{constructor(t,e){super(...arguments),this.didFocus=this.didFocus.bind(this),this.didBlur=this.didBlur.bind(this),this.didClickAttachment=this.didClickAttachment.bind(this),this.element=t,this.composition=e,this.documentView=new ue(this.composition.document,{element:this.element}),d(\"focus\",{onElement:this.element,withCallback:this.didFocus}),d(\"blur\",{onElement:this.element,withCallback:this.didBlur}),d(\"click\",{onElement:this.element,matchingSelector:\"a[contenteditable=false]\",preventDefault:!0}),d(\"mousedown\",{onElement:this.element,matchingSelector:\"[data-trix-attachment]\",withCallback:this.didClickAttachment}),d(\"click\",{onElement:this.element,matchingSelector:\"a\".concat(\"[data-trix-attachment]\"),preventDefault:!0})}didFocus(t){var e;const i=()=>{var t,e;if(!this.focused)return this.focused=!0,null===(t=this.delegate)||void 0===t||null===(e=t.compositionControllerDidFocus)||void 0===e?void 0:e.call(t)};return(null===(e=this.blurPromise)||void 0===e?void 0:e.then(i))||i()}didBlur(t){this.blurPromise=new Promise((t=>yt((()=>{var e,i;f(this.element)||(this.focused=null,null===(e=this.delegate)||void 0===e||null===(i=e.compositionControllerDidBlur)||void 0===i||i.call(e));return this.blurPromise=null,t()}))))}didClickAttachment(t,e){var i,n;const r=this.findAttachmentForElement(e),o=!!p(t.target,{matchingSelector:\"figcaption\"});return null===(i=this.delegate)||void 0===i||null===(n=i.compositionControllerDidSelectAttachment)||void 0===n?void 0:n.call(i,r,{editCaption:o})}getSerializableElement(){return this.isEditingAttachment()?this.documentView.shadowElement:this.element}render(){var t,e,i,n,r,o;(this.revision!==this.composition.revision&&(this.documentView.setDocument(this.composition.document),this.documentView.render(),this.revision=this.composition.revision),this.canSyncDocumentView()&&!this.documentView.isSynced())&&(null===(i=this.delegate)||void 0===i||null===(n=i.compositionControllerWillSyncDocumentView)||void 0===n||n.call(i),this.documentView.sync(),null===(r=this.delegate)||void 0===r||null===(o=r.compositionControllerDidSyncDocumentView)||void 0===o||o.call(r));return null===(t=this.delegate)||void 0===t||null===(e=t.compositionControllerDidRender)||void 0===e?void 0:e.call(t)}rerenderViewForObject(t){return this.invalidateViewForObject(t),this.render()}invalidateViewForObject(t){return this.documentView.invalidateViewForObject(t)}isViewCachingEnabled(){return this.documentView.isViewCachingEnabled()}enableViewCaching(){return this.documentView.enableViewCaching()}disableViewCaching(){return this.documentView.disableViewCaching()}refreshViewCache(){return this.documentView.garbageCollectCachedViews()}isEditingAttachment(){return!!this.attachmentEditor}installAttachmentEditorForAttachment(t,e){var i;if((null===(i=this.attachmentEditor)||void 0===i?void 0:i.attachment)===t)return;const n=this.documentView.findElementForObject(t);if(!n)return;this.uninstallAttachmentEditor();const r=this.composition.document.getAttachmentPieceForAttachment(t);this.attachmentEditor=new wi(r,n,this.element,e),this.attachmentEditor.delegate=this}uninstallAttachmentEditor(){var t;return null===(t=this.attachmentEditor)||void 0===t?void 0:t.uninstall()}didUninstallAttachmentEditor(){return this.attachmentEditor=null,this.render()}attachmentEditorDidRequestUpdatingAttributesForAttachment(t,e){var i,n;return null===(i=this.delegate)||void 0===i||null===(n=i.compositionControllerWillUpdateAttachment)||void 0===n||n.call(i,e),this.composition.updateAttributesForAttachment(t,e)}attachmentEditorDidRequestRemovingAttributeForAttachment(t,e){var i,n;return null===(i=this.delegate)||void 0===i||null===(n=i.compositionControllerWillUpdateAttachment)||void 0===n||n.call(i,e),this.composition.removeAttributeForAttachment(t,e)}attachmentEditorDidRequestRemovalOfAttachment(t){var e,i;return null===(e=this.delegate)||void 0===e||null===(i=e.compositionControllerDidRequestRemovalOfAttachment)||void 0===i?void 0:i.call(e,t)}attachmentEditorDidRequestDeselectingAttachment(t){var e,i;return null===(e=this.delegate)||void 0===e||null===(i=e.compositionControllerDidRequestDeselectingAttachment)||void 0===i?void 0:i.call(e,t)}canSyncDocumentView(){return!this.isEditingAttachment()}findAttachmentForElement(t){return this.composition.document.getAttachmentById(parseInt(t.dataset.trixId,10))}}class Fi extends U{}const Bi=\"[\".concat(\"data-trix-mutable\",\"]\"),Ii={attributes:!0,childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0};class Pi extends U{constructor(t){super(t),this.didMutate=this.didMutate.bind(this),this.element=t,this.observer=new window.MutationObserver(this.didMutate),this.start()}start(){return this.reset(),this.observer.observe(this.element,Ii)}stop(){return this.observer.disconnect()}didMutate(t){var e,i;if(this.mutations.push(...Array.from(this.findSignificantMutations(t)||[])),this.mutations.length)return null===(e=this.delegate)||void 0===e||null===(i=e.elementDidMutate)||void 0===i||i.call(e,this.getMutationSummary()),this.reset()}reset(){this.mutations=[]}findSignificantMutations(t){return t.filter((t=>this.mutationIsSignificant(t)))}mutationIsSignificant(t){if(this.nodeIsMutable(t.target))return!1;for(const e of Array.from(this.nodesModifiedByMutation(t)))if(this.nodeIsSignificant(e))return!0;return!1}nodeIsSignificant(t){return t!==this.element&&!this.nodeIsMutable(t)&&!B(t)}nodeIsMutable(t){return p(t,{matchingSelector:Bi})}nodesModifiedByMutation(t){const e=[];switch(t.type){case\"attributes\":\"data-trix-mutable\"!==t.attributeName&&e.push(t.target);break;case\"characterData\":e.push(t.target.parentNode),e.push(t.target);break;case\"childList\":e.push(...Array.from(t.addedNodes||[])),e.push(...Array.from(t.removedNodes||[]))}return e}getMutationSummary(){return this.getTextMutationSummary()}getTextMutationSummary(){const{additions:t,deletions:e}=this.getTextChangesFromCharacterData(),i=this.getTextChangesFromChildList();Array.from(i.additions).forEach((e=>{Array.from(t).includes(e)||t.push(e)})),e.push(...Array.from(i.deletions||[]));const n={},r=t.join(\"\");r&&(n.textAdded=r);const o=e.join(\"\");return o&&(n.textDeleted=o),n}getMutationsByType(t){return Array.from(this.mutations).filter((e=>e.type===t))}getTextChangesFromChildList(){let t,e;const i=[],n=[];Array.from(this.getMutationsByType(\"childList\")).forEach((t=>{i.push(...Array.from(t.addedNodes||[])),n.push(...Array.from(t.removedNodes||[]))}));0===i.length&&1===n.length&&D(n[0])?(t=[],e=[\"\\n\"]):(t=Ni(i),e=Ni(n));return{additions:t.filter(((t,i)=>t!==e[i])).map(Mt),deletions:e.filter(((e,i)=>e!==t[i])).map(Mt)}}getTextChangesFromCharacterData(){let t,e;const i=this.getMutationsByType(\"characterData\");if(i.length){const n=i[0],r=i[i.length-1],o=function(t,e){let i,n;return t=K.box(t),(e=K.box(e)).length<t.length?[n,i]=Ut(t,e):[i,n]=Ut(e,t),{added:i,removed:n}}(Mt(n.oldValue),Mt(r.target.data));t=o.added,e=o.removed}return{additions:t?[t]:[],deletions:e?[e]:[]}}}const Ni=function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const e=[];for(const i of Array.from(t))switch(i.nodeType){case Node.TEXT_NODE:e.push(i.data);break;case Node.ELEMENT_NODE:\"br\"===y(i)?e.push(\"\\n\"):e.push(...Array.from(Ni(i.childNodes)||[]))}return e};class Oi extends Qt{constructor(t){super(...arguments),this.file=t}perform(t){const e=new FileReader;return e.onerror=()=>t(!1),e.onload=()=>{e.onerror=null;try{e.abort()}catch(t){}return t(!0,this.file)},e.readAsArrayBuffer(this.file)}}class Mi{constructor(t){this.element=t}shouldIgnore(t){return!!o.samsungAndroid&&(this.previousEvent=this.event,this.event=t,this.checkSamsungKeyboardBuggyModeStart(),this.checkSamsungKeyboardBuggyModeEnd(),this.buggyMode)}checkSamsungKeyboardBuggyModeStart(){this.insertingLongTextAfterUnidentifiedChar()&&ji(this.element.innerText,this.event.data)&&(this.buggyMode=!0,this.event.preventDefault())}checkSamsungKeyboardBuggyModeEnd(){this.buggyMode&&\"insertText\"!==this.event.inputType&&(this.buggyMode=!1)}insertingLongTextAfterUnidentifiedChar(){var t;return this.isBeforeInputInsertText()&&this.previousEventWasUnidentifiedKeydown()&&(null===(t=this.event.data)||void 0===t?void 0:t.length)>50}isBeforeInputInsertText(){return\"beforeinput\"===this.event.type&&\"insertText\"===this.event.inputType}previousEventWasUnidentifiedKeydown(){var t,e;return\"keydown\"===(null===(t=this.previousEvent)||void 0===t?void 0:t.type)&&\"Unidentified\"===(null===(e=this.previousEvent)||void 0===e?void 0:e.key)}}const ji=(t,e)=>Ui(t)===Ui(e),Wi=new RegExp(\"(\".concat(\"\uFFFC\",\"|\").concat(\"\\ufeff\",\"|\").concat(\"\u00A0\",\"|\\\\s)+\"),\"g\"),Ui=t=>t.replace(Wi,\" \").trim();class qi extends U{constructor(t){super(...arguments),this.element=t,this.mutationObserver=new Pi(this.element),this.mutationObserver.delegate=this,this.flakyKeyboardDetector=new Mi(this.element);for(const t in this.constructor.events)d(t,{onElement:this.element,withCallback:this.handlerFor(t)})}elementDidMutate(t){}editorWillSyncDocumentView(){return this.mutationObserver.stop()}editorDidSyncDocumentView(){return this.mutationObserver.start()}requestRender(){var t,e;return null===(t=this.delegate)||void 0===t||null===(e=t.inputControllerDidRequestRender)||void 0===e?void 0:e.call(t)}requestReparse(){var t,e;return null===(t=this.delegate)||void 0===t||null===(e=t.inputControllerDidRequestReparse)||void 0===e||e.call(t),this.requestRender()}attachFiles(t){const e=Array.from(t).map((t=>new Oi(t)));return Promise.all(e).then((t=>{this.handleInput((function(){var e,i;return null===(e=this.delegate)||void 0===e||e.inputControllerWillAttachFiles(),null===(i=this.responder)||void 0===i||i.insertFiles(t),this.requestRender()}))}))}handlerFor(t){return e=>{e.defaultPrevented||this.handleInput((()=>{if(!f(this.element)){if(this.flakyKeyboardDetector.shouldIgnore(e))return;this.eventName=t,this.constructor.events[t].call(this,e)}}))}}handleInput(t){try{var e;null===(e=this.delegate)||void 0===e||e.inputControllerWillHandleInput(),t.call(this)}finally{var i;null===(i=this.delegate)||void 0===i||i.inputControllerDidHandleInput()}}createLinkHTML(t,e){const i=document.createElement(\"a\");return i.href=t,i.textContent=e||t,i.outerHTML}}var Vi;be(qi,\"events\",{});const{browser:zi,keyNames:_i}=W;let Hi=0;class Ji extends qi{constructor(){super(...arguments),this.resetInputSummary()}setInputSummary(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.inputSummary.eventName=this.eventName;for(const e in t){const i=t[e];this.inputSummary[e]=i}return this.inputSummary}resetInputSummary(){this.inputSummary={}}reset(){return this.resetInputSummary(),Ft.reset()}elementDidMutate(t){var e,i;return this.isComposing()?null===(e=this.delegate)||void 0===e||null===(i=e.inputControllerDidAllowUnhandledInput)||void 0===i?void 0:i.call(e):this.handleInput((function(){return this.mutationIsSignificant(t)&&(this.mutationIsExpected(t)?this.requestRender():this.requestReparse()),this.reset()}))}mutationIsExpected(t){let{textAdded:e,textDeleted:i}=t;if(this.inputSummary.preferDocument)return!0;const n=null!=e?e===this.inputSummary.textAdded:!this.inputSummary.textAdded,r=null!=i?this.inputSummary.didDelete:!this.inputSummary.didDelete,o=[\"\\n\",\" \\n\"].includes(e)&&!n,s=\"\\n\"===i&&!r;if(o&&!s||s&&!o){const t=this.getSelectedRange();if(t){var a;const i=o?e.replace(/\\n$/,\"\").length||-1:(null==e?void 0:e.length)||1;if(null!==(a=this.responder)&&void 0!==a&&a.positionIsBlockBreak(t[1]+i))return!0}}return n&&r}mutationIsSignificant(t){var e;const i=Object.keys(t).length>0,n=\"\"===(null===(e=this.compositionInput)||void 0===e?void 0:e.getEndData());return i||!n}getCompositionInput(){if(this.isComposing())return this.compositionInput;this.compositionInput=new Yi(this)}isComposing(){return this.compositionInput&&!this.compositionInput.isEnded()}deleteInDirection(t,e){var i;return!1!==(null===(i=this.responder)||void 0===i?void 0:i.deleteInDirection(t))?this.setInputSummary({didDelete:!0}):e?(e.preventDefault(),this.requestRender()):void 0}serializeSelectionToDataTransfer(t){var e;if(!function(t){if(null==t||!t.setData)return!1;for(const e in vt){const i=vt[e];try{if(t.setData(e,i),!t.getData(e)===i)return!1}catch(t){return!1}}return!0}(t))return;const i=null===(e=this.responder)||void 0===e?void 0:e.getSelectedDocument().toSerializableDocument();return t.setData(\"application/x-trix-document\",JSON.stringify(i)),t.setData(\"text/html\",ue.render(i).innerHTML),t.setData(\"text/plain\",i.toString().replace(/\\n$/,\"\")),!0}canAcceptDataTransfer(t){const e={};return Array.from((null==t?void 0:t.types)||[]).forEach((t=>{e[t]=!0})),e.Files||e[\"application/x-trix-document\"]||e[\"text/html\"]||e[\"text/plain\"]}getPastedHTMLUsingHiddenElement(t){const e=this.getSelectedRange(),i={position:\"absolute\",left:\"\".concat(window.pageXOffset,\"px\"),top:\"\".concat(window.pageYOffset,\"px\"),opacity:0},n=C({style:i,tagName:\"div\",editable:!0});return document.body.appendChild(n),n.focus(),requestAnimationFrame((()=>{const i=n.innerHTML;return A(n),this.setSelectedRange(e),t(i)}))}}be(Ji,\"events\",{keydown(t){this.isComposing()||this.resetInputSummary(),this.inputSummary.didInput=!0;const e=_i[t.keyCode];if(e){var i;let n=this.keys;[\"ctrl\",\"alt\",\"shift\",\"meta\"].forEach((e=>{var i;t[\"\".concat(e,\"Key\")]&&(\"ctrl\"===e&&(e=\"control\"),n=null===(i=n)||void 0===i?void 0:i[e])})),null!=(null===(i=n)||void 0===i?void 0:i[e])&&(this.setInputSummary({keyName:e}),Ft.reset(),n[e].call(this,t))}if(xt(t)){const e=String.fromCharCode(t.keyCode).toLowerCase();if(e){var n;const i=[\"alt\",\"shift\"].map((e=>{if(t[\"\".concat(e,\"Key\")])return e})).filter((t=>t));i.push(e),null!==(n=this.delegate)&&void 0!==n&&n.inputControllerDidReceiveKeyboardCommand(i)&&t.preventDefault()}}},keypress(t){if(null!=this.inputSummary.eventName)return;if(t.metaKey)return;if(t.ctrlKey&&!t.altKey)return;const e=$i(t);var i,n;return e?(null===(i=this.delegate)||void 0===i||i.inputControllerWillPerformTyping(),null===(n=this.responder)||void 0===n||n.insertString(e),this.setInputSummary({textAdded:e,didDelete:this.selectionIsExpanded()})):void 0},textInput(t){const{data:e}=t,{textAdded:i}=this.inputSummary;if(i&&i!==e&&i.toUpperCase()===e){var n;const t=this.getSelectedRange();return this.setSelectedRange([t[0],t[1]+i.length]),null===(n=this.responder)||void 0===n||n.insertString(e),this.setInputSummary({textAdded:e}),this.setSelectedRange(t)}},dragenter(t){t.preventDefault()},dragstart(t){var e,i;return this.serializeSelectionToDataTransfer(t.dataTransfer),this.draggedRange=this.getSelectedRange(),null===(e=this.delegate)||void 0===e||null===(i=e.inputControllerDidStartDrag)||void 0===i?void 0:i.call(e)},dragover(t){if(this.draggedRange||this.canAcceptDataTransfer(t.dataTransfer)){t.preventDefault();const n={x:t.clientX,y:t.clientY};var e,i;if(!Rt(n,this.draggingPoint))return this.draggingPoint=n,null===(e=this.delegate)||void 0===e||null===(i=e.inputControllerDidReceiveDragOverPoint)||void 0===i?void 0:i.call(e,this.draggingPoint)}},dragend(t){var e,i;null===(e=this.delegate)||void 0===e||null===(i=e.inputControllerDidCancelDrag)||void 0===i||i.call(e),this.draggedRange=null,this.draggingPoint=null},drop(t){var e,i;t.preventDefault();const n=null===(e=t.dataTransfer)||void 0===e?void 0:e.files,r=t.dataTransfer.getData(\"application/x-trix-document\"),o={x:t.clientX,y:t.clientY};if(null===(i=this.responder)||void 0===i||i.setLocationRangeFromPointRange(o),null!=n&&n.length)this.attachFiles(n);else if(this.draggedRange){var s,a;null===(s=this.delegate)||void 0===s||s.inputControllerWillMoveText(),null===(a=this.responder)||void 0===a||a.moveTextFromRange(this.draggedRange),this.draggedRange=null,this.requestRender()}else if(r){var l;const t=je.fromJSONString(r);null===(l=this.responder)||void 0===l||l.insertDocument(t),this.requestRender()}this.draggedRange=null,this.draggingPoint=null},cut(t){var e,i;if(null!==(e=this.responder)&&void 0!==e&&e.selectionIsExpanded()&&(this.serializeSelectionToDataTransfer(t.clipboardData)&&t.preventDefault(),null===(i=this.delegate)||void 0===i||i.inputControllerWillCutText(),this.deleteInDirection(\"backward\"),t.defaultPrevented))return this.requestRender()},copy(t){var e;null!==(e=this.responder)&&void 0!==e&&e.selectionIsExpanded()&&this.serializeSelectionToDataTransfer(t.clipboardData)&&t.preventDefault()},paste(t){const e=t.clipboardData||t.testClipboardData,i={clipboard:e};if(!e||Xi(t))return void this.getPastedHTMLUsingHiddenElement((t=>{var e,n,r;return i.type=\"text/html\",i.html=t,null===(e=this.delegate)||void 0===e||e.inputControllerWillPaste(i),null===(n=this.responder)||void 0===n||n.insertHTML(i.html),this.requestRender(),null===(r=this.delegate)||void 0===r?void 0:r.inputControllerDidPaste(i)}));const n=e.getData(\"URL\"),r=e.getData(\"text/html\"),o=e.getData(\"public.url-name\");if(n){var s,a,l;let t;i.type=\"text/html\",t=o?Wt(o).trim():n,i.html=this.createLinkHTML(n,t),null===(s=this.delegate)||void 0===s||s.inputControllerWillPaste(i),this.setInputSummary({textAdded:t,didDelete:this.selectionIsExpanded()}),null===(a=this.responder)||void 0===a||a.insertHTML(i.html),this.requestRender(),null===(l=this.delegate)||void 0===l||l.inputControllerDidPaste(i)}else if(At(e)){var c,h,u;i.type=\"text/plain\",i.string=e.getData(\"text/plain\"),null===(c=this.delegate)||void 0===c||c.inputControllerWillPaste(i),this.setInputSummary({textAdded:i.string,didDelete:this.selectionIsExpanded()}),null===(h=this.responder)||void 0===h||h.insertString(i.string),this.requestRender(),null===(u=this.delegate)||void 0===u||u.inputControllerDidPaste(i)}else if(r){var d,g,m;i.type=\"text/html\",i.html=r,null===(d=this.delegate)||void 0===d||d.inputControllerWillPaste(i),null===(g=this.responder)||void 0===g||g.insertHTML(i.html),this.requestRender(),null===(m=this.delegate)||void 0===m||m.inputControllerDidPaste(i)}else if(Array.from(e.types).includes(\"Files\")){var p,f,b;const t=null===(p=e.items)||void 0===p||null===(f=p[0])||void 0===f||null===(b=f.getAsFile)||void 0===b?void 0:b.call(f);if(t){var v,A,x;const e=Ki(t);!t.name&&e&&(t.name=\"pasted-file-\".concat(++Hi,\".\").concat(e)),i.type=\"File\",i.file=t,null===(v=this.delegate)||void 0===v||v.inputControllerWillAttachFiles(),null===(A=this.responder)||void 0===A||A.insertFile(i.file),this.requestRender(),null===(x=this.delegate)||void 0===x||x.inputControllerDidPaste(i)}}t.preventDefault()},compositionstart(t){return this.getCompositionInput().start(t.data)},compositionupdate(t){return this.getCompositionInput().update(t.data)},compositionend(t){return this.getCompositionInput().end(t.data)},beforeinput(t){this.inputSummary.didInput=!0},input(t){return this.inputSummary.didInput=!0,t.stopPropagation()}}),be(Ji,\"keys\",{backspace(t){var e;return null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),this.deleteInDirection(\"backward\",t)},delete(t){var e;return null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),this.deleteInDirection(\"forward\",t)},return(t){var e,i;return this.setInputSummary({preferDocument:!0}),null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),null===(i=this.responder)||void 0===i?void 0:i.insertLineBreak()},tab(t){var e,i;null!==(e=this.responder)&&void 0!==e&&e.canIncreaseNestingLevel()&&(null===(i=this.responder)||void 0===i||i.increaseNestingLevel(),this.requestRender(),t.preventDefault())},left(t){var e;if(this.selectionIsInCursorTarget())return t.preventDefault(),null===(e=this.responder)||void 0===e?void 0:e.moveCursorInDirection(\"backward\")},right(t){var e;if(this.selectionIsInCursorTarget())return t.preventDefault(),null===(e=this.responder)||void 0===e?void 0:e.moveCursorInDirection(\"forward\")},control:{d(t){var e;return null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),this.deleteInDirection(\"forward\",t)},h(t){var e;return null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),this.deleteInDirection(\"backward\",t)},o(t){var e,i;return t.preventDefault(),null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),null===(i=this.responder)||void 0===i||i.insertString(\"\\n\",{updatePosition:!1}),this.requestRender()}},shift:{return(t){var e,i;null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),null===(i=this.responder)||void 0===i||i.insertString(\"\\n\"),this.requestRender(),t.preventDefault()},tab(t){var e,i;null!==(e=this.responder)&&void 0!==e&&e.canDecreaseNestingLevel()&&(null===(i=this.responder)||void 0===i||i.decreaseNestingLevel(),this.requestRender(),t.preventDefault())},left(t){if(this.selectionIsInCursorTarget())return t.preventDefault(),this.expandSelectionInDirection(\"backward\")},right(t){if(this.selectionIsInCursorTarget())return t.preventDefault(),this.expandSelectionInDirection(\"forward\")}},alt:{backspace(t){var e;return this.setInputSummary({preferDocument:!1}),null===(e=this.delegate)||void 0===e?void 0:e.inputControllerWillPerformTyping()}},meta:{backspace(t){var e;return this.setInputSummary({preferDocument:!1}),null===(e=this.delegate)||void 0===e?void 0:e.inputControllerWillPerformTyping()}}}),Ji.proxyMethod(\"responder?.getSelectedRange\"),Ji.proxyMethod(\"responder?.setSelectedRange\"),Ji.proxyMethod(\"responder?.expandSelectionInDirection\"),Ji.proxyMethod(\"responder?.selectionIsInCursorTarget\"),Ji.proxyMethod(\"responder?.selectionIsExpanded\");const Ki=t=>{var e,i;return null===(e=t.type)||void 0===e||null===(i=e.match(/\\/(\\w+)$/))||void 0===i?void 0:i[1]},Gi=!(null===(Vi=\" \".codePointAt)||void 0===Vi||!Vi.call(\" \",0)),$i=function(t){if(t.key&&Gi&&t.key.codePointAt(0)===t.keyCode)return t.key;{let e;if(null===t.which?e=t.keyCode:0!==t.which&&0!==t.charCode&&(e=t.charCode),null!=e&&\"escape\"!==_i[e])return K.fromCodepoints([e]).toString()}},Xi=function(t){const e=t.clipboardData;if(e){if(e.types.includes(\"text/html\")){for(const t of e.types){const i=/^CorePasteboardFlavorType/.test(t),n=/^dyn\\./.test(t)&&e.getData(t);if(i||n)return!0}return!1}{const t=e.types.includes(\"com.apple.webarchive\"),i=e.types.includes(\"com.apple.flat-rtfd\");return t||i}}};class Yi extends U{constructor(t){super(...arguments),this.inputController=t,this.responder=this.inputController.responder,this.delegate=this.inputController.delegate,this.inputSummary=this.inputController.inputSummary,this.data={}}start(t){if(this.data.start=t,this.isSignificant()){var e,i;if(\"keypress\"===this.inputSummary.eventName&&this.inputSummary.textAdded)null===(i=this.responder)||void 0===i||i.deleteInDirection(\"left\");this.selectionIsExpanded()||(this.insertPlaceholder(),this.requestRender()),this.range=null===(e=this.responder)||void 0===e?void 0:e.getSelectedRange()}}update(t){if(this.data.update=t,this.isSignificant()){const t=this.selectPlaceholder();t&&(this.forgetPlaceholder(),this.range=t)}}end(t){return this.data.end=t,this.isSignificant()?(this.forgetPlaceholder(),this.canApplyToDocument()?(this.setInputSummary({preferDocument:!0,didInput:!1}),null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),null===(i=this.responder)||void 0===i||i.setSelectedRange(this.range),null===(n=this.responder)||void 0===n||n.insertString(this.data.end),null===(r=this.responder)||void 0===r?void 0:r.setSelectedRange(this.range[0]+this.data.end.length)):null!=this.data.start||null!=this.data.update?(this.requestReparse(),this.inputController.reset()):void 0):this.inputController.reset();var e,i,n,r}getEndData(){return this.data.end}isEnded(){return null!=this.getEndData()}isSignificant(){return!zi.composesExistingText||this.inputSummary.didInput}canApplyToDocument(){var t,e;return 0===(null===(t=this.data.start)||void 0===t?void 0:t.length)&&(null===(e=this.data.end)||void 0===e?void 0:e.length)>0&&this.range}}Yi.proxyMethod(\"inputController.setInputSummary\"),Yi.proxyMethod(\"inputController.requestRender\"),Yi.proxyMethod(\"inputController.requestReparse\"),Yi.proxyMethod(\"responder?.selectionIsExpanded\"),Yi.proxyMethod(\"responder?.insertPlaceholder\"),Yi.proxyMethod(\"responder?.selectPlaceholder\"),Yi.proxyMethod(\"responder?.forgetPlaceholder\");class Qi extends qi{constructor(){super(...arguments),this.render=this.render.bind(this)}elementDidMutate(){return this.scheduledRender?this.composing?null===(t=this.delegate)||void 0===t||null===(e=t.inputControllerDidAllowUnhandledInput)||void 0===e?void 0:e.call(t):void 0:this.reparse();var t,e}scheduleRender(){return this.scheduledRender?this.scheduledRender:this.scheduledRender=requestAnimationFrame(this.render)}render(){var t,e;(cancelAnimationFrame(this.scheduledRender),this.scheduledRender=null,this.composing)||(null===(e=this.delegate)||void 0===e||e.render());null===(t=this.afterRender)||void 0===t||t.call(this),this.afterRender=null}reparse(){var t;return null===(t=this.delegate)||void 0===t?void 0:t.reparse()}insertString(){var t;let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:\"\",i=arguments.length>1?arguments[1]:void 0;return null===(t=this.delegate)||void 0===t||t.inputControllerWillPerformTyping(),this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.insertString(e,i)}))}toggleAttributeIfSupported(t){var e;if(ct().includes(t))return null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformFormatting(t),this.withTargetDOMRange((function(){var e;return null===(e=this.responder)||void 0===e?void 0:e.toggleCurrentAttribute(t)}))}activateAttributeIfSupported(t,e){var i;if(ct().includes(t))return null===(i=this.delegate)||void 0===i||i.inputControllerWillPerformFormatting(t),this.withTargetDOMRange((function(){var i;return null===(i=this.responder)||void 0===i?void 0:i.setCurrentAttribute(t,e)}))}deleteInDirection(t){let{recordUndoEntry:e}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{recordUndoEntry:!0};var i;e&&(null===(i=this.delegate)||void 0===i||i.inputControllerWillPerformTyping());const n=()=>{var e;return null===(e=this.responder)||void 0===e?void 0:e.deleteInDirection(t)},r=this.getTargetDOMRange({minLength:2});return r?this.withTargetDOMRange(r,n):n()}withTargetDOMRange(t,e){var i;return\"function\"==typeof t&&(e=t,t=this.getTargetDOMRange()),t?null===(i=this.responder)||void 0===i?void 0:i.withTargetDOMRange(t,e.bind(this)):(Ft.reset(),e.call(this))}getTargetDOMRange(){var t,e;let{minLength:i}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{minLength:0};const n=null===(t=(e=this.event).getTargetRanges)||void 0===t?void 0:t.call(e);if(n&&n.length){const t=Zi(n[0]);if(0===i||t.toString().length>=i)return t}}withEvent(t,e){let i;this.event=t;try{i=e.call(this)}finally{this.event=null}return i}}be(Qi,\"events\",{keydown(t){if(xt(t)){var e;const i=rn(t);null!==(e=this.delegate)&&void 0!==e&&e.inputControllerDidReceiveKeyboardCommand(i)&&t.preventDefault()}else{let e=t.key;t.altKey&&(e+=\"+Alt\"),t.shiftKey&&(e+=\"+Shift\");const i=this.constructor.keys[e];if(i)return this.withEvent(t,i)}},paste(t){var e;let i;const n=null===(e=t.clipboardData)||void 0===e?void 0:e.getData(\"URL\");return en(t)?(t.preventDefault(),this.attachFiles(t.clipboardData.files)):nn(t)?(t.preventDefault(),i={type:\"text/plain\",string:t.clipboardData.getData(\"text/plain\")},null===(r=this.delegate)||void 0===r||r.inputControllerWillPaste(i),null===(o=this.responder)||void 0===o||o.insertString(i.string),this.render(),null===(s=this.delegate)||void 0===s?void 0:s.inputControllerDidPaste(i)):n?(t.preventDefault(),i={type:\"text/html\",html:this.createLinkHTML(n)},null===(a=this.delegate)||void 0===a||a.inputControllerWillPaste(i),null===(l=this.responder)||void 0===l||l.insertHTML(i.html),this.render(),null===(c=this.delegate)||void 0===c?void 0:c.inputControllerDidPaste(i)):void 0;var r,o,s,a,l,c},beforeinput(t){const e=this.constructor.inputTypes[t.inputType];e&&(this.withEvent(t,e),this.scheduleRender())},input(t){Ft.reset()},dragstart(t){var e,i;null!==(e=this.responder)&&void 0!==e&&e.selectionContainsAttachments()&&(t.dataTransfer.setData(\"application/x-trix-dragging\",!0),this.dragging={range:null===(i=this.responder)||void 0===i?void 0:i.getSelectedRange(),point:on(t)})},dragenter(t){tn(t)&&t.preventDefault()},dragover(t){if(this.dragging){t.preventDefault();const i=on(t);var e;if(!Rt(i,this.dragging.point))return this.dragging.point=i,null===(e=this.responder)||void 0===e?void 0:e.setLocationRangeFromPointRange(i)}else tn(t)&&t.preventDefault()},drop(t){var e,i;if(this.dragging)return t.preventDefault(),null===(e=this.delegate)||void 0===e||e.inputControllerWillMoveText(),null===(i=this.responder)||void 0===i||i.moveTextFromRange(this.dragging.range),this.dragging=null,this.scheduleRender();if(tn(t)){var n;t.preventDefault();const e=on(t);return null===(n=this.responder)||void 0===n||n.setLocationRangeFromPointRange(e),this.attachFiles(t.dataTransfer.files)}},dragend(){var t;this.dragging&&(null===(t=this.responder)||void 0===t||t.setSelectedRange(this.dragging.range),this.dragging=null)},compositionend(t){this.composing&&(this.composing=!1,o.recentAndroid||this.scheduleRender())}}),be(Qi,\"keys\",{ArrowLeft(){var t,e;if(null!==(t=this.responder)&&void 0!==t&&t.shouldManageMovingCursorInDirection(\"backward\"))return this.event.preventDefault(),null===(e=this.responder)||void 0===e?void 0:e.moveCursorInDirection(\"backward\")},ArrowRight(){var t,e;if(null!==(t=this.responder)&&void 0!==t&&t.shouldManageMovingCursorInDirection(\"forward\"))return this.event.preventDefault(),null===(e=this.responder)||void 0===e?void 0:e.moveCursorInDirection(\"forward\")},Backspace(){var t,e,i;if(null!==(t=this.responder)&&void 0!==t&&t.shouldManageDeletingInDirection(\"backward\"))return this.event.preventDefault(),null===(e=this.delegate)||void 0===e||e.inputControllerWillPerformTyping(),null===(i=this.responder)||void 0===i||i.deleteInDirection(\"backward\"),this.render()},Tab(){var t,e;if(null!==(t=this.responder)&&void 0!==t&&t.canIncreaseNestingLevel())return this.event.preventDefault(),null===(e=this.responder)||void 0===e||e.increaseNestingLevel(),this.render()},\"Tab+Shift\"(){var t,e;if(null!==(t=this.responder)&&void 0!==t&&t.canDecreaseNestingLevel())return this.event.preventDefault(),null===(e=this.responder)||void 0===e||e.decreaseNestingLevel(),this.render()}}),be(Qi,\"inputTypes\",{deleteByComposition(){return this.deleteInDirection(\"backward\",{recordUndoEntry:!1})},deleteByCut(){return this.deleteInDirection(\"backward\")},deleteByDrag(){return this.event.preventDefault(),this.withTargetDOMRange((function(){var t;this.deleteByDragRange=null===(t=this.responder)||void 0===t?void 0:t.getSelectedRange()}))},deleteCompositionText(){return this.deleteInDirection(\"backward\",{recordUndoEntry:!1})},deleteContent(){return this.deleteInDirection(\"backward\")},deleteContentBackward(){return this.deleteInDirection(\"backward\")},deleteContentForward(){return this.deleteInDirection(\"forward\")},deleteEntireSoftLine(){return this.deleteInDirection(\"forward\")},deleteHardLineBackward(){return this.deleteInDirection(\"backward\")},deleteHardLineForward(){return this.deleteInDirection(\"forward\")},deleteSoftLineBackward(){return this.deleteInDirection(\"backward\")},deleteSoftLineForward(){return this.deleteInDirection(\"forward\")},deleteWordBackward(){return this.deleteInDirection(\"backward\")},deleteWordForward(){return this.deleteInDirection(\"forward\")},formatBackColor(){return this.activateAttributeIfSupported(\"backgroundColor\",this.event.data)},formatBold(){return this.toggleAttributeIfSupported(\"bold\")},formatFontColor(){return this.activateAttributeIfSupported(\"color\",this.event.data)},formatFontName(){return this.activateAttributeIfSupported(\"font\",this.event.data)},formatIndent(){var t;if(null!==(t=this.responder)&&void 0!==t&&t.canIncreaseNestingLevel())return this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.increaseNestingLevel()}))},formatItalic(){return this.toggleAttributeIfSupported(\"italic\")},formatJustifyCenter(){return this.toggleAttributeIfSupported(\"justifyCenter\")},formatJustifyFull(){return this.toggleAttributeIfSupported(\"justifyFull\")},formatJustifyLeft(){return this.toggleAttributeIfSupported(\"justifyLeft\")},formatJustifyRight(){return this.toggleAttributeIfSupported(\"justifyRight\")},formatOutdent(){var t;if(null!==(t=this.responder)&&void 0!==t&&t.canDecreaseNestingLevel())return this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.decreaseNestingLevel()}))},formatRemove(){this.withTargetDOMRange((function(){for(const i in null===(t=this.responder)||void 0===t?void 0:t.getCurrentAttributes()){var t,e;null===(e=this.responder)||void 0===e||e.removeCurrentAttribute(i)}}))},formatSetBlockTextDirection(){return this.activateAttributeIfSupported(\"blockDir\",this.event.data)},formatSetInlineTextDirection(){return this.activateAttributeIfSupported(\"textDir\",this.event.data)},formatStrikeThrough(){return this.toggleAttributeIfSupported(\"strike\")},formatSubscript(){return this.toggleAttributeIfSupported(\"sub\")},formatSuperscript(){return this.toggleAttributeIfSupported(\"sup\")},formatUnderline(){return this.toggleAttributeIfSupported(\"underline\")},historyRedo(){var t;return null===(t=this.delegate)||void 0===t?void 0:t.inputControllerWillPerformRedo()},historyUndo(){var t;return null===(t=this.delegate)||void 0===t?void 0:t.inputControllerWillPerformUndo()},insertCompositionText(){return this.composing=!0,this.insertString(this.event.data)},insertFromComposition(){return this.composing=!1,this.insertString(this.event.data)},insertFromDrop(){const t=this.deleteByDragRange;var e;if(t)return this.deleteByDragRange=null,null===(e=this.delegate)||void 0===e||e.inputControllerWillMoveText(),this.withTargetDOMRange((function(){var e;return null===(e=this.responder)||void 0===e?void 0:e.moveTextFromRange(t)}))},insertFromPaste(){var t;const{dataTransfer:e}=this.event,i={dataTransfer:e},n=e.getData(\"URL\"),r=e.getData(\"text/html\");if(n){var o;let t;this.event.preventDefault(),i.type=\"text/html\";const r=e.getData(\"public.url-name\");t=r?Wt(r).trim():n,i.html=this.createLinkHTML(n,t),null===(o=this.delegate)||void 0===o||o.inputControllerWillPaste(i),this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.insertHTML(i.html)})),this.afterRender=()=>{var t;return null===(t=this.delegate)||void 0===t?void 0:t.inputControllerDidPaste(i)}}else if(At(e)){var s;i.type=\"text/plain\",i.string=e.getData(\"text/plain\"),null===(s=this.delegate)||void 0===s||s.inputControllerWillPaste(i),this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.insertString(i.string)})),this.afterRender=()=>{var t;return null===(t=this.delegate)||void 0===t?void 0:t.inputControllerDidPaste(i)}}else if(r){var a;this.event.preventDefault(),i.type=\"text/html\",i.html=r,null===(a=this.delegate)||void 0===a||a.inputControllerWillPaste(i),this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.insertHTML(i.html)})),this.afterRender=()=>{var t;return null===(t=this.delegate)||void 0===t?void 0:t.inputControllerDidPaste(i)}}else if(null!==(t=e.files)&&void 0!==t&&t.length){var l;i.type=\"File\",i.file=e.files[0],null===(l=this.delegate)||void 0===l||l.inputControllerWillPaste(i),this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.insertFile(i.file)})),this.afterRender=()=>{var t;return null===(t=this.delegate)||void 0===t?void 0:t.inputControllerDidPaste(i)}}},insertFromYank(){return this.insertString(this.event.data)},insertLineBreak(){return this.insertString(\"\\n\")},insertLink(){return this.activateAttributeIfSupported(\"href\",this.event.data)},insertOrderedList(){return this.toggleAttributeIfSupported(\"number\")},insertParagraph(){var t;return null===(t=this.delegate)||void 0===t||t.inputControllerWillPerformTyping(),this.withTargetDOMRange((function(){var t;return null===(t=this.responder)||void 0===t?void 0:t.insertLineBreak()}))},insertReplacementText(){return this.insertString(this.event.dataTransfer.getData(\"text/plain\"),{updatePosition:!1})},insertText(){var t;return this.insertString(this.event.data||(null===(t=this.event.dataTransfer)||void 0===t?void 0:t.getData(\"text/plain\")))},insertTranspose(){return this.insertString(this.event.data)},insertUnorderedList(){return this.toggleAttributeIfSupported(\"bullet\")}});const Zi=function(t){const e=document.createRange();return e.setStart(t.startContainer,t.startOffset),e.setEnd(t.endContainer,t.endOffset),e},tn=t=>{var e;return Array.from((null===(e=t.dataTransfer)||void 0===e?void 0:e.types)||[]).includes(\"Files\")},en=function(t){const e=t.clipboardData;if(e)return e.types.includes(\"Files\")&&1===e.types.length&&e.files.length>=1},nn=function(t){const e=t.clipboardData;if(e)return e.types.includes(\"text/plain\")&&1===e.types.length},rn=function(t){const e=[];return t.altKey&&e.push(\"alt\"),t.shiftKey&&e.push(\"shift\"),e.push(t.key),e},on=t=>({x:t.clientX,y:t.clientY}),sn=\"\".concat(\"[data-trix-attribute]\",\", \").concat(\"[data-trix-action]\"),an=\"\".concat(\"[data-trix-dialog]\",\"[data-trix-active]\"),ln=\"\".concat(\"[data-trix-dialog]\",\" [data-trix-method]\"),cn=\"\".concat(\"[data-trix-dialog]\",\" [data-trix-input]\"),hn=(t,e)=>(e||(e=dn(t)),t.querySelector(\"[data-trix-input][name='\".concat(e,\"']\"))),un=t=>t.getAttribute(\"data-trix-action\"),dn=t=>t.getAttribute(\"data-trix-attribute\")||t.getAttribute(\"data-trix-dialog-attribute\");class gn extends U{constructor(t){super(t),this.didClickActionButton=this.didClickActionButton.bind(this),this.didClickAttributeButton=this.didClickAttributeButton.bind(this),this.didClickDialogButton=this.didClickDialogButton.bind(this),this.didKeyDownDialogInput=this.didKeyDownDialogInput.bind(this),this.element=t,this.attributes={},this.actions={},this.resetDialogInputs(),d(\"mousedown\",{onElement:this.element,matchingSelector:\"[data-trix-action]\",withCallback:this.didClickActionButton}),d(\"mousedown\",{onElement:this.element,matchingSelector:\"[data-trix-attribute]\",withCallback:this.didClickAttributeButton}),d(\"click\",{onElement:this.element,matchingSelector:sn,preventDefault:!0}),d(\"click\",{onElement:this.element,matchingSelector:ln,withCallback:this.didClickDialogButton}),d(\"keydown\",{onElement:this.element,matchingSelector:cn,withCallback:this.didKeyDownDialogInput})}didClickActionButton(t,e){var i;null===(i=this.delegate)||void 0===i||i.toolbarDidClickButton(),t.preventDefault();const n=un(e);return this.getDialog(n)?this.toggleDialog(n):null===(r=this.delegate)||void 0===r?void 0:r.toolbarDidInvokeAction(n);var r}didClickAttributeButton(t,e){var i;null===(i=this.delegate)||void 0===i||i.toolbarDidClickButton(),t.preventDefault();const n=dn(e);var r;this.getDialog(n)?this.toggleDialog(n):null===(r=this.delegate)||void 0===r||r.toolbarDidToggleAttribute(n);return this.refreshAttributeButtons()}didClickDialogButton(t,e){const i=p(e,{matchingSelector:\"[data-trix-dialog]\"});return this[e.getAttribute(\"data-trix-method\")].call(this,i)}didKeyDownDialogInput(t,e){if(13===t.keyCode){t.preventDefault();const i=e.getAttribute(\"name\"),n=this.getDialog(i);this.setAttribute(n)}if(27===t.keyCode)return t.preventDefault(),this.hideDialog()}updateActions(t){return this.actions=t,this.refreshActionButtons()}refreshActionButtons(){return this.eachActionButton(((t,e)=>{t.disabled=!1===this.actions[e]}))}eachActionButton(t){return Array.from(this.element.querySelectorAll(\"[data-trix-action]\")).map((e=>t(e,un(e))))}updateAttributes(t){return this.attributes=t,this.refreshAttributeButtons()}refreshAttributeButtons(){return this.eachAttributeButton(((t,e)=>(t.disabled=!1===this.attributes[e],this.attributes[e]||this.dialogIsVisible(e)?(t.setAttribute(\"data-trix-active\",\"\"),t.classList.add(\"trix-active\")):(t.removeAttribute(\"data-trix-active\"),t.classList.remove(\"trix-active\")))))}eachAttributeButton(t){return Array.from(this.element.querySelectorAll(\"[data-trix-attribute]\")).map((e=>t(e,dn(e))))}applyKeyboardCommand(t){const e=JSON.stringify(t.sort());for(const t of Array.from(this.element.querySelectorAll(\"[data-trix-key]\"))){const i=t.getAttribute(\"data-trix-key\").split(\"+\");if(JSON.stringify(i.sort())===e)return g(\"mousedown\",{onElement:t}),!0}return!1}dialogIsVisible(t){const e=this.getDialog(t);if(e)return e.hasAttribute(\"data-trix-active\")}toggleDialog(t){return this.dialogIsVisible(t)?this.hideDialog():this.showDialog(t)}showDialog(t){var e,i;this.hideDialog(),null===(e=this.delegate)||void 0===e||e.toolbarWillShowDialog();const n=this.getDialog(t);n.setAttribute(\"data-trix-active\",\"\"),n.classList.add(\"trix-active\"),Array.from(n.querySelectorAll(\"input[disabled]\")).forEach((t=>{t.removeAttribute(\"disabled\")}));const r=dn(n);if(r){const e=hn(n,t);e&&(e.value=this.attributes[r]||\"\",e.select())}return null===(i=this.delegate)||void 0===i?void 0:i.toolbarDidShowDialog(t)}setAttribute(t){const e=dn(t),i=hn(t,e);return i.willValidate&&!i.checkValidity()?(i.setAttribute(\"data-trix-validate\",\"\"),i.classList.add(\"trix-validate\"),i.focus()):(null===(n=this.delegate)||void 0===n||n.toolbarDidUpdateAttribute(e,i.value),this.hideDialog());var n}removeAttribute(t){var e;const i=dn(t);return null===(e=this.delegate)||void 0===e||e.toolbarDidRemoveAttribute(i),this.hideDialog()}hideDialog(){const t=this.element.querySelector(an);var e;if(t)return t.removeAttribute(\"data-trix-active\"),t.classList.remove(\"trix-active\"),this.resetDialogInputs(),null===(e=this.delegate)||void 0===e?void 0:e.toolbarDidHideDialog((t=>t.getAttribute(\"data-trix-dialog\"))(t))}resetDialogInputs(){Array.from(this.element.querySelectorAll(cn)).forEach((t=>{t.setAttribute(\"disabled\",\"disabled\"),t.removeAttribute(\"data-trix-validate\"),t.classList.remove(\"trix-validate\")}))}getDialog(t){return this.element.querySelector(\"[data-trix-dialog=\".concat(t,\"]\"))}}class mn extends Fi{constructor(t){let{editorElement:e,document:i,html:n}=t;super(...arguments),this.editorElement=e,this.selectionManager=new Ci(this.editorElement),this.selectionManager.delegate=this,this.composition=new ci,this.composition.delegate=this,this.attachmentManager=new ai(this.composition.getAttachments()),this.attachmentManager.delegate=this,this.inputController=2===P.getLevel()?new Qi(this.editorElement):new Ji(this.editorElement),this.inputController.delegate=this,this.inputController.responder=this.composition,this.compositionController=new Ti(this.editorElement,this.composition),this.compositionController.delegate=this,this.toolbarController=new gn(this.editorElement.toolbarElement),this.toolbarController.delegate=this,this.editor=new pi(this.composition,this.selectionManager,this.editorElement),i?this.editor.loadDocument(i):this.editor.loadHTML(n)}registerSelectionManager(){return Ft.registerSelectionManager(this.selectionManager)}unregisterSelectionManager(){return Ft.unregisterSelectionManager(this.selectionManager)}render(){return this.compositionController.render()}reparse(){return this.composition.replaceHTML(this.editorElement.innerHTML)}compositionDidChangeDocument(t){if(this.notifyEditorElement(\"document-change\"),!this.handlingInput)return this.render()}compositionDidChangeCurrentAttributes(t){return this.currentAttributes=t,this.toolbarController.updateAttributes(this.currentAttributes),this.updateCurrentActions(),this.notifyEditorElement(\"attributes-change\",{attributes:this.currentAttributes})}compositionDidPerformInsertionAtRange(t){this.pasting&&(this.pastedRange=t)}compositionShouldAcceptFile(t){return this.notifyEditorElement(\"file-accept\",{file:t})}compositionDidAddAttachment(t){const e=this.attachmentManager.manageAttachment(t);return this.notifyEditorElement(\"attachment-add\",{attachment:e})}compositionDidEditAttachment(t){this.compositionController.rerenderViewForObject(t);const e=this.attachmentManager.manageAttachment(t);return this.notifyEditorElement(\"attachment-edit\",{attachment:e}),this.notifyEditorElement(\"change\")}compositionDidChangeAttachmentPreviewURL(t){return this.compositionController.invalidateViewForObject(t),this.notifyEditorElement(\"change\")}compositionDidRemoveAttachment(t){const e=this.attachmentManager.unmanageAttachment(t);return this.notifyEditorElement(\"attachment-remove\",{attachment:e})}compositionDidStartEditingAttachment(t,e){return this.attachmentLocationRange=this.composition.document.getLocationRangeOfAttachment(t),this.compositionController.installAttachmentEditorForAttachment(t,e),this.selectionManager.setLocationRange(this.attachmentLocationRange)}compositionDidStopEditingAttachment(t){this.compositionController.uninstallAttachmentEditor(),this.attachmentLocationRange=null}compositionDidRequestChangingSelectionToLocationRange(t){if(!this.loadingSnapshot||this.isFocused())return this.requestedLocationRange=t,this.compositionRevisionWhenLocationRangeRequested=this.composition.revision,this.handlingInput?void 0:this.render()}compositionWillLoadSnapshot(){this.loadingSnapshot=!0}compositionDidLoadSnapshot(){this.compositionController.refreshViewCache(),this.render(),this.loadingSnapshot=!1}getSelectionManager(){return this.selectionManager}attachmentManagerDidRequestRemovalOfAttachment(t){return this.removeAttachment(t)}compositionControllerWillSyncDocumentView(){return this.inputController.editorWillSyncDocumentView(),this.selectionManager.lock(),this.selectionManager.clearSelection()}compositionControllerDidSyncDocumentView(){return this.inputController.editorDidSyncDocumentView(),this.selectionManager.unlock(),this.updateCurrentActions(),this.notifyEditorElement(\"sync\")}compositionControllerDidRender(){this.requestedLocationRange&&(this.compositionRevisionWhenLocationRangeRequested===this.composition.revision&&this.selectionManager.setLocationRange(this.requestedLocationRange),this.requestedLocationRange=null,this.compositionRevisionWhenLocationRangeRequested=null),this.renderedCompositionRevision!==this.composition.revision&&(this.runEditorFilters(),this.composition.updateCurrentAttributes(),this.notifyEditorElement(\"render\")),this.renderedCompositionRevision=this.composition.revision}compositionControllerDidFocus(){return this.isFocusedInvisibly()&&this.setLocationRange({index:0,offset:0}),this.toolbarController.hideDialog(),this.notifyEditorElement(\"focus\")}compositionControllerDidBlur(){return this.notifyEditorElement(\"blur\")}compositionControllerDidSelectAttachment(t,e){return this.toolbarController.hideDialog(),this.composition.editAttachment(t,e)}compositionControllerDidRequestDeselectingAttachment(t){const e=this.attachmentLocationRange||this.composition.document.getLocationRangeOfAttachment(t);return this.selectionManager.setLocationRange(e[1])}compositionControllerWillUpdateAttachment(t){return this.editor.recordUndoEntry(\"Edit Attachment\",{context:t.id,consolidatable:!0})}compositionControllerDidRequestRemovalOfAttachment(t){return this.removeAttachment(t)}inputControllerWillHandleInput(){this.handlingInput=!0,this.requestedRender=!1}inputControllerDidRequestRender(){this.requestedRender=!0}inputControllerDidHandleInput(){if(this.handlingInput=!1,this.requestedRender)return this.requestedRender=!1,this.render()}inputControllerDidAllowUnhandledInput(){return this.notifyEditorElement(\"change\")}inputControllerDidRequestReparse(){return this.reparse()}inputControllerWillPerformTyping(){return this.recordTypingUndoEntry()}inputControllerWillPerformFormatting(t){return this.recordFormattingUndoEntry(t)}inputControllerWillCutText(){return this.editor.recordUndoEntry(\"Cut\")}inputControllerWillPaste(t){return this.editor.recordUndoEntry(\"Paste\"),this.pasting=!0,this.notifyEditorElement(\"before-paste\",{paste:t})}inputControllerDidPaste(t){return t.range=this.pastedRange,this.pastedRange=null,this.pasting=null,this.notifyEditorElement(\"paste\",{paste:t})}inputControllerWillMoveText(){return this.editor.recordUndoEntry(\"Move\")}inputControllerWillAttachFiles(){return this.editor.recordUndoEntry(\"Drop Files\")}inputControllerWillPerformUndo(){return this.editor.undo()}inputControllerWillPerformRedo(){return this.editor.redo()}inputControllerDidReceiveKeyboardCommand(t){return this.toolbarController.applyKeyboardCommand(t)}inputControllerDidStartDrag(){this.locationRangeBeforeDrag=this.selectionManager.getLocationRange()}inputControllerDidReceiveDragOverPoint(t){return this.selectionManager.setLocationRangeFromPointRange(t)}inputControllerDidCancelDrag(){this.selectionManager.setLocationRange(this.locationRangeBeforeDrag),this.locationRangeBeforeDrag=null}locationRangeDidChange(t){return this.composition.updateCurrentAttributes(),this.updateCurrentActions(),this.attachmentLocationRange&&!kt(this.attachmentLocationRange,t)&&this.composition.stopEditingAttachment(),this.notifyEditorElement(\"selection-change\")}toolbarDidClickButton(){if(!this.getLocationRange())return this.setLocationRange({index:0,offset:0})}toolbarDidInvokeAction(t){return this.invokeAction(t)}toolbarDidToggleAttribute(t){if(this.recordFormattingUndoEntry(t),this.composition.toggleCurrentAttribute(t),this.render(),!this.selectionFrozen)return this.editorElement.focus()}toolbarDidUpdateAttribute(t,e){if(this.recordFormattingUndoEntry(t),this.composition.setCurrentAttribute(t,e),this.render(),!this.selectionFrozen)return this.editorElement.focus()}toolbarDidRemoveAttribute(t){if(this.recordFormattingUndoEntry(t),this.composition.removeCurrentAttribute(t),this.render(),!this.selectionFrozen)return this.editorElement.focus()}toolbarWillShowDialog(t){return this.composition.expandSelectionForEditing(),this.freezeSelection()}toolbarDidShowDialog(t){return this.notifyEditorElement(\"toolbar-dialog-show\",{dialogName:t})}toolbarDidHideDialog(t){return this.thawSelection(),this.editorElement.focus(),this.notifyEditorElement(\"toolbar-dialog-hide\",{dialogName:t})}freezeSelection(){if(!this.selectionFrozen)return this.selectionManager.lock(),this.composition.freezeSelection(),this.selectionFrozen=!0,this.render()}thawSelection(){if(this.selectionFrozen)return this.composition.thawSelection(),this.selectionManager.unlock(),this.selectionFrozen=!1,this.render()}canInvokeAction(t){return!!this.actionIsExternal(t)||!(null===(e=this.actions[t])||void 0===e||null===(i=e.test)||void 0===i||!i.call(this));var e,i}invokeAction(t){return this.actionIsExternal(t)?this.notifyEditorElement(\"action-invoke\",{actionName:t}):null===(e=this.actions[t])||void 0===e||null===(i=e.perform)||void 0===i?void 0:i.call(this);var e,i}actionIsExternal(t){return/^x-./.test(t)}getCurrentActions(){const t={};for(const e in this.actions)t[e]=this.canInvokeAction(e);return t}updateCurrentActions(){const t=this.getCurrentActions();if(!Rt(t,this.currentActions))return this.currentActions=t,this.toolbarController.updateActions(this.currentActions),this.notifyEditorElement(\"actions-change\",{actions:this.currentActions})}runEditorFilters(){let t=this.composition.getSnapshot();if(Array.from(this.editor.filters).forEach((e=>{const{document:i,selectedRange:n}=t;t=e.call(this.editor,t)||{},t.document||(t.document=i),t.selectedRange||(t.selectedRange=n)})),e=t,i=this.composition.getSnapshot(),!kt(e.selectedRange,i.selectedRange)||!e.document.isEqualTo(i.document))return this.composition.loadSnapshot(t);var e,i}updateInputElement(){const t=function(t,e){const i=ri[e];if(i)return i(t);throw new Error(\"unknown content type: \".concat(e))}(this.compositionController.getSerializableElement(),\"text/html\");return this.editorElement.setInputElementValue(t)}notifyEditorElement(t,e){switch(t){case\"document-change\":this.documentChangedSinceLastRender=!0;break;case\"render\":this.documentChangedSinceLastRender&&(this.documentChangedSinceLastRender=!1,this.notifyEditorElement(\"change\"));break;case\"change\":case\"attachment-add\":case\"attachment-edit\":case\"attachment-remove\":this.updateInputElement()}return this.editorElement.notify(t,e)}removeAttachment(t){return this.editor.recordUndoEntry(\"Delete Attachment\"),this.composition.removeAttachment(t),this.render()}recordFormattingUndoEntry(t){const e=ht(t),i=this.selectionManager.getLocationRange();if(e||!St(i))return this.editor.recordUndoEntry(\"Formatting\",{context:this.getUndoContext(),consolidatable:!0})}recordTypingUndoEntry(){return this.editor.recordUndoEntry(\"Typing\",{context:this.getUndoContext(this.currentAttributes),consolidatable:!0})}getUndoContext(){for(var t=arguments.length,e=new Array(t),i=0;i<t;i++)e[i]=arguments[i];return[this.getLocationContext(),this.getTimeContext(),...Array.from(e)]}getLocationContext(){const t=this.selectionManager.getLocationRange();return St(t)?t[0].index:t}getTimeContext(){return j.interval>0?Math.floor((new Date).getTime()/j.interval):0}isFocused(){var t;return this.editorElement===(null===(t=this.editorElement.ownerDocument)||void 0===t?void 0:t.activeElement)}isFocusedInvisibly(){return this.isFocused()&&!this.getLocationRange()}get actions(){return this.constructor.actions}}be(mn,\"actions\",{undo:{test(){return this.editor.canUndo()},perform(){return this.editor.undo()}},redo:{test(){return this.editor.canRedo()},perform(){return this.editor.redo()}},link:{test(){return this.editor.canActivateAttribute(\"href\")}},increaseNestingLevel:{test(){return this.editor.canIncreaseNestingLevel()},perform(){return this.editor.increaseNestingLevel()&&this.render()}},decreaseNestingLevel:{test(){return this.editor.canDecreaseNestingLevel()},perform(){return this.editor.decreaseNestingLevel()&&this.render()}},attachFiles:{test:()=>!0,perform(){return P.pickFiles(this.editor.insertFiles)}}}),mn.proxyMethod(\"getSelectionManager().setLocationRange\"),mn.proxyMethod(\"getSelectionManager().getLocationRange\");var pn=Object.freeze({__proto__:null,AttachmentEditorController:wi,CompositionController:Ti,Controller:Fi,EditorController:mn,InputController:qi,Level0InputController:Ji,Level2InputController:Qi,ToolbarController:gn}),fn=Object.freeze({__proto__:null,MutationObserver:Pi,SelectionChangeObserver:wt}),bn=Object.freeze({__proto__:null,FileVerificationOperation:Oi,ImagePreloadOperation:Ae});mt(\"trix-toolbar\",\"%t {\\n  display: block;\\n}\\n\\n%t {\\n  white-space: nowrap;\\n}\\n\\n%t [data-trix-dialog] {\\n  display: none;\\n}\\n\\n%t [data-trix-dialog][data-trix-active] {\\n  display: block;\\n}\\n\\n%t [data-trix-dialog] [data-trix-validate]:invalid {\\n  background-color: #ffdddd;\\n}\");class vn extends HTMLElement{connectedCallback(){\"\"===this.innerHTML&&(this.innerHTML=M.getDefaultHTML())}}let An=0;const xn=function(t){if(!t.hasAttribute(\"contenteditable\"))return t.setAttribute(\"contenteditable\",\"\"),function(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.times=1,d(t,e)}(\"focus\",{onElement:t,withCallback:()=>yn(t)})},yn=function(t){return Cn(t),Rn(t)},Cn=function(t){var e,i;if(null!==(e=(i=document).queryCommandSupported)&&void 0!==e&&e.call(i,\"enableObjectResizing\"))return document.execCommand(\"enableObjectResizing\",!1,!1),d(\"mscontrolselect\",{onElement:t,preventDefault:!0})},Rn=function(t){var i,n;if(null!==(i=(n=document).queryCommandSupported)&&void 0!==i&&i.call(n,\"DefaultParagraphSeparator\")){const{tagName:t}=e.default;if([\"div\",\"p\"].includes(t))return document.execCommand(\"DefaultParagraphSeparator\",!1,t)}},En=o.forcesObjectResizing?{display:\"inline\",width:\"auto\"}:{display:\"inline-block\",width:\"1px\"};mt(\"trix-editor\",\"%t {\\n    display: block;\\n}\\n\\n%t:empty:not(:focus)::before {\\n    content: attr(placeholder);\\n    color: graytext;\\n    cursor: text;\\n    pointer-events: none;\\n    white-space: pre-line;\\n}\\n\\n%t a[contenteditable=false] {\\n    cursor: text;\\n}\\n\\n%t img {\\n    max-width: 100%;\\n    height: auto;\\n}\\n\\n%t \".concat(\"[data-trix-attachment]\",\" figcaption textarea {\\n    resize: none;\\n}\\n\\n%t \").concat(\"[data-trix-attachment]\",\" figcaption textarea.trix-autoresize-clone {\\n    position: absolute;\\n    left: -9999px;\\n    max-height: 0px;\\n}\\n\\n%t \").concat(\"[data-trix-attachment]\",\" figcaption[data-trix-placeholder]:empty::before {\\n    content: attr(data-trix-placeholder);\\n    color: graytext;\\n}\\n\\n%t [data-trix-cursor-target] {\\n    display: \").concat(En.display,\" !important;\\n    width: \").concat(En.width,\" !important;\\n    padding: 0 !important;\\n    margin: 0 !important;\\n    border: none !important;\\n}\\n\\n%t [data-trix-cursor-target=left] {\\n    vertical-align: top !important;\\n    margin-left: -1px !important;\\n}\\n\\n%t [data-trix-cursor-target=right] {\\n    vertical-align: bottom !important;\\n    margin-right: -1px !important;\\n}\"));class Sn extends HTMLElement{get trixId(){return this.hasAttribute(\"trix-id\")?this.getAttribute(\"trix-id\"):(this.setAttribute(\"trix-id\",++An),this.trixId)}get labels(){const t=[];this.id&&this.ownerDocument&&t.push(...Array.from(this.ownerDocument.querySelectorAll(\"label[for='\".concat(this.id,\"']\"))||[]));const e=p(this,{matchingSelector:\"label\"});return e&&[this,null].includes(e.control)&&t.push(e),t}get toolbarElement(){var t;if(this.hasAttribute(\"toolbar\"))return null===(t=this.ownerDocument)||void 0===t?void 0:t.getElementById(this.getAttribute(\"toolbar\"));if(this.parentNode){const t=\"trix-toolbar-\".concat(this.trixId);this.setAttribute(\"toolbar\",t);const e=C(\"trix-toolbar\",{id:t});return this.parentNode.insertBefore(e,this),e}}get form(){var t;return null===(t=this.inputElement)||void 0===t?void 0:t.form}get inputElement(){var t;if(this.hasAttribute(\"input\"))return null===(t=this.ownerDocument)||void 0===t?void 0:t.getElementById(this.getAttribute(\"input\"));if(this.parentNode){const t=\"trix-input-\".concat(this.trixId);this.setAttribute(\"input\",t);const e=C(\"input\",{type:\"hidden\",id:t});return this.parentNode.insertBefore(e,this.nextElementSibling),e}}get editor(){var t;return null===(t=this.editorController)||void 0===t?void 0:t.editor}get name(){var t;return null===(t=this.inputElement)||void 0===t?void 0:t.name}get value(){var t;return null===(t=this.inputElement)||void 0===t?void 0:t.value}set value(t){var e;this.defaultValue=t,null===(e=this.editor)||void 0===e||e.loadHTML(this.defaultValue)}notify(t,e){if(this.editorController)return g(\"trix-\".concat(t),{onElement:this,attributes:e})}setInputElementValue(t){this.inputElement&&(this.inputElement.value=t)}connectedCallback(){this.hasAttribute(\"data-trix-internal\")||(xn(this),function(t){if(!t.hasAttribute(\"role\"))t.setAttribute(\"role\",\"textbox\")}(this),function(t){if(t.hasAttribute(\"aria-label\")||t.hasAttribute(\"aria-labelledby\"))return;const e=function(){const e=Array.from(t.labels).map((e=>{if(!e.contains(t))return e.textContent})).filter((t=>t)),i=e.join(\" \");return i?t.setAttribute(\"aria-label\",i):t.removeAttribute(\"aria-label\")};e(),d(\"focus\",{onElement:t,withCallback:e})}(this),this.editorController||(g(\"trix-before-initialize\",{onElement:this}),this.editorController=new mn({editorElement:this,html:this.defaultValue=this.value}),requestAnimationFrame((()=>g(\"trix-initialize\",{onElement:this})))),this.editorController.registerSelectionManager(),this.registerResetListener(),this.registerClickListener(),function(t){if(!document.querySelector(\":focus\")&&t.hasAttribute(\"autofocus\")&&document.querySelector(\"[autofocus]\")===t)t.focus()}(this))}disconnectedCallback(){var t;return null===(t=this.editorController)||void 0===t||t.unregisterSelectionManager(),this.unregisterResetListener(),this.unregisterClickListener()}registerResetListener(){return this.resetListener=this.resetBubbled.bind(this),window.addEventListener(\"reset\",this.resetListener,!1)}unregisterResetListener(){return window.removeEventListener(\"reset\",this.resetListener,!1)}registerClickListener(){return this.clickListener=this.clickBubbled.bind(this),window.addEventListener(\"click\",this.clickListener,!1)}unregisterClickListener(){return window.removeEventListener(\"click\",this.clickListener,!1)}resetBubbled(t){if(!t.defaultPrevented&&t.target===this.form)return this.reset()}clickBubbled(t){if(t.defaultPrevented)return;if(this.contains(t.target))return;const e=p(t.target,{matchingSelector:\"label\"});return e&&Array.from(this.labels).includes(e)?this.focus():void 0}reset(){this.value=this.defaultValue}}const kn={VERSION:\"2.0.4\",config:W,core:oi,models:Ri,views:Ei,controllers:pn,observers:fn,operations:bn,elements:Object.freeze({__proto__:null,TrixEditorElement:Sn,TrixToolbarElement:vn}),filters:Object.freeze({__proto__:null,Filter:di,attachmentGalleryFilter:gi})};Object.assign(kn,Ri),window.Trix=kn,setTimeout((function(){customElements.get(\"trix-toolbar\")||customElements.define(\"trix-toolbar\",vn),customElements.get(\"trix-editor\")||customElements.define(\"trix-editor\",Sn)}),0);export{kn as default};\n//# sourceMappingURL=trix.esm.min.js.map\n", "import { DirectUpload } from \"@rails/activestorage\"\n\nexport class AttachmentUpload {\n  constructor(attachment, element) {\n    this.attachment = attachment\n    this.element = element\n    this.directUpload = new DirectUpload(attachment.file, this.directUploadUrl, this)\n  }\n\n  start() {\n    this.directUpload.create(this.directUploadDidComplete.bind(this))\n  }\n\n  directUploadWillStoreFileWithXHR(xhr) {\n    xhr.upload.addEventListener(\"progress\", event => {\n      const progress = event.loaded / event.total * 100\n      this.attachment.setUploadProgress(progress)\n    })\n  }\n\n  directUploadDidComplete(error, attributes) {\n    if (error) {\n      throw new Error(`Direct upload failed: ${error}`)\n    }\n\n    this.attachment.setAttributes({\n      sgid: attributes.attachable_sgid,\n      url: this.createBlobUrl(attributes.signed_id, attributes.filename)\n    })\n  }\n\n  createBlobUrl(signedId, filename) {\n    return this.blobUrlTemplate\n      .replace(\":signed_id\", signedId)\n      .replace(\":filename\", encodeURIComponent(filename))\n  }\n\n  get directUploadUrl() {\n    return this.element.dataset.directUploadUrl\n  }\n\n  get blobUrlTemplate() {\n    return this.element.dataset.blobUrlTemplate\n  }\n}\n", "import { AttachmentUpload } from \"./attachment_upload\"\n\naddEventListener(\"trix-attachment-add\", event => {\n  const { attachment, target } = event\n\n  if (attachment.file) {\n    const upload = new AttachmentUpload(attachment, target)\n    upload.start()\n  }\n})\n", "const tagName = (element) => element?.tagName?.toLowerCase();\n\nTrix.config.blockAttributes.heading2 = {\n  tagName: \"h2\",\n  terminal: true,\n  breakOnReturn: true,\n  group: false,\n};\n\nTrix.config.blockAttributes.heading3 = {\n  tagName: \"h3\",\n  terminal: true,\n  breakOnReturn: true,\n  group: false,\n};\n\n// Trix.config.blockAttributes.todoList = {\n//   tagName: \"todo-list\",\n//   parse: false,\n// };\n\n// Trix.config.blockAttributes.todo = {\n//   tagName: \"todo-item\",\n//   listAttribute: \"todoList\",\n//   group: false,\n//   nestable: true,\n//   test(element) {\n//     return tagName(element.parentNode) === \"todo-list\";\n//   },\n// };", "/*\nStimulus 3.0.1\nCopyright \u00A9 2021 Basecamp, LLC\n */\nclass EventListener {\n    constructor(eventTarget, eventName, eventOptions) {\n        this.eventTarget = eventTarget;\n        this.eventName = eventName;\n        this.eventOptions = eventOptions;\n        this.unorderedBindings = new Set();\n    }\n    connect() {\n        this.eventTarget.addEventListener(this.eventName, this, this.eventOptions);\n    }\n    disconnect() {\n        this.eventTarget.removeEventListener(this.eventName, this, this.eventOptions);\n    }\n    bindingConnected(binding) {\n        this.unorderedBindings.add(binding);\n    }\n    bindingDisconnected(binding) {\n        this.unorderedBindings.delete(binding);\n    }\n    handleEvent(event) {\n        const extendedEvent = extendEvent(event);\n        for (const binding of this.bindings) {\n            if (extendedEvent.immediatePropagationStopped) {\n                break;\n            }\n            else {\n                binding.handleEvent(extendedEvent);\n            }\n        }\n    }\n    get bindings() {\n        return Array.from(this.unorderedBindings).sort((left, right) => {\n            const leftIndex = left.index, rightIndex = right.index;\n            return leftIndex < rightIndex ? -1 : leftIndex > rightIndex ? 1 : 0;\n        });\n    }\n}\nfunction extendEvent(event) {\n    if (\"immediatePropagationStopped\" in event) {\n        return event;\n    }\n    else {\n        const { stopImmediatePropagation } = event;\n        return Object.assign(event, {\n            immediatePropagationStopped: false,\n            stopImmediatePropagation() {\n                this.immediatePropagationStopped = true;\n                stopImmediatePropagation.call(this);\n            }\n        });\n    }\n}\n\nclass Dispatcher {\n    constructor(application) {\n        this.application = application;\n        this.eventListenerMaps = new Map;\n        this.started = false;\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.eventListeners.forEach(eventListener => eventListener.connect());\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.started = false;\n            this.eventListeners.forEach(eventListener => eventListener.disconnect());\n        }\n    }\n    get eventListeners() {\n        return Array.from(this.eventListenerMaps.values())\n            .reduce((listeners, map) => listeners.concat(Array.from(map.values())), []);\n    }\n    bindingConnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingConnected(binding);\n    }\n    bindingDisconnected(binding) {\n        this.fetchEventListenerForBinding(binding).bindingDisconnected(binding);\n    }\n    handleError(error, message, detail = {}) {\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    fetchEventListenerForBinding(binding) {\n        const { eventTarget, eventName, eventOptions } = binding;\n        return this.fetchEventListener(eventTarget, eventName, eventOptions);\n    }\n    fetchEventListener(eventTarget, eventName, eventOptions) {\n        const eventListenerMap = this.fetchEventListenerMapForEventTarget(eventTarget);\n        const cacheKey = this.cacheKey(eventName, eventOptions);\n        let eventListener = eventListenerMap.get(cacheKey);\n        if (!eventListener) {\n            eventListener = this.createEventListener(eventTarget, eventName, eventOptions);\n            eventListenerMap.set(cacheKey, eventListener);\n        }\n        return eventListener;\n    }\n    createEventListener(eventTarget, eventName, eventOptions) {\n        const eventListener = new EventListener(eventTarget, eventName, eventOptions);\n        if (this.started) {\n            eventListener.connect();\n        }\n        return eventListener;\n    }\n    fetchEventListenerMapForEventTarget(eventTarget) {\n        let eventListenerMap = this.eventListenerMaps.get(eventTarget);\n        if (!eventListenerMap) {\n            eventListenerMap = new Map;\n            this.eventListenerMaps.set(eventTarget, eventListenerMap);\n        }\n        return eventListenerMap;\n    }\n    cacheKey(eventName, eventOptions) {\n        const parts = [eventName];\n        Object.keys(eventOptions).sort().forEach(key => {\n            parts.push(`${eventOptions[key] ? \"\" : \"!\"}${key}`);\n        });\n        return parts.join(\":\");\n    }\n}\n\nconst descriptorPattern = /^((.+?)(@(window|document))?->)?(.+?)(#([^:]+?))(:(.+))?$/;\nfunction parseActionDescriptorString(descriptorString) {\n    const source = descriptorString.trim();\n    const 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}\nfunction parseEventTarget(eventTargetName) {\n    if (eventTargetName == \"window\") {\n        return window;\n    }\n    else if (eventTargetName == \"document\") {\n        return document;\n    }\n}\nfunction parseEventOptions(eventOptions) {\n    return eventOptions.split(\":\").reduce((options, token) => Object.assign(options, { [token.replace(/^!/, \"\")]: !/^!/.test(token) }), {});\n}\nfunction stringifyEventTarget(eventTarget) {\n    if (eventTarget == window) {\n        return \"window\";\n    }\n    else if (eventTarget == document) {\n        return \"document\";\n    }\n}\n\nfunction camelize(value) {\n    return value.replace(/(?:[_-])([a-z0-9])/g, (_, char) => char.toUpperCase());\n}\nfunction capitalize(value) {\n    return value.charAt(0).toUpperCase() + value.slice(1);\n}\nfunction dasherize(value) {\n    return value.replace(/([A-Z])/g, (_, char) => `-${char.toLowerCase()}`);\n}\nfunction tokenize(value) {\n    return value.match(/[^\\s]+/g) || [];\n}\n\nclass Action {\n    constructor(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    static forToken(token) {\n        return new this(token.element, token.index, parseActionDescriptorString(token.content));\n    }\n    toString() {\n        const eventNameSuffix = this.eventTargetName ? `@${this.eventTargetName}` : \"\";\n        return `${this.eventName}${eventNameSuffix}->${this.identifier}#${this.methodName}`;\n    }\n    get params() {\n        if (this.eventTarget instanceof Element) {\n            return this.getParamsFromEventTargetAttributes(this.eventTarget);\n        }\n        else {\n            return {};\n        }\n    }\n    getParamsFromEventTargetAttributes(eventTarget) {\n        const params = {};\n        const pattern = new RegExp(`^data-${this.identifier}-(.+)-param$`);\n        const attributes = Array.from(eventTarget.attributes);\n        attributes.forEach(({ name, value }) => {\n            const match = name.match(pattern);\n            const key = match && match[1];\n            if (key) {\n                Object.assign(params, { [camelize(key)]: typecast(value) });\n            }\n        });\n        return params;\n    }\n    get eventTargetName() {\n        return stringifyEventTarget(this.eventTarget);\n    }\n}\nconst defaultEventNames = {\n    \"a\": e => \"click\",\n    \"button\": e => \"click\",\n    \"form\": e => \"submit\",\n    \"details\": e => \"toggle\",\n    \"input\": e => e.getAttribute(\"type\") == \"submit\" ? \"click\" : \"input\",\n    \"select\": e => \"change\",\n    \"textarea\": e => \"input\"\n};\nfunction getDefaultEventNameForElement(element) {\n    const tagName = element.tagName.toLowerCase();\n    if (tagName in defaultEventNames) {\n        return defaultEventNames[tagName](element);\n    }\n}\nfunction error(message) {\n    throw new Error(message);\n}\nfunction typecast(value) {\n    try {\n        return JSON.parse(value);\n    }\n    catch (o_O) {\n        return value;\n    }\n}\n\nclass Binding {\n    constructor(context, action) {\n        this.context = context;\n        this.action = action;\n    }\n    get index() {\n        return this.action.index;\n    }\n    get eventTarget() {\n        return this.action.eventTarget;\n    }\n    get eventOptions() {\n        return this.action.eventOptions;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    handleEvent(event) {\n        if (this.willBeInvokedByEvent(event)) {\n            this.invokeWithEvent(event);\n        }\n    }\n    get eventName() {\n        return this.action.eventName;\n    }\n    get method() {\n        const method = this.controller[this.methodName];\n        if (typeof method == \"function\") {\n            return method;\n        }\n        throw new Error(`Action \"${this.action}\" references undefined method \"${this.methodName}\"`);\n    }\n    invokeWithEvent(event) {\n        const { target, currentTarget } = event;\n        try {\n            const { params } = this.action;\n            const actionEvent = Object.assign(event, { params });\n            this.method.call(this.controller, actionEvent);\n            this.context.logDebugActivity(this.methodName, { event, target, currentTarget, action: this.methodName });\n        }\n        catch (error) {\n            const { identifier, controller, element, index } = this;\n            const detail = { identifier, controller, element, index, event };\n            this.context.handleError(error, `invoking action \"${this.action}\"`, detail);\n        }\n    }\n    willBeInvokedByEvent(event) {\n        const eventTarget = event.target;\n        if (this.element === eventTarget) {\n            return true;\n        }\n        else if (eventTarget instanceof Element && this.element.contains(eventTarget)) {\n            return this.scope.containsElement(eventTarget);\n        }\n        else {\n            return this.scope.containsElement(this.action.element);\n        }\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    get methodName() {\n        return this.action.methodName;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass ElementObserver {\n    constructor(element, delegate) {\n        this.mutationObserverInit = { attributes: true, childList: true, subtree: true };\n        this.element = element;\n        this.started = false;\n        this.delegate = delegate;\n        this.elements = new Set;\n        this.mutationObserver = new MutationObserver((mutations) => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.refresh();\n        }\n    }\n    pause(callback) {\n        if (this.started) {\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n        callback();\n        if (!this.started) {\n            this.mutationObserver.observe(this.element, this.mutationObserverInit);\n            this.started = true;\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            const matches = new Set(this.matchElementsInTree());\n            for (const element of Array.from(this.elements)) {\n                if (!matches.has(element)) {\n                    this.removeElement(element);\n                }\n            }\n            for (const element of Array.from(matches)) {\n                this.addElement(element);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        if (mutation.type == \"attributes\") {\n            this.processAttributeChange(mutation.target, mutation.attributeName);\n        }\n        else if (mutation.type == \"childList\") {\n            this.processRemovedNodes(mutation.removedNodes);\n            this.processAddedNodes(mutation.addedNodes);\n        }\n    }\n    processAttributeChange(node, attributeName) {\n        const element = node;\n        if (this.elements.has(element)) {\n            if (this.delegate.elementAttributeChanged && this.matchElement(element)) {\n                this.delegate.elementAttributeChanged(element, attributeName);\n            }\n            else {\n                this.removeElement(element);\n            }\n        }\n        else if (this.matchElement(element)) {\n            this.addElement(element);\n        }\n    }\n    processRemovedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element) {\n                this.processTree(element, this.removeElement);\n            }\n        }\n    }\n    processAddedNodes(nodes) {\n        for (const node of Array.from(nodes)) {\n            const element = this.elementFromNode(node);\n            if (element && this.elementIsActive(element)) {\n                this.processTree(element, this.addElement);\n            }\n        }\n    }\n    matchElement(element) {\n        return this.delegate.matchElement(element);\n    }\n    matchElementsInTree(tree = this.element) {\n        return this.delegate.matchElementsInTree(tree);\n    }\n    processTree(tree, processor) {\n        for (const element of this.matchElementsInTree(tree)) {\n            processor.call(this, element);\n        }\n    }\n    elementFromNode(node) {\n        if (node.nodeType == Node.ELEMENT_NODE) {\n            return node;\n        }\n    }\n    elementIsActive(element) {\n        if (element.isConnected != this.element.isConnected) {\n            return false;\n        }\n        else {\n            return this.element.contains(element);\n        }\n    }\n    addElement(element) {\n        if (!this.elements.has(element)) {\n            if (this.elementIsActive(element)) {\n                this.elements.add(element);\n                if (this.delegate.elementMatched) {\n                    this.delegate.elementMatched(element);\n                }\n            }\n        }\n    }\n    removeElement(element) {\n        if (this.elements.has(element)) {\n            this.elements.delete(element);\n            if (this.delegate.elementUnmatched) {\n                this.delegate.elementUnmatched(element);\n            }\n        }\n    }\n}\n\nclass AttributeObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeName = attributeName;\n        this.delegate = delegate;\n        this.elementObserver = new ElementObserver(element, this);\n    }\n    get element() {\n        return this.elementObserver.element;\n    }\n    get selector() {\n        return `[${this.attributeName}]`;\n    }\n    start() {\n        this.elementObserver.start();\n    }\n    pause(callback) {\n        this.elementObserver.pause(callback);\n    }\n    stop() {\n        this.elementObserver.stop();\n    }\n    refresh() {\n        this.elementObserver.refresh();\n    }\n    get started() {\n        return this.elementObserver.started;\n    }\n    matchElement(element) {\n        return element.hasAttribute(this.attributeName);\n    }\n    matchElementsInTree(tree) {\n        const match = this.matchElement(tree) ? [tree] : [];\n        const matches = Array.from(tree.querySelectorAll(this.selector));\n        return match.concat(matches);\n    }\n    elementMatched(element) {\n        if (this.delegate.elementMatchedAttribute) {\n            this.delegate.elementMatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementUnmatched(element) {\n        if (this.delegate.elementUnmatchedAttribute) {\n            this.delegate.elementUnmatchedAttribute(element, this.attributeName);\n        }\n    }\n    elementAttributeChanged(element, attributeName) {\n        if (this.delegate.elementAttributeValueChanged && this.attributeName == attributeName) {\n            this.delegate.elementAttributeValueChanged(element, attributeName);\n        }\n    }\n}\n\nclass StringMapObserver {\n    constructor(element, delegate) {\n        this.element = element;\n        this.delegate = delegate;\n        this.started = false;\n        this.stringMap = new Map;\n        this.mutationObserver = new MutationObserver(mutations => this.processMutations(mutations));\n    }\n    start() {\n        if (!this.started) {\n            this.started = true;\n            this.mutationObserver.observe(this.element, { attributes: true, attributeOldValue: true });\n            this.refresh();\n        }\n    }\n    stop() {\n        if (this.started) {\n            this.mutationObserver.takeRecords();\n            this.mutationObserver.disconnect();\n            this.started = false;\n        }\n    }\n    refresh() {\n        if (this.started) {\n            for (const attributeName of this.knownAttributeNames) {\n                this.refreshAttribute(attributeName, null);\n            }\n        }\n    }\n    processMutations(mutations) {\n        if (this.started) {\n            for (const mutation of mutations) {\n                this.processMutation(mutation);\n            }\n        }\n    }\n    processMutation(mutation) {\n        const attributeName = mutation.attributeName;\n        if (attributeName) {\n            this.refreshAttribute(attributeName, mutation.oldValue);\n        }\n    }\n    refreshAttribute(attributeName, oldValue) {\n        const key = this.delegate.getStringMapKeyForAttribute(attributeName);\n        if (key != null) {\n            if (!this.stringMap.has(attributeName)) {\n                this.stringMapKeyAdded(key, attributeName);\n            }\n            const value = this.element.getAttribute(attributeName);\n            if (this.stringMap.get(attributeName) != value) {\n                this.stringMapValueChanged(value, key, oldValue);\n            }\n            if (value == null) {\n                const oldValue = this.stringMap.get(attributeName);\n                this.stringMap.delete(attributeName);\n                if (oldValue)\n                    this.stringMapKeyRemoved(key, attributeName, oldValue);\n            }\n            else {\n                this.stringMap.set(attributeName, value);\n            }\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        if (this.delegate.stringMapKeyAdded) {\n            this.delegate.stringMapKeyAdded(key, attributeName);\n        }\n    }\n    stringMapValueChanged(value, key, oldValue) {\n        if (this.delegate.stringMapValueChanged) {\n            this.delegate.stringMapValueChanged(value, key, oldValue);\n        }\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        if (this.delegate.stringMapKeyRemoved) {\n            this.delegate.stringMapKeyRemoved(key, attributeName, oldValue);\n        }\n    }\n    get knownAttributeNames() {\n        return Array.from(new Set(this.currentAttributeNames.concat(this.recordedAttributeNames)));\n    }\n    get currentAttributeNames() {\n        return Array.from(this.element.attributes).map(attribute => attribute.name);\n    }\n    get recordedAttributeNames() {\n        return Array.from(this.stringMap.keys());\n    }\n}\n\nfunction add(map, key, value) {\n    fetch(map, key).add(value);\n}\nfunction del(map, key, value) {\n    fetch(map, key).delete(value);\n    prune(map, key);\n}\nfunction fetch(map, key) {\n    let values = map.get(key);\n    if (!values) {\n        values = new Set();\n        map.set(key, values);\n    }\n    return values;\n}\nfunction prune(map, key) {\n    const values = map.get(key);\n    if (values != null && values.size == 0) {\n        map.delete(key);\n    }\n}\n\nclass Multimap {\n    constructor() {\n        this.valuesByKey = new Map();\n    }\n    get keys() {\n        return Array.from(this.valuesByKey.keys());\n    }\n    get values() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((values, set) => values.concat(Array.from(set)), []);\n    }\n    get size() {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.reduce((size, set) => size + set.size, 0);\n    }\n    add(key, value) {\n        add(this.valuesByKey, key, value);\n    }\n    delete(key, value) {\n        del(this.valuesByKey, key, value);\n    }\n    has(key, value) {\n        const values = this.valuesByKey.get(key);\n        return values != null && values.has(value);\n    }\n    hasKey(key) {\n        return this.valuesByKey.has(key);\n    }\n    hasValue(value) {\n        const sets = Array.from(this.valuesByKey.values());\n        return sets.some(set => set.has(value));\n    }\n    getValuesForKey(key) {\n        const values = this.valuesByKey.get(key);\n        return values ? Array.from(values) : [];\n    }\n    getKeysForValue(value) {\n        return Array.from(this.valuesByKey)\n            .filter(([key, values]) => values.has(value))\n            .map(([key, values]) => key);\n    }\n}\n\nclass IndexedMultimap extends Multimap {\n    constructor() {\n        super();\n        this.keysByValue = new Map;\n    }\n    get values() {\n        return Array.from(this.keysByValue.keys());\n    }\n    add(key, value) {\n        super.add(key, value);\n        add(this.keysByValue, value, key);\n    }\n    delete(key, value) {\n        super.delete(key, value);\n        del(this.keysByValue, value, key);\n    }\n    hasValue(value) {\n        return this.keysByValue.has(value);\n    }\n    getKeysForValue(value) {\n        const set = this.keysByValue.get(value);\n        return set ? Array.from(set) : [];\n    }\n}\n\nclass TokenListObserver {\n    constructor(element, attributeName, delegate) {\n        this.attributeObserver = new AttributeObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.tokensByElement = new Multimap;\n    }\n    get started() {\n        return this.attributeObserver.started;\n    }\n    start() {\n        this.attributeObserver.start();\n    }\n    pause(callback) {\n        this.attributeObserver.pause(callback);\n    }\n    stop() {\n        this.attributeObserver.stop();\n    }\n    refresh() {\n        this.attributeObserver.refresh();\n    }\n    get element() {\n        return this.attributeObserver.element;\n    }\n    get attributeName() {\n        return this.attributeObserver.attributeName;\n    }\n    elementMatchedAttribute(element) {\n        this.tokensMatched(this.readTokensForElement(element));\n    }\n    elementAttributeValueChanged(element) {\n        const [unmatchedTokens, matchedTokens] = this.refreshTokensForElement(element);\n        this.tokensUnmatched(unmatchedTokens);\n        this.tokensMatched(matchedTokens);\n    }\n    elementUnmatchedAttribute(element) {\n        this.tokensUnmatched(this.tokensByElement.getValuesForKey(element));\n    }\n    tokensMatched(tokens) {\n        tokens.forEach(token => this.tokenMatched(token));\n    }\n    tokensUnmatched(tokens) {\n        tokens.forEach(token => this.tokenUnmatched(token));\n    }\n    tokenMatched(token) {\n        this.delegate.tokenMatched(token);\n        this.tokensByElement.add(token.element, token);\n    }\n    tokenUnmatched(token) {\n        this.delegate.tokenUnmatched(token);\n        this.tokensByElement.delete(token.element, token);\n    }\n    refreshTokensForElement(element) {\n        const previousTokens = this.tokensByElement.getValuesForKey(element);\n        const currentTokens = this.readTokensForElement(element);\n        const firstDifferingIndex = zip(previousTokens, currentTokens)\n            .findIndex(([previousToken, currentToken]) => !tokensAreEqual(previousToken, currentToken));\n        if (firstDifferingIndex == -1) {\n            return [[], []];\n        }\n        else {\n            return [previousTokens.slice(firstDifferingIndex), currentTokens.slice(firstDifferingIndex)];\n        }\n    }\n    readTokensForElement(element) {\n        const attributeName = this.attributeName;\n        const tokenString = element.getAttribute(attributeName) || \"\";\n        return parseTokenString(tokenString, element, attributeName);\n    }\n}\nfunction parseTokenString(tokenString, element, attributeName) {\n    return tokenString.trim().split(/\\s+/).filter(content => content.length)\n        .map((content, index) => ({ element, attributeName, content, index }));\n}\nfunction zip(left, right) {\n    const length = Math.max(left.length, right.length);\n    return Array.from({ length }, (_, index) => [left[index], right[index]]);\n}\nfunction tokensAreEqual(left, right) {\n    return left && right && left.index == right.index && left.content == right.content;\n}\n\nclass ValueListObserver {\n    constructor(element, attributeName, delegate) {\n        this.tokenListObserver = new TokenListObserver(element, attributeName, this);\n        this.delegate = delegate;\n        this.parseResultsByToken = new WeakMap;\n        this.valuesByTokenByElement = new WeakMap;\n    }\n    get started() {\n        return this.tokenListObserver.started;\n    }\n    start() {\n        this.tokenListObserver.start();\n    }\n    stop() {\n        this.tokenListObserver.stop();\n    }\n    refresh() {\n        this.tokenListObserver.refresh();\n    }\n    get element() {\n        return this.tokenListObserver.element;\n    }\n    get attributeName() {\n        return this.tokenListObserver.attributeName;\n    }\n    tokenMatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).set(token, value);\n            this.delegate.elementMatchedValue(element, value);\n        }\n    }\n    tokenUnmatched(token) {\n        const { element } = token;\n        const { value } = this.fetchParseResultForToken(token);\n        if (value) {\n            this.fetchValuesByTokenForElement(element).delete(token);\n            this.delegate.elementUnmatchedValue(element, value);\n        }\n    }\n    fetchParseResultForToken(token) {\n        let parseResult = this.parseResultsByToken.get(token);\n        if (!parseResult) {\n            parseResult = this.parseToken(token);\n            this.parseResultsByToken.set(token, parseResult);\n        }\n        return parseResult;\n    }\n    fetchValuesByTokenForElement(element) {\n        let valuesByToken = this.valuesByTokenByElement.get(element);\n        if (!valuesByToken) {\n            valuesByToken = new Map;\n            this.valuesByTokenByElement.set(element, valuesByToken);\n        }\n        return valuesByToken;\n    }\n    parseToken(token) {\n        try {\n            const value = this.delegate.parseValueForToken(token);\n            return { value };\n        }\n        catch (error) {\n            return { error };\n        }\n    }\n}\n\nclass BindingObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.bindingsByAction = new Map;\n    }\n    start() {\n        if (!this.valueListObserver) {\n            this.valueListObserver = new ValueListObserver(this.element, this.actionAttribute, this);\n            this.valueListObserver.start();\n        }\n    }\n    stop() {\n        if (this.valueListObserver) {\n            this.valueListObserver.stop();\n            delete this.valueListObserver;\n            this.disconnectAllActions();\n        }\n    }\n    get element() {\n        return this.context.element;\n    }\n    get identifier() {\n        return this.context.identifier;\n    }\n    get actionAttribute() {\n        return this.schema.actionAttribute;\n    }\n    get schema() {\n        return this.context.schema;\n    }\n    get bindings() {\n        return Array.from(this.bindingsByAction.values());\n    }\n    connectAction(action) {\n        const binding = new Binding(this.context, action);\n        this.bindingsByAction.set(action, binding);\n        this.delegate.bindingConnected(binding);\n    }\n    disconnectAction(action) {\n        const binding = this.bindingsByAction.get(action);\n        if (binding) {\n            this.bindingsByAction.delete(action);\n            this.delegate.bindingDisconnected(binding);\n        }\n    }\n    disconnectAllActions() {\n        this.bindings.forEach(binding => this.delegate.bindingDisconnected(binding));\n        this.bindingsByAction.clear();\n    }\n    parseValueForToken(token) {\n        const action = Action.forToken(token);\n        if (action.identifier == this.identifier) {\n            return action;\n        }\n    }\n    elementMatchedValue(element, action) {\n        this.connectAction(action);\n    }\n    elementUnmatchedValue(element, action) {\n        this.disconnectAction(action);\n    }\n}\n\nclass ValueObserver {\n    constructor(context, receiver) {\n        this.context = context;\n        this.receiver = receiver;\n        this.stringMapObserver = new StringMapObserver(this.element, this);\n        this.valueDescriptorMap = this.controller.valueDescriptorMap;\n        this.invokeChangedCallbacksForDefaultValues();\n    }\n    start() {\n        this.stringMapObserver.start();\n    }\n    stop() {\n        this.stringMapObserver.stop();\n    }\n    get element() {\n        return this.context.element;\n    }\n    get controller() {\n        return this.context.controller;\n    }\n    getStringMapKeyForAttribute(attributeName) {\n        if (attributeName in this.valueDescriptorMap) {\n            return this.valueDescriptorMap[attributeName].name;\n        }\n    }\n    stringMapKeyAdded(key, attributeName) {\n        const descriptor = this.valueDescriptorMap[attributeName];\n        if (!this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), descriptor.writer(descriptor.defaultValue));\n        }\n    }\n    stringMapValueChanged(value, name, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[name];\n        if (value === null)\n            return;\n        if (oldValue === null) {\n            oldValue = descriptor.writer(descriptor.defaultValue);\n        }\n        this.invokeChangedCallback(name, value, oldValue);\n    }\n    stringMapKeyRemoved(key, attributeName, oldValue) {\n        const descriptor = this.valueDescriptorNameMap[key];\n        if (this.hasValue(key)) {\n            this.invokeChangedCallback(key, descriptor.writer(this.receiver[key]), oldValue);\n        }\n        else {\n            this.invokeChangedCallback(key, descriptor.writer(descriptor.defaultValue), oldValue);\n        }\n    }\n    invokeChangedCallbacksForDefaultValues() {\n        for (const { key, name, defaultValue, writer } of this.valueDescriptors) {\n            if (defaultValue != undefined && !this.controller.data.has(key)) {\n                this.invokeChangedCallback(name, writer(defaultValue), undefined);\n            }\n        }\n    }\n    invokeChangedCallback(name, rawValue, rawOldValue) {\n        const changedMethodName = `${name}Changed`;\n        const changedMethod = this.receiver[changedMethodName];\n        if (typeof changedMethod == \"function\") {\n            const descriptor = this.valueDescriptorNameMap[name];\n            const value = descriptor.reader(rawValue);\n            let oldValue = rawOldValue;\n            if (rawOldValue) {\n                oldValue = descriptor.reader(rawOldValue);\n            }\n            changedMethod.call(this.receiver, value, oldValue);\n        }\n    }\n    get valueDescriptors() {\n        const { valueDescriptorMap } = this;\n        return Object.keys(valueDescriptorMap).map(key => valueDescriptorMap[key]);\n    }\n    get valueDescriptorNameMap() {\n        const descriptors = {};\n        Object.keys(this.valueDescriptorMap).forEach(key => {\n            const descriptor = this.valueDescriptorMap[key];\n            descriptors[descriptor.name] = descriptor;\n        });\n        return descriptors;\n    }\n    hasValue(attributeName) {\n        const descriptor = this.valueDescriptorNameMap[attributeName];\n        const hasMethodName = `has${capitalize(descriptor.name)}`;\n        return this.receiver[hasMethodName];\n    }\n}\n\nclass TargetObserver {\n    constructor(context, delegate) {\n        this.context = context;\n        this.delegate = delegate;\n        this.targetsByName = new Multimap;\n    }\n    start() {\n        if (!this.tokenListObserver) {\n            this.tokenListObserver = new TokenListObserver(this.element, this.attributeName, this);\n            this.tokenListObserver.start();\n        }\n    }\n    stop() {\n        if (this.tokenListObserver) {\n            this.disconnectAllTargets();\n            this.tokenListObserver.stop();\n            delete this.tokenListObserver;\n        }\n    }\n    tokenMatched({ element, content: name }) {\n        if (this.scope.containsElement(element)) {\n            this.connectTarget(element, name);\n        }\n    }\n    tokenUnmatched({ element, content: name }) {\n        this.disconnectTarget(element, name);\n    }\n    connectTarget(element, name) {\n        var _a;\n        if (!this.targetsByName.has(name, element)) {\n            this.targetsByName.add(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetConnected(element, name));\n        }\n    }\n    disconnectTarget(element, name) {\n        var _a;\n        if (this.targetsByName.has(name, element)) {\n            this.targetsByName.delete(name, element);\n            (_a = this.tokenListObserver) === null || _a === void 0 ? void 0 : _a.pause(() => this.delegate.targetDisconnected(element, name));\n        }\n    }\n    disconnectAllTargets() {\n        for (const name of this.targetsByName.keys) {\n            for (const element of this.targetsByName.getValuesForKey(name)) {\n                this.disconnectTarget(element, name);\n            }\n        }\n    }\n    get attributeName() {\n        return `data-${this.context.identifier}-target`;\n    }\n    get element() {\n        return this.context.element;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n}\n\nclass Context {\n    constructor(module, scope) {\n        this.logDebugActivity = (functionName, detail = {}) => {\n            const { identifier, controller, element } = this;\n            detail = Object.assign({ identifier, controller, element }, detail);\n            this.application.logDebugActivity(this.identifier, functionName, detail);\n        };\n        this.module = module;\n        this.scope = scope;\n        this.controller = new module.controllerConstructor(this);\n        this.bindingObserver = new BindingObserver(this, this.dispatcher);\n        this.valueObserver = new ValueObserver(this, this.controller);\n        this.targetObserver = new TargetObserver(this, this);\n        try {\n            this.controller.initialize();\n            this.logDebugActivity(\"initialize\");\n        }\n        catch (error) {\n            this.handleError(error, \"initializing controller\");\n        }\n    }\n    connect() {\n        this.bindingObserver.start();\n        this.valueObserver.start();\n        this.targetObserver.start();\n        try {\n            this.controller.connect();\n            this.logDebugActivity(\"connect\");\n        }\n        catch (error) {\n            this.handleError(error, \"connecting controller\");\n        }\n    }\n    disconnect() {\n        try {\n            this.controller.disconnect();\n            this.logDebugActivity(\"disconnect\");\n        }\n        catch (error) {\n            this.handleError(error, \"disconnecting controller\");\n        }\n        this.targetObserver.stop();\n        this.valueObserver.stop();\n        this.bindingObserver.stop();\n    }\n    get application() {\n        return this.module.application;\n    }\n    get identifier() {\n        return this.module.identifier;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get dispatcher() {\n        return this.application.dispatcher;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get parentElement() {\n        return this.element.parentElement;\n    }\n    handleError(error, message, detail = {}) {\n        const { identifier, controller, element } = this;\n        detail = Object.assign({ identifier, controller, element }, detail);\n        this.application.handleError(error, `Error ${message}`, detail);\n    }\n    targetConnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetConnected`, element);\n    }\n    targetDisconnected(element, name) {\n        this.invokeControllerMethod(`${name}TargetDisconnected`, element);\n    }\n    invokeControllerMethod(methodName, ...args) {\n        const controller = this.controller;\n        if (typeof controller[methodName] == \"function\") {\n            controller[methodName](...args);\n        }\n    }\n}\n\nfunction readInheritableStaticArrayValues(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return Array.from(ancestors.reduce((values, constructor) => {\n        getOwnStaticArrayValues(constructor, propertyName).forEach(name => values.add(name));\n        return values;\n    }, new Set));\n}\nfunction readInheritableStaticObjectPairs(constructor, propertyName) {\n    const ancestors = getAncestorsForConstructor(constructor);\n    return ancestors.reduce((pairs, constructor) => {\n        pairs.push(...getOwnStaticObjectPairs(constructor, propertyName));\n        return pairs;\n    }, []);\n}\nfunction getAncestorsForConstructor(constructor) {\n    const ancestors = [];\n    while (constructor) {\n        ancestors.push(constructor);\n        constructor = Object.getPrototypeOf(constructor);\n    }\n    return ancestors.reverse();\n}\nfunction getOwnStaticArrayValues(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return Array.isArray(definition) ? definition : [];\n}\nfunction getOwnStaticObjectPairs(constructor, propertyName) {\n    const definition = constructor[propertyName];\n    return definition ? Object.keys(definition).map(key => [key, definition[key]]) : [];\n}\n\nfunction bless(constructor) {\n    return shadow(constructor, getBlessedProperties(constructor));\n}\nfunction shadow(constructor, properties) {\n    const shadowConstructor = extend(constructor);\n    const shadowProperties = getShadowProperties(constructor.prototype, properties);\n    Object.defineProperties(shadowConstructor.prototype, shadowProperties);\n    return shadowConstructor;\n}\nfunction getBlessedProperties(constructor) {\n    const blessings = readInheritableStaticArrayValues(constructor, \"blessings\");\n    return blessings.reduce((blessedProperties, blessing) => {\n        const properties = blessing(constructor);\n        for (const key in properties) {\n            const descriptor = blessedProperties[key] || {};\n            blessedProperties[key] = Object.assign(descriptor, properties[key]);\n        }\n        return blessedProperties;\n    }, {});\n}\nfunction getShadowProperties(prototype, properties) {\n    return getOwnKeys(properties).reduce((shadowProperties, key) => {\n        const descriptor = getShadowedDescriptor(prototype, properties, key);\n        if (descriptor) {\n            Object.assign(shadowProperties, { [key]: descriptor });\n        }\n        return shadowProperties;\n    }, {});\n}\nfunction getShadowedDescriptor(prototype, properties, key) {\n    const shadowingDescriptor = Object.getOwnPropertyDescriptor(prototype, key);\n    const shadowedByValue = shadowingDescriptor && \"value\" in shadowingDescriptor;\n    if (!shadowedByValue) {\n        const descriptor = Object.getOwnPropertyDescriptor(properties, key).value;\n        if (shadowingDescriptor) {\n            descriptor.get = shadowingDescriptor.get || descriptor.get;\n            descriptor.set = shadowingDescriptor.set || descriptor.set;\n        }\n        return descriptor;\n    }\n}\nconst getOwnKeys = (() => {\n    if (typeof Object.getOwnPropertySymbols == \"function\") {\n        return (object) => [\n            ...Object.getOwnPropertyNames(object),\n            ...Object.getOwnPropertySymbols(object)\n        ];\n    }\n    else {\n        return Object.getOwnPropertyNames;\n    }\n})();\nconst extend = (() => {\n    function extendWithReflect(constructor) {\n        function extended() {\n            return Reflect.construct(constructor, arguments, new.target);\n        }\n        extended.prototype = Object.create(constructor.prototype, {\n            constructor: { value: extended }\n        });\n        Reflect.setPrototypeOf(extended, constructor);\n        return extended;\n    }\n    function testReflectExtension() {\n        const a = function () { this.a.call(this); };\n        const b = extendWithReflect(a);\n        b.prototype.a = function () { };\n        return new b;\n    }\n    try {\n        testReflectExtension();\n        return extendWithReflect;\n    }\n    catch (error) {\n        return (constructor) => class extended extends constructor {\n        };\n    }\n})();\n\nfunction blessDefinition(definition) {\n    return {\n        identifier: definition.identifier,\n        controllerConstructor: bless(definition.controllerConstructor)\n    };\n}\n\nclass Module {\n    constructor(application, definition) {\n        this.application = application;\n        this.definition = blessDefinition(definition);\n        this.contextsByScope = new WeakMap;\n        this.connectedContexts = new Set;\n    }\n    get identifier() {\n        return this.definition.identifier;\n    }\n    get controllerConstructor() {\n        return this.definition.controllerConstructor;\n    }\n    get contexts() {\n        return Array.from(this.connectedContexts);\n    }\n    connectContextForScope(scope) {\n        const context = this.fetchContextForScope(scope);\n        this.connectedContexts.add(context);\n        context.connect();\n    }\n    disconnectContextForScope(scope) {\n        const context = this.contextsByScope.get(scope);\n        if (context) {\n            this.connectedContexts.delete(context);\n            context.disconnect();\n        }\n    }\n    fetchContextForScope(scope) {\n        let context = this.contextsByScope.get(scope);\n        if (!context) {\n            context = new Context(this, scope);\n            this.contextsByScope.set(scope, context);\n        }\n        return context;\n    }\n}\n\nclass ClassMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    has(name) {\n        return this.data.has(this.getDataKey(name));\n    }\n    get(name) {\n        return this.getAll(name)[0];\n    }\n    getAll(name) {\n        const tokenString = this.data.get(this.getDataKey(name)) || \"\";\n        return tokenize(tokenString);\n    }\n    getAttributeName(name) {\n        return this.data.getAttributeNameForKey(this.getDataKey(name));\n    }\n    getDataKey(name) {\n        return `${name}-class`;\n    }\n    get data() {\n        return this.scope.data;\n    }\n}\n\nclass DataMap {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.getAttribute(name);\n    }\n    set(key, value) {\n        const name = this.getAttributeNameForKey(key);\n        this.element.setAttribute(name, value);\n        return this.get(key);\n    }\n    has(key) {\n        const name = this.getAttributeNameForKey(key);\n        return this.element.hasAttribute(name);\n    }\n    delete(key) {\n        if (this.has(key)) {\n            const name = this.getAttributeNameForKey(key);\n            this.element.removeAttribute(name);\n            return true;\n        }\n        else {\n            return false;\n        }\n    }\n    getAttributeNameForKey(key) {\n        return `data-${this.identifier}-${dasherize(key)}`;\n    }\n}\n\nclass Guide {\n    constructor(logger) {\n        this.warnedKeysByObject = new WeakMap;\n        this.logger = logger;\n    }\n    warn(object, key, message) {\n        let warnedKeys = this.warnedKeysByObject.get(object);\n        if (!warnedKeys) {\n            warnedKeys = new Set;\n            this.warnedKeysByObject.set(object, warnedKeys);\n        }\n        if (!warnedKeys.has(key)) {\n            warnedKeys.add(key);\n            this.logger.warn(message, object);\n        }\n    }\n}\n\nfunction attributeValueContainsToken(attributeName, token) {\n    return `[${attributeName}~=\"${token}\"]`;\n}\n\nclass TargetSet {\n    constructor(scope) {\n        this.scope = scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get schema() {\n        return this.scope.schema;\n    }\n    has(targetName) {\n        return this.find(targetName) != null;\n    }\n    find(...targetNames) {\n        return targetNames.reduce((target, targetName) => target\n            || this.findTarget(targetName)\n            || this.findLegacyTarget(targetName), undefined);\n    }\n    findAll(...targetNames) {\n        return targetNames.reduce((targets, targetName) => [\n            ...targets,\n            ...this.findAllTargets(targetName),\n            ...this.findAllLegacyTargets(targetName)\n        ], []);\n    }\n    findTarget(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findElement(selector);\n    }\n    findAllTargets(targetName) {\n        const selector = this.getSelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector);\n    }\n    getSelectorForTargetName(targetName) {\n        const attributeName = this.schema.targetAttributeForScope(this.identifier);\n        return attributeValueContainsToken(attributeName, targetName);\n    }\n    findLegacyTarget(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.deprecate(this.scope.findElement(selector), targetName);\n    }\n    findAllLegacyTargets(targetName) {\n        const selector = this.getLegacySelectorForTargetName(targetName);\n        return this.scope.findAllElements(selector).map(element => this.deprecate(element, targetName));\n    }\n    getLegacySelectorForTargetName(targetName) {\n        const targetDescriptor = `${this.identifier}.${targetName}`;\n        return attributeValueContainsToken(this.schema.targetAttribute, targetDescriptor);\n    }\n    deprecate(element, targetName) {\n        if (element) {\n            const { identifier } = this;\n            const attributeName = this.schema.targetAttribute;\n            const revisedAttributeName = this.schema.targetAttributeForScope(identifier);\n            this.guide.warn(element, `target:${targetName}`, `Please replace ${attributeName}=\"${identifier}.${targetName}\" with ${revisedAttributeName}=\"${targetName}\". ` +\n                `The ${attributeName} attribute is deprecated and will be removed in a future version of Stimulus.`);\n        }\n        return element;\n    }\n    get guide() {\n        return this.scope.guide;\n    }\n}\n\nclass Scope {\n    constructor(schema, element, identifier, logger) {\n        this.targets = new TargetSet(this);\n        this.classes = new ClassMap(this);\n        this.data = new DataMap(this);\n        this.containsElement = (element) => {\n            return element.closest(this.controllerSelector) === this.element;\n        };\n        this.schema = schema;\n        this.element = element;\n        this.identifier = identifier;\n        this.guide = new Guide(logger);\n    }\n    findElement(selector) {\n        return this.element.matches(selector)\n            ? this.element\n            : this.queryElements(selector).find(this.containsElement);\n    }\n    findAllElements(selector) {\n        return [\n            ...this.element.matches(selector) ? [this.element] : [],\n            ...this.queryElements(selector).filter(this.containsElement)\n        ];\n    }\n    queryElements(selector) {\n        return Array.from(this.element.querySelectorAll(selector));\n    }\n    get controllerSelector() {\n        return attributeValueContainsToken(this.schema.controllerAttribute, this.identifier);\n    }\n}\n\nclass ScopeObserver {\n    constructor(element, schema, delegate) {\n        this.element = element;\n        this.schema = schema;\n        this.delegate = delegate;\n        this.valueListObserver = new ValueListObserver(this.element, this.controllerAttribute, this);\n        this.scopesByIdentifierByElement = new WeakMap;\n        this.scopeReferenceCounts = new WeakMap;\n    }\n    start() {\n        this.valueListObserver.start();\n    }\n    stop() {\n        this.valueListObserver.stop();\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    parseValueForToken(token) {\n        const { element, content: identifier } = token;\n        const scopesByIdentifier = this.fetchScopesByIdentifierForElement(element);\n        let scope = scopesByIdentifier.get(identifier);\n        if (!scope) {\n            scope = this.delegate.createScopeForElementAndIdentifier(element, identifier);\n            scopesByIdentifier.set(identifier, scope);\n        }\n        return scope;\n    }\n    elementMatchedValue(element, value) {\n        const referenceCount = (this.scopeReferenceCounts.get(value) || 0) + 1;\n        this.scopeReferenceCounts.set(value, referenceCount);\n        if (referenceCount == 1) {\n            this.delegate.scopeConnected(value);\n        }\n    }\n    elementUnmatchedValue(element, value) {\n        const referenceCount = this.scopeReferenceCounts.get(value);\n        if (referenceCount) {\n            this.scopeReferenceCounts.set(value, referenceCount - 1);\n            if (referenceCount == 1) {\n                this.delegate.scopeDisconnected(value);\n            }\n        }\n    }\n    fetchScopesByIdentifierForElement(element) {\n        let scopesByIdentifier = this.scopesByIdentifierByElement.get(element);\n        if (!scopesByIdentifier) {\n            scopesByIdentifier = new Map;\n            this.scopesByIdentifierByElement.set(element, scopesByIdentifier);\n        }\n        return scopesByIdentifier;\n    }\n}\n\nclass Router {\n    constructor(application) {\n        this.application = application;\n        this.scopeObserver = new ScopeObserver(this.element, this.schema, this);\n        this.scopesByIdentifier = new Multimap;\n        this.modulesByIdentifier = new Map;\n    }\n    get element() {\n        return this.application.element;\n    }\n    get schema() {\n        return this.application.schema;\n    }\n    get logger() {\n        return this.application.logger;\n    }\n    get controllerAttribute() {\n        return this.schema.controllerAttribute;\n    }\n    get modules() {\n        return Array.from(this.modulesByIdentifier.values());\n    }\n    get contexts() {\n        return this.modules.reduce((contexts, module) => contexts.concat(module.contexts), []);\n    }\n    start() {\n        this.scopeObserver.start();\n    }\n    stop() {\n        this.scopeObserver.stop();\n    }\n    loadDefinition(definition) {\n        this.unloadIdentifier(definition.identifier);\n        const module = new Module(this.application, definition);\n        this.connectModule(module);\n    }\n    unloadIdentifier(identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            this.disconnectModule(module);\n        }\n    }\n    getContextForElementAndIdentifier(element, identifier) {\n        const module = this.modulesByIdentifier.get(identifier);\n        if (module) {\n            return module.contexts.find(context => context.element == element);\n        }\n    }\n    handleError(error, message, detail) {\n        this.application.handleError(error, message, detail);\n    }\n    createScopeForElementAndIdentifier(element, identifier) {\n        return new Scope(this.schema, element, identifier, this.logger);\n    }\n    scopeConnected(scope) {\n        this.scopesByIdentifier.add(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.connectContextForScope(scope);\n        }\n    }\n    scopeDisconnected(scope) {\n        this.scopesByIdentifier.delete(scope.identifier, scope);\n        const module = this.modulesByIdentifier.get(scope.identifier);\n        if (module) {\n            module.disconnectContextForScope(scope);\n        }\n    }\n    connectModule(module) {\n        this.modulesByIdentifier.set(module.identifier, module);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach(scope => module.connectContextForScope(scope));\n    }\n    disconnectModule(module) {\n        this.modulesByIdentifier.delete(module.identifier);\n        const scopes = this.scopesByIdentifier.getValuesForKey(module.identifier);\n        scopes.forEach(scope => module.disconnectContextForScope(scope));\n    }\n}\n\nconst defaultSchema = {\n    controllerAttribute: \"data-controller\",\n    actionAttribute: \"data-action\",\n    targetAttribute: \"data-target\",\n    targetAttributeForScope: identifier => `data-${identifier}-target`\n};\n\nclass Application {\n    constructor(element = document.documentElement, schema = defaultSchema) {\n        this.logger = console;\n        this.debug = false;\n        this.logDebugActivity = (identifier, functionName, detail = {}) => {\n            if (this.debug) {\n                this.logFormattedMessage(identifier, functionName, detail);\n            }\n        };\n        this.element = element;\n        this.schema = schema;\n        this.dispatcher = new Dispatcher(this);\n        this.router = new Router(this);\n    }\n    static start(element, schema) {\n        const application = new Application(element, schema);\n        application.start();\n        return application;\n    }\n    async start() {\n        await domReady();\n        this.logDebugActivity(\"application\", \"starting\");\n        this.dispatcher.start();\n        this.router.start();\n        this.logDebugActivity(\"application\", \"start\");\n    }\n    stop() {\n        this.logDebugActivity(\"application\", \"stopping\");\n        this.dispatcher.stop();\n        this.router.stop();\n        this.logDebugActivity(\"application\", \"stop\");\n    }\n    register(identifier, controllerConstructor) {\n        if (controllerConstructor.shouldLoad) {\n            this.load({ identifier, controllerConstructor });\n        }\n    }\n    load(head, ...rest) {\n        const definitions = Array.isArray(head) ? head : [head, ...rest];\n        definitions.forEach(definition => this.router.loadDefinition(definition));\n    }\n    unload(head, ...rest) {\n        const identifiers = Array.isArray(head) ? head : [head, ...rest];\n        identifiers.forEach(identifier => this.router.unloadIdentifier(identifier));\n    }\n    get controllers() {\n        return this.router.contexts.map(context => context.controller);\n    }\n    getControllerForElementAndIdentifier(element, identifier) {\n        const context = this.router.getContextForElementAndIdentifier(element, identifier);\n        return context ? context.controller : null;\n    }\n    handleError(error, message, detail) {\n        var _a;\n        this.logger.error(`%s\\n\\n%o\\n\\n%o`, message, error, detail);\n        (_a = window.onerror) === null || _a === void 0 ? void 0 : _a.call(window, message, \"\", 0, 0, error);\n    }\n    logFormattedMessage(identifier, functionName, detail = {}) {\n        detail = Object.assign({ application: this }, detail);\n        this.logger.groupCollapsed(`${identifier} #${functionName}`);\n        this.logger.log(\"details:\", Object.assign({}, detail));\n        this.logger.groupEnd();\n    }\n}\nfunction domReady() {\n    return new Promise(resolve => {\n        if (document.readyState == \"loading\") {\n            document.addEventListener(\"DOMContentLoaded\", () => resolve());\n        }\n        else {\n            resolve();\n        }\n    });\n}\n\nfunction ClassPropertiesBlessing(constructor) {\n    const classes = readInheritableStaticArrayValues(constructor, \"classes\");\n    return classes.reduce((properties, classDefinition) => {\n        return Object.assign(properties, propertiesForClassDefinition(classDefinition));\n    }, {});\n}\nfunction propertiesForClassDefinition(key) {\n    return {\n        [`${key}Class`]: {\n            get() {\n                const { classes } = this;\n                if (classes.has(key)) {\n                    return classes.get(key);\n                }\n                else {\n                    const attribute = classes.getAttributeName(key);\n                    throw new Error(`Missing attribute \"${attribute}\"`);\n                }\n            }\n        },\n        [`${key}Classes`]: {\n            get() {\n                return this.classes.getAll(key);\n            }\n        },\n        [`has${capitalize(key)}Class`]: {\n            get() {\n                return this.classes.has(key);\n            }\n        }\n    };\n}\n\nfunction TargetPropertiesBlessing(constructor) {\n    const targets = readInheritableStaticArrayValues(constructor, \"targets\");\n    return targets.reduce((properties, targetDefinition) => {\n        return Object.assign(properties, propertiesForTargetDefinition(targetDefinition));\n    }, {});\n}\nfunction propertiesForTargetDefinition(name) {\n    return {\n        [`${name}Target`]: {\n            get() {\n                const target = this.targets.find(name);\n                if (target) {\n                    return target;\n                }\n                else {\n                    throw new Error(`Missing target element \"${name}\" for \"${this.identifier}\" controller`);\n                }\n            }\n        },\n        [`${name}Targets`]: {\n            get() {\n                return this.targets.findAll(name);\n            }\n        },\n        [`has${capitalize(name)}Target`]: {\n            get() {\n                return this.targets.has(name);\n            }\n        }\n    };\n}\n\nfunction ValuePropertiesBlessing(constructor) {\n    const valueDefinitionPairs = readInheritableStaticObjectPairs(constructor, \"values\");\n    const propertyDescriptorMap = {\n        valueDescriptorMap: {\n            get() {\n                return valueDefinitionPairs.reduce((result, valueDefinitionPair) => {\n                    const valueDescriptor = parseValueDefinitionPair(valueDefinitionPair);\n                    const attributeName = this.data.getAttributeNameForKey(valueDescriptor.key);\n                    return Object.assign(result, { [attributeName]: valueDescriptor });\n                }, {});\n            }\n        }\n    };\n    return valueDefinitionPairs.reduce((properties, valueDefinitionPair) => {\n        return Object.assign(properties, propertiesForValueDefinitionPair(valueDefinitionPair));\n    }, propertyDescriptorMap);\n}\nfunction propertiesForValueDefinitionPair(valueDefinitionPair) {\n    const definition = parseValueDefinitionPair(valueDefinitionPair);\n    const { key, name, reader: read, writer: write } = definition;\n    return {\n        [name]: {\n            get() {\n                const value = this.data.get(key);\n                if (value !== null) {\n                    return read(value);\n                }\n                else {\n                    return definition.defaultValue;\n                }\n            },\n            set(value) {\n                if (value === undefined) {\n                    this.data.delete(key);\n                }\n                else {\n                    this.data.set(key, write(value));\n                }\n            }\n        },\n        [`has${capitalize(name)}`]: {\n            get() {\n                return this.data.has(key) || definition.hasCustomDefaultValue;\n            }\n        }\n    };\n}\nfunction parseValueDefinitionPair([token, typeDefinition]) {\n    return valueDescriptorForTokenAndTypeDefinition(token, typeDefinition);\n}\nfunction parseValueTypeConstant(constant) {\n    switch (constant) {\n        case Array: return \"array\";\n        case Boolean: return \"boolean\";\n        case Number: return \"number\";\n        case Object: return \"object\";\n        case String: return \"string\";\n    }\n}\nfunction parseValueTypeDefault(defaultValue) {\n    switch (typeof defaultValue) {\n        case \"boolean\": return \"boolean\";\n        case \"number\": return \"number\";\n        case \"string\": return \"string\";\n    }\n    if (Array.isArray(defaultValue))\n        return \"array\";\n    if (Object.prototype.toString.call(defaultValue) === \"[object Object]\")\n        return \"object\";\n}\nfunction parseValueTypeObject(typeObject) {\n    const typeFromObject = parseValueTypeConstant(typeObject.type);\n    if (typeFromObject) {\n        const defaultValueType = parseValueTypeDefault(typeObject.default);\n        if (typeFromObject !== defaultValueType) {\n            throw new Error(`Type \"${typeFromObject}\" must match the type of the default value. Given default value: \"${typeObject.default}\" as \"${defaultValueType}\"`);\n        }\n        return typeFromObject;\n    }\n}\nfunction parseValueTypeDefinition(typeDefinition) {\n    const typeFromObject = parseValueTypeObject(typeDefinition);\n    const typeFromDefaultValue = parseValueTypeDefault(typeDefinition);\n    const typeFromConstant = parseValueTypeConstant(typeDefinition);\n    const type = typeFromObject || typeFromDefaultValue || typeFromConstant;\n    if (type)\n        return type;\n    throw new Error(`Unknown value type \"${typeDefinition}\"`);\n}\nfunction defaultValueForDefinition(typeDefinition) {\n    const constant = parseValueTypeConstant(typeDefinition);\n    if (constant)\n        return defaultValuesByType[constant];\n    const defaultValue = typeDefinition.default;\n    if (defaultValue !== undefined)\n        return defaultValue;\n    return typeDefinition;\n}\nfunction valueDescriptorForTokenAndTypeDefinition(token, typeDefinition) {\n    const key = `${dasherize(token)}-value`;\n    const type = parseValueTypeDefinition(typeDefinition);\n    return {\n        type,\n        key,\n        name: camelize(key),\n        get defaultValue() { return defaultValueForDefinition(typeDefinition); },\n        get hasCustomDefaultValue() { return parseValueTypeDefault(typeDefinition) !== undefined; },\n        reader: readers[type],\n        writer: writers[type] || writers.default\n    };\n}\nconst defaultValuesByType = {\n    get array() { return []; },\n    boolean: false,\n    number: 0,\n    get object() { return {}; },\n    string: \"\"\n};\nconst readers = {\n    array(value) {\n        const array = JSON.parse(value);\n        if (!Array.isArray(array)) {\n            throw new TypeError(\"Expected array\");\n        }\n        return array;\n    },\n    boolean(value) {\n        return !(value == \"0\" || value == \"false\");\n    },\n    number(value) {\n        return Number(value);\n    },\n    object(value) {\n        const object = JSON.parse(value);\n        if (object === null || typeof object != \"object\" || Array.isArray(object)) {\n            throw new TypeError(\"Expected object\");\n        }\n        return object;\n    },\n    string(value) {\n        return value;\n    }\n};\nconst writers = {\n    default: writeString,\n    array: writeJSON,\n    object: writeJSON\n};\nfunction writeJSON(value) {\n    return JSON.stringify(value);\n}\nfunction writeString(value) {\n    return `${value}`;\n}\n\nclass Controller {\n    constructor(context) {\n        this.context = context;\n    }\n    static get shouldLoad() {\n        return true;\n    }\n    get application() {\n        return this.context.application;\n    }\n    get scope() {\n        return this.context.scope;\n    }\n    get element() {\n        return this.scope.element;\n    }\n    get identifier() {\n        return this.scope.identifier;\n    }\n    get targets() {\n        return this.scope.targets;\n    }\n    get classes() {\n        return this.scope.classes;\n    }\n    get data() {\n        return this.scope.data;\n    }\n    initialize() {\n    }\n    connect() {\n    }\n    disconnect() {\n    }\n    dispatch(eventName, { target = this.element, detail = {}, prefix = this.identifier, bubbles = true, cancelable = true } = {}) {\n        const type = prefix ? `${prefix}:${eventName}` : eventName;\n        const event = new CustomEvent(type, { detail, bubbles, cancelable });\n        target.dispatchEvent(event);\n        return event;\n    }\n}\nController.blessings = [ClassPropertiesBlessing, TargetPropertiesBlessing, ValuePropertiesBlessing];\nController.targets = [];\nController.values = {};\n\nexport { Application, AttributeObserver, Context, Controller, ElementObserver, IndexedMultimap, Multimap, StringMapObserver, TokenListObserver, ValueListObserver, add, defaultSchema, del, fetch, prune };\n", "import { Application } from \"@hotwired/stimulus\"\n\nconst application = Application.start()\n\n// Configure Stimulus development experience\napplication.debug = false\nwindow.Stimulus   = application\n\nexport { application }\n", "import { Controller } from \"@hotwired/stimulus\";\n\n// Connect to input with data-controller=\"sidebar\"\nexport default class extends Controller {\n  connect() {\n    if (localStorage.getItem(\"sidebar\")) {\n      document.body.classList.add(`sidebar-${localStorage.getItem(\"sidebar\")}`);\n    } else {\n      localStorage.setItem(\"sidebar\", \"open\");\n      document.body.classList.add(\"sidebar-open\");\n    }\n    window.addEventListener(\"resize\", this.onResize.bind(this), {\n      passive: true,\n    });\n  }\n\n  toggle(event) {\n    const isOpen = document.body.classList.contains(\"sidebar-open\");\n    if (isOpen) {\n      document.body.classList.remove(\"sidebar-open\");\n      document.body.classList.add(\"sidebar-closed\");\n    } else {\n      document.body.classList.remove(\"sidebar-closed\");\n      document.body.classList.add(\"sidebar-open\");\n    }\n    localStorage.setItem(\"sidebar\", isOpen ? \"closed\" : \"open\");\n  }\n\n  onResize(event) {\n    if (\n      window.innerWidth < 992 &&\n      document.body.classList.contains(\"sidebar-open\")\n    ) {\n      this.toggle();\n    }\n  }\n}\n", "export class FetchResponse {\n  constructor (response) {\n    this.response = response\n  }\n\n  get statusCode () {\n    return this.response.status\n  }\n\n  get redirected () {\n    return this.response.redirected\n  }\n\n  get ok () {\n    return this.response.ok\n  }\n\n  get unauthenticated () {\n    return this.statusCode === 401\n  }\n\n  get unprocessableEntity () {\n    return this.statusCode === 422\n  }\n\n  get authenticationURL () {\n    return this.response.headers.get('WWW-Authenticate')\n  }\n\n  get contentType () {\n    const contentType = this.response.headers.get('Content-Type') || ''\n\n    return contentType.replace(/;.*$/, '')\n  }\n\n  get headers () {\n    return this.response.headers\n  }\n\n  get html () {\n    if (this.contentType.match(/^(application|text)\\/(html|xhtml\\+xml)$/)) {\n      return this.text\n    }\n\n    return Promise.reject(new Error(`Expected an HTML response but got \"${this.contentType}\" instead`))\n  }\n\n  get json () {\n    if (this.contentType.match(/^application\\/.*json$/)) {\n      return this.responseJson || (this.responseJson = this.response.json())\n    }\n\n    return Promise.reject(new Error(`Expected a JSON response but got \"${this.contentType}\" instead`))\n  }\n\n  get text () {\n    return this.responseText || (this.responseText = this.response.text())\n  }\n\n  get isTurboStream () {\n    return this.contentType.match(/^text\\/vnd\\.turbo-stream\\.html/)\n  }\n\n  async renderTurboStream () {\n    if (this.isTurboStream) {\n      if (window.Turbo) {\n        await window.Turbo.renderStreamMessage(await this.text)\n      } else {\n        console.warn('You must set `window.Turbo = Turbo` to automatically process Turbo Stream events with request.js')\n      }\n    } else {\n      return Promise.reject(new Error(`Expected a Turbo Stream response but got \"${this.contentType}\" instead`))\n    }\n  }\n}\n", "export class RequestInterceptor {\n  static register (interceptor) {\n    this.interceptor = interceptor\n  }\n\n  static get () {\n    return this.interceptor\n  }\n\n  static reset () {\n    this.interceptor = undefined\n  }\n}\n", "export function getCookie (name) {\n  const cookies = document.cookie ? document.cookie.split('; ') : []\n  const prefix = `${encodeURIComponent(name)}=`\n  const cookie = cookies.find(cookie => cookie.startsWith(prefix))\n\n  if (cookie) {\n    const value = cookie.split('=').slice(1).join('=')\n\n    if (value) {\n      return decodeURIComponent(value)\n    }\n  }\n}\n\nexport function compact (object) {\n  const result = {}\n\n  for (const key in object) {\n    const value = object[key]\n    if (value !== undefined) {\n      result[key] = value\n    }\n  }\n\n  return result\n}\n\nexport function metaContent (name) {\n  const element = document.head.querySelector(`meta[name=\"${name}\"]`)\n  return element && element.content\n}\n\nexport function stringEntriesFromFormData (formData) {\n  return [...formData].reduce((entries, [name, value]) => {\n    return entries.concat(typeof value === 'string' ? [[name, value]] : [])\n  }, [])\n}\n\nexport function mergeEntries (searchParams, entries) {\n  for (const [name, value] of entries) {\n    if (value instanceof window.File) continue\n\n    if (searchParams.has(name)) {\n      searchParams.delete(name)\n      searchParams.set(name, value)\n    } else {\n      searchParams.append(name, value)\n    }\n  }\n}\n", "import { FetchResponse } from './fetch_response'\nimport { RequestInterceptor } from './request_interceptor'\nimport { getCookie, compact, metaContent, stringEntriesFromFormData, mergeEntries } from './lib/utils'\n\nexport class FetchRequest {\n  constructor (method, url, options = {}) {\n    this.method = method\n    this.options = options\n    this.originalUrl = url.toString()\n  }\n\n  async perform () {\n    try {\n      const requestInterceptor = RequestInterceptor.get()\n      if (requestInterceptor) {\n        await requestInterceptor(this)\n      }\n    } catch (error) {\n      console.error(error)\n    }\n\n    const response = new FetchResponse(await window.fetch(this.url, this.fetchOptions))\n\n    if (response.unauthenticated && response.authenticationURL) {\n      return Promise.reject(window.location.href = response.authenticationURL)\n    }\n\n    if (response.ok && response.isTurboStream) {\n      await response.renderTurboStream()\n    }\n\n    return response\n  }\n\n  addHeader (key, value) {\n    const headers = this.additionalHeaders\n    headers[key] = value\n    this.options.headers = headers\n  }\n\n  get fetchOptions () {\n    return {\n      method: this.method.toUpperCase(),\n      headers: this.headers,\n      body: this.formattedBody,\n      signal: this.signal,\n      credentials: 'same-origin',\n      redirect: this.redirect\n    }\n  }\n\n  get headers () {\n    return compact(\n      Object.assign({\n        'X-Requested-With': 'XMLHttpRequest',\n        'X-CSRF-Token': this.csrfToken,\n        'Content-Type': this.contentType,\n        Accept: this.accept\n      },\n      this.additionalHeaders)\n    )\n  }\n\n  get csrfToken () {\n    return getCookie(metaContent('csrf-param')) || metaContent('csrf-token')\n  }\n\n  get contentType () {\n    if (this.options.contentType) {\n      return this.options.contentType\n    } else if (this.body == null || this.body instanceof window.FormData) {\n      return undefined\n    } else if (this.body instanceof window.File) {\n      return this.body.type\n    }\n\n    return 'application/json'\n  }\n\n  get accept () {\n    switch (this.responseKind) {\n      case 'html':\n        return 'text/html, application/xhtml+xml'\n      case 'turbo-stream':\n        return 'text/vnd.turbo-stream.html, text/html, application/xhtml+xml'\n      case 'json':\n        return 'application/json, application/vnd.api+json'\n      default:\n        return '*/*'\n    }\n  }\n\n  get body () {\n    return this.options.body\n  }\n\n  get query () {\n    const originalQuery = (this.originalUrl.split('?')[1] || '').split('#')[0]\n    const params = new URLSearchParams(originalQuery)\n\n    let requestQuery = this.options.query\n    if (requestQuery instanceof window.FormData) {\n      requestQuery = stringEntriesFromFormData(requestQuery)\n    } else if (requestQuery instanceof window.URLSearchParams) {\n      requestQuery = requestQuery.entries()\n    } else {\n      requestQuery = Object.entries(requestQuery || {})\n    }\n\n    mergeEntries(params, requestQuery)\n\n    const query = params.toString()\n    return (query.length > 0 ? `?${query}` : '')\n  }\n\n  get url () {\n    return (this.originalUrl.split('?')[0]).split('#')[0] + this.query\n  }\n\n  get responseKind () {\n    return this.options.responseKind || 'html'\n  }\n\n  get signal () {\n    return this.options.signal\n  }\n\n  get redirect () {\n    return this.options.redirect || 'follow'\n  }\n\n  get additionalHeaders () {\n    return this.options.headers || {}\n  }\n\n  get formattedBody () {\n    const bodyIsAString = Object.prototype.toString.call(this.body) === '[object String]'\n    const contentTypeIsJson = this.headers['Content-Type'] === 'application/json'\n\n    if (contentTypeIsJson && !bodyIsAString) {\n      return JSON.stringify(this.body)\n    }\n\n    return this.body\n  }\n}\n", "import { FetchRequest } from './fetch_request'\n\nasync function get (url, options) {\n  const request = new FetchRequest('get', url, options)\n  return request.perform()\n}\n\nasync function post (url, options) {\n  const request = new FetchRequest('post', url, options)\n  return request.perform()\n}\n\nasync function put (url, options) {\n  const request = new FetchRequest('put', url, options)\n  return request.perform()\n}\n\nasync function patch (url, options) {\n  const request = new FetchRequest('patch', url, options)\n  return request.perform()\n}\n\nasync function destroy (url, options) {\n  const request = new FetchRequest('delete', url, options)\n  return request.perform()\n}\n\nexport { get, post, put, patch, destroy }\n", "import { Controller } from \"@hotwired/stimulus\";\nimport { get } from \"@rails/request.js\"\nimport { stringify, parse } from 'query-string';\n\n\nexport default class extends Controller {\n  static values = {\n    url: String,\n  }\n\n  change(event) {\n    let checkedAuthorizedUserCbs = document.querySelectorAll(\"fieldset.mission_authorized_users input.check_boxes:checked\")\n    let checkedAuthorizedUserIds = Array.from(checkedAuthorizedUserCbs).map((checkbox) => checkbox.value)\n    let userIds = Array.from(event.target.selectedOptions).map((option) => option.value)\n    let userIdsQueryUrl = stringify({user_ids: userIds}, { arrayFormat: 'bracket' });\n    let authorizedUserIdsQueryUrl = stringify({authorized_user_ids: checkedAuthorizedUserIds}, { arrayFormat: 'bracket' });\n    let queryUrl = `${this.urlValue}?${userIdsQueryUrl}&${authorizedUserIdsQueryUrl}`\n\n    get(queryUrl, {\n      responseKind: 'turbo-stream'\n    })\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  // filesTarget is going to contain the list of input elements we've added\n  // files to - in other words, these are the input elements that we're going\n  // to submit.\n  static targets = [\"files\"];\n\n  addFile(event) {\n    // Grab some references for later\n    const originalInput = event.target;\n    const originalParent = originalInput.parentNode;\n\n    // clear current selection\n    this.filesTarget.replaceChildren()\n\n    for (const file of originalInput.files) {\n\n      // Create an element that contains our input element\n      const selectedFile = document.createElement(\"div\"); \n      selectedFile.className = \"form-file-upload--display mb-2\";\n      originalInput.className += \" d-none\";\n      selectedFile.append(originalInput);\n\n      // Create label (the visible part of the new input element) with the name of\n      // the selected file.\n      var labelNode = document.createElement(\"span\");\n      var textElement = document.createTextNode(file.name);\n      labelNode.className = \"filename wrap mid-blue\";\n      var iconNode = document.createElement(\"span\");\n      // var checkNode = document.createElement(\"span\");\n      iconNode.className = \"icon-file-text mid-blue\";\n      // checkNode.className = \"icon-check\";\n      selectedFile.appendChild(iconNode);\n      labelNode.appendChild(textElement);\n      selectedFile.appendChild(labelNode);\n      // selectedFile.appendChild(checkNode);\n  \n      // Add the selected file to the list of selected files\n      this.filesTarget.append(selectedFile);\n  \n      // Create a new input field to use going forward\n      const newInput = originalInput.cloneNode();\n  \n      // Clear the filelist - some browsers maintain the filelist when cloning,\n      // others don't\n      newInput.value = \"\";\n  \n      // Add it to the DOM where the original input was\n      originalParent.append(newInput);\n\n    }\n\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n// import { get } from \"@rails/request.js\"\nimport urlQueryJsonParser from \"url-query-json-parser\";\n\n\nexport default class extends Controller {\n  static values = {\n    url: String,\n    user: String\n  }\n\n  more_fields(event) {\n    \n    let selectedRole = event.srcElement.labels[0].innerHTML\n    let params = new URLSearchParams()\n    params.append('role', selectedRole)\n    let userQueryUrl = ''\n    if (this.userValue !== 'null') {\n      let json = {'user_attributes': JSON.parse(this.userValue)}\n      userQueryUrl = urlQueryJsonParser.parseJSON(json)\n    }\n    let queryUrl = `${this.urlValue}?${params}&${userQueryUrl}`\n    \n    const frame = document.getElementById('user_role_fields');\n    // Query additional form defined by role -- format HTML\n    frame.src = queryUrl;\n    frame.reload();\n  }\n}\n", "/**\n * MicroEvent - to make any js object an event emitter\n *\n * - pure javascript - server compatible, browser compatible\n * - dont rely on the browser doms\n * - super simple - you get it immediatly, no mistery, no magic involved\n *\n * @author Jerome Etienne (https://github.com/jeromeetienne)\n */\n\ntype TCallback = (...args:any) => any;\n\n/**\n * Execute callback for each event in space separated list of event names\n *\n */\nfunction forEvents(events:string,callback:(event:string)=>any){\n\tevents.split(/\\s+/).forEach((event) =>{\n\t\tcallback(event);\n\t});\n}\n\nexport default class MicroEvent{\n\n\tpublic _events: {[key:string]:TCallback[]};\n\n\tconstructor(){\n\t\tthis._events = {};\n\t}\n\n\ton(events:string, fct:TCallback){\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = this._events[event] || [];\n\t\t\tevent_array.push(fct);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\toff(events:string, fct:TCallback){\n\t\tvar n = arguments.length;\n\t\tif( n === 0 ){\n\t\t\tthis._events = {};\n\t\t\treturn;\n\t\t}\n\n\t\tforEvents(events,(event) => {\n\n\t\t\tif (n === 1){\n\t\t\t\tdelete this._events[event];\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tconst event_array = this._events[event];\n\t\t\tif( event_array === undefined ) return;\n\n\t\t\tevent_array.splice(event_array.indexOf(fct), 1);\n\t\t\tthis._events[event] = event_array;\n\t\t});\n\t}\n\n\ttrigger(events:string, ...args:any){\n\t\tvar self = this;\n\n\t\tforEvents(events,(event) => {\n\t\t\tconst event_array = self._events[event];\n\t\t\tif( event_array === undefined ) return;\n\t\t\tevent_array.forEach(fct => {\n\t\t\t\tfct.apply(self, args );\n\t\t\t});\n\n\t\t});\n\t}\n};\n", "/**\n * microplugin.js\n * Copyright (c) 2013 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\ntype TSettings = {\n\t[key:string]:any\n}\n\ntype TPlugins = {\n\tnames: string[],\n\tsettings: TSettings,\n\trequested: {[key:string]:boolean},\n\tloaded: {[key:string]:any}\n};\n\nexport type TPluginItem = {name:string,options:{}};\nexport type TPluginHash = {[key:string]:{}};\n\n\n\n\nexport default function MicroPlugin(Interface: any ){\n\n\tInterface.plugins = {};\n\n\treturn class extends Interface{\n\n\t\tpublic plugins:TPlugins = {\n\t\t\tnames     : [],\n\t\t\tsettings  : {},\n\t\t\trequested : {},\n\t\t\tloaded    : {}\n\t\t};\n\n\t\t/**\n\t\t * Registers a plugin.\n\t\t *\n\t\t * @param {function} fn\n\t\t */\n\t\tstatic define(name:string, fn:(this:any,settings:TSettings)=>any){\n\t\t\tInterface.plugins[name] = {\n\t\t\t\t'name' : name,\n\t\t\t\t'fn'   : fn\n\t\t\t};\n\t\t}\n\n\n\t\t/**\n\t\t * Initializes the listed plugins (with options).\n\t\t * Acceptable formats:\n\t\t *\n\t\t * List (without options):\n\t\t *   ['a', 'b', 'c']\n\t\t *\n\t\t * List (with options):\n\t\t *   [{'name': 'a', options: {}}, {'name': 'b', options: {}}]\n\t\t *\n\t\t * Hash (with options):\n\t\t *   {'a': { ... }, 'b': { ... }, 'c': { ... }}\n\t\t *\n\t\t * @param {array|object} plugins\n\t\t */\n\t\tinitializePlugins(plugins:string[]|TPluginItem[]|TPluginHash) {\n\t\t\tvar key, name;\n\t\t\tconst self  = this;\n\t\t\tconst queue:string[] = [];\n\n\t\t\tif (Array.isArray(plugins)) {\n\t\t\t\tplugins.forEach((plugin:string|TPluginItem)=>{\n\t\t\t\t\tif (typeof plugin === 'string') {\n\t\t\t\t\t\tqueue.push(plugin);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.plugins.settings[plugin.name] = plugin.options;\n\t\t\t\t\t\tqueue.push(plugin.name);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t} else if (plugins) {\n\t\t\t\tfor (key in plugins) {\n\t\t\t\t\tif (plugins.hasOwnProperty(key)) {\n\t\t\t\t\t\tself.plugins.settings[key] = plugins[key];\n\t\t\t\t\t\tqueue.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\twhile( name = queue.shift() ){\n\t\t\t\tself.require(name);\n\t\t\t}\n\t\t}\n\n\t\tloadPlugin(name:string) {\n\t\t\tvar self    = this;\n\t\t\tvar plugins = self.plugins;\n\t\t\tvar plugin  = Interface.plugins[name];\n\n\t\t\tif (!Interface.plugins.hasOwnProperty(name)) {\n\t\t\t\tthrow new Error('Unable to find \"' +  name + '\" plugin');\n\t\t\t}\n\n\t\t\tplugins.requested[name] = true;\n\t\t\tplugins.loaded[name] = plugin.fn.apply(self, [self.plugins.settings[name] || {}]);\n\t\t\tplugins.names.push(name);\n\t\t}\n\n\t\t/**\n\t\t * Initializes a plugin.\n\t\t *\n\t\t */\n\t\trequire(name:string) {\n\t\t\tvar self = this;\n\t\t\tvar plugins = self.plugins;\n\n\t\t\tif (!self.plugins.loaded.hasOwnProperty(name)) {\n\t\t\t\tif (plugins.requested[name]) {\n\t\t\t\t\tthrow new Error('Plugin has circular dependency (\"' + name + '\")');\n\t\t\t\t}\n\t\t\t\tself.loadPlugin(name);\n\t\t\t}\n\n\t\t\treturn plugins.loaded[name];\n\t\t}\n\n\t};\n\n}\n", "/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n * @param {string[]} chars\n * @return {string}\n */\nconst arrayToPattern = chars => {\n  chars = chars.filter(Boolean);\n\n  if (chars.length < 2) {\n    return chars[0] || '';\n  }\n\n  return maxValueLength(chars) == 1 ? '[' + chars.join('') + ']' : '(?:' + chars.join('|') + ')';\n};\n/**\n * @param {string[]} array\n * @return {string}\n */\n\nconst sequencePattern = array => {\n  if (!hasDuplicates(array)) {\n    return array.join('');\n  }\n\n  let pattern = '';\n  let prev_char_count = 0;\n\n  const prev_pattern = () => {\n    if (prev_char_count > 1) {\n      pattern += '{' + prev_char_count + '}';\n    }\n  };\n\n  array.forEach((char, i) => {\n    if (char === array[i - 1]) {\n      prev_char_count++;\n      return;\n    }\n\n    prev_pattern();\n    pattern += char;\n    prev_char_count = 1;\n  });\n  prev_pattern();\n  return pattern;\n};\n/**\n * Convert array of strings to a regular expression\n *\tex ['ab','a'] => (?:ab|a)\n * \tex ['a','b'] => [ab]\n * @param {Set<string>} chars\n * @return {string}\n */\n\nconst setToPattern = chars => {\n  let array = toArray(chars);\n  return arrayToPattern(array);\n};\n/**\n *\n * https://stackoverflow.com/questions/7376598/in-javascript-how-do-i-check-if-an-array-has-duplicate-values\n * @param {any[]} array\n */\n\nconst hasDuplicates = array => {\n  return new Set(array).size !== array.length;\n};\n/**\n * https://stackoverflow.com/questions/63006601/why-does-u-throw-an-invalid-escape-error\n * @param {string} str\n * @return {string}\n */\n\nconst escape_regex = str => {\n  return (str + '').replace(/([\\$\\(\\)\\*\\+\\.\\?\\[\\]\\^\\{\\|\\}\\\\])/gu, '\\\\$1');\n};\n/**\n * Return the max length of array values\n * @param {string[]} array\n *\n */\n\nconst maxValueLength = array => {\n  return array.reduce((longest, value) => Math.max(longest, unicodeLength(value)), 0);\n};\n/**\n * @param {string} str\n */\n\nconst unicodeLength = str => {\n  return toArray(str).length;\n};\n/**\n * @param {any} p\n * @return {any[]}\n */\n\nconst toArray = p => Array.from(p);\n\nexport { arrayToPattern, escape_regex, hasDuplicates, maxValueLength, sequencePattern, setToPattern, toArray, unicodeLength };\n//# sourceMappingURL=regex.js.map\n", "/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\n/**\n * Get all possible combinations of substrings that add up to the given string\n * https://stackoverflow.com/questions/30169587/find-all-the-combination-of-substrings-that-add-up-to-the-given-string\n * @param {string} input\n * @return {string[][]}\n */\nconst allSubstrings = input => {\n  if (input.length === 1) return [[input]];\n  /** @type {string[][]} */\n\n  let result = [];\n  const start = input.substring(1);\n  const suba = allSubstrings(start);\n  suba.forEach(function (subresult) {\n    let tmp = subresult.slice(0);\n    tmp[0] = input.charAt(0) + tmp[0];\n    result.push(tmp);\n    tmp = subresult.slice(0);\n    tmp.unshift(input.charAt(0));\n    result.push(tmp);\n  });\n  return result;\n};\n\nexport { allSubstrings };\n//# sourceMappingURL=strings.js.map\n", "/*! @orchidjs/unicode-variants | https://github.com/orchidjs/unicode-variants | Apache License (v2) */\nimport { toArray, setToPattern, escape_regex, arrayToPattern, sequencePattern } from './regex.js';\nexport { escape_regex } from './regex.js';\nimport { allSubstrings } from './strings.js';\n\n/**\n * @typedef {{[key:string]:string}} TUnicodeMap\n * @typedef {{[key:string]:Set<string>}} TUnicodeSets\n * @typedef {[[number,number]]} TCodePoints\n * @typedef {{folded:string,composed:string,code_point:number}} TCodePointObj\n * @typedef {{start:number,end:number,length:number,substr:string}} TSequencePart\n */\n/** @type {TCodePoints} */\n\nconst code_points = [[0, 65535]];\nconst accent_pat = '[\\u0300-\\u036F\\u{b7}\\u{2be}\\u{2bc}]';\n/** @type {TUnicodeMap} */\n\nlet unicode_map;\n/** @type {RegExp} */\n\nlet multi_char_reg;\nconst max_char_length = 3;\n/** @type {TUnicodeMap} */\n\nconst latin_convert = {};\n/** @type {TUnicodeMap} */\n\nconst latin_condensed = {\n  '/': '\u2044\u2215',\n  '0': '\u07C0',\n  \"a\": \"\u2C65\u0250\u0251\",\n  \"aa\": \"\uA733\",\n  \"ae\": \"\u00E6\u01FD\u01E3\",\n  \"ao\": \"\uA735\",\n  \"au\": \"\uA737\",\n  \"av\": \"\uA739\uA73B\",\n  \"ay\": \"\uA73D\",\n  \"b\": \"\u0180\u0253\u0183\",\n  \"c\": \"\uA73F\u0188\u023C\u2184\",\n  \"d\": \"\u0111\u0257\u0256\u1D05\u018C\uABB7\u0501\u0266\",\n  \"e\": \"\u025B\u01DD\u1D07\u0247\",\n  \"f\": \"\uA77C\u0192\",\n  \"g\": \"\u01E5\u0260\uA7A1\u1D79\uA77F\u0262\",\n  \"h\": \"\u0127\u2C68\u2C76\u0265\",\n  \"i\": \"\u0268\u0131\",\n  \"j\": \"\u0249\u0237\",\n  \"k\": \"\u0199\u2C6A\uA741\uA743\uA745\uA7A3\",\n  \"l\": \"\u0142\u019A\u026B\u2C61\uA749\uA747\uA781\u026D\",\n  \"m\": \"\u0271\u026F\u03FB\",\n  \"n\": \"\uA7A5\u019E\u0272\uA791\u1D0E\u043B\u0509\",\n  \"o\": \"\u00F8\u01FF\u0254\u0275\uA74B\uA74D\u1D11\",\n  \"oe\": \"\u0153\",\n  \"oi\": \"\u01A3\",\n  \"oo\": \"\uA74F\",\n  \"ou\": \"\u0223\",\n  \"p\": \"\u01A5\u1D7D\uA751\uA753\uA755\u03C1\",\n  \"q\": \"\uA757\uA759\u024B\",\n  \"r\": \"\u024D\u027D\uA75B\uA7A7\uA783\",\n  \"s\": \"\u00DF\u023F\uA7A9\uA785\u0282\",\n  \"t\": \"\u0167\u01AD\u0288\u2C66\uA787\",\n  \"th\": \"\u00FE\",\n  \"tz\": \"\uA729\",\n  \"u\": \"\u0289\",\n  \"v\": \"\u028B\uA75F\u028C\",\n  \"vy\": \"\uA761\",\n  \"w\": \"\u2C73\",\n  \"y\": \"\u01B4\u024F\u1EFF\",\n  \"z\": \"\u01B6\u0225\u0240\u2C6C\uA763\",\n  \"hv\": \"\u0195\"\n};\n\nfor (let latin in latin_condensed) {\n  let unicode = latin_condensed[latin] || '';\n\n  for (let i = 0; i < unicode.length; i++) {\n    let char = unicode.substring(i, i + 1);\n    latin_convert[char] = latin;\n  }\n}\n\nconst convert_pat = new RegExp(Object.keys(latin_convert).join('|') + '|' + accent_pat, 'gu');\n/**\n * Initialize the unicode_map from the give code point ranges\n *\n * @param {TCodePoints=} _code_points\n */\n\nconst initialize = _code_points => {\n  if (unicode_map !== undefined) return;\n  unicode_map = generateMap(_code_points || code_points);\n};\n/**\n * Helper method for normalize a string\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/normalize\n * @param {string} str\n * @param {string} form\n */\n\nconst normalize = (str, form = 'NFKD') => str.normalize(form);\n/**\n * Remove accents without reordering string\n * calling str.normalize('NFKD') on \\u{594}\\u{595}\\u{596} becomes \\u{596}\\u{594}\\u{595}\n * via https://github.com/krisk/Fuse/issues/133#issuecomment-318692703\n * @param {string} str\n * @return {string}\n */\n\nconst asciifold = str => {\n  return toArray(str).reduce(\n  /**\n   * @param {string} result\n   * @param {string} char\n   */\n  (result, char) => {\n    return result + _asciifold(char);\n  }, '');\n};\n/**\n * @param {string} str\n * @return {string}\n */\n\nconst _asciifold = str => {\n  str = normalize(str).toLowerCase().replace(convert_pat, (\n  /** @type {string} */\n  char) => {\n    return latin_convert[char] || '';\n  }); //return str;\n\n  return normalize(str, 'NFC');\n};\n/**\n * Generate a list of unicode variants from the list of code points\n * @param {TCodePoints} code_points\n * @yield {TCodePointObj}\n */\n\nfunction* generator(code_points) {\n  for (const [code_point_min, code_point_max] of code_points) {\n    for (let i = code_point_min; i <= code_point_max; i++) {\n      let composed = String.fromCharCode(i);\n      let folded = asciifold(composed);\n\n      if (folded == composed.toLowerCase()) {\n        continue;\n      } // skip when folded is a string longer than 3 characters long\n      // bc the resulting regex patterns will be long\n      // eg:\n      // folded \u0635\u0644\u0649 \u0627\u0644\u0644\u0647 \u0639\u0644\u064A\u0647 \u0648\u0633\u0644\u0645 length 18 code point 65018\n      // folded \u062C\u0644 \u062C\u0644\u0627\u0644\u0647 length 8 code point 65019\n\n\n      if (folded.length > max_char_length) {\n        continue;\n      }\n\n      if (folded.length == 0) {\n        continue;\n      }\n\n      yield {\n        folded: folded,\n        composed: composed,\n        code_point: i\n      };\n    }\n  }\n}\n/**\n * Generate a unicode map from the list of code points\n * @param {TCodePoints} code_points\n * @return {TUnicodeSets}\n */\n\nconst generateSets = code_points => {\n  /** @type {{[key:string]:Set<string>}} */\n  const unicode_sets = {};\n  /**\n   * @param {string} folded\n   * @param {string} to_add\n   */\n\n  const addMatching = (folded, to_add) => {\n    /** @type {Set<string>} */\n    const folded_set = unicode_sets[folded] || new Set();\n    const patt = new RegExp('^' + setToPattern(folded_set) + '$', 'iu');\n\n    if (to_add.match(patt)) {\n      return;\n    }\n\n    folded_set.add(escape_regex(to_add));\n    unicode_sets[folded] = folded_set;\n  };\n\n  for (let value of generator(code_points)) {\n    addMatching(value.folded, value.folded);\n    addMatching(value.folded, value.composed);\n  }\n\n  return unicode_sets;\n};\n/**\n * Generate a unicode map from the list of code points\n * ae => (?:(?:ae|\u00C6|\u01FC|\u01E2)|(?:A|\u24B6|\uFF21...)(?:E|\u025B|\u24BA...))\n *\n * @param {TCodePoints} code_points\n * @return {TUnicodeMap}\n */\n\nconst generateMap = code_points => {\n  /** @type {TUnicodeSets} */\n  const unicode_sets = generateSets(code_points);\n  /** @type {TUnicodeMap} */\n\n  const unicode_map = {};\n  /** @type {string[]} */\n\n  let multi_char = [];\n\n  for (let folded in unicode_sets) {\n    let set = unicode_sets[folded];\n\n    if (set) {\n      unicode_map[folded] = setToPattern(set);\n    }\n\n    if (folded.length > 1) {\n      multi_char.push(escape_regex(folded));\n    }\n  }\n\n  multi_char.sort((a, b) => b.length - a.length);\n  const multi_char_patt = arrayToPattern(multi_char);\n  multi_char_reg = new RegExp('^' + multi_char_patt, 'u');\n  return unicode_map;\n};\n/**\n * Map each element of an array from it's folded value to all possible unicode matches\n * @param {string[]} strings\n * @param {number} min_replacement\n * @return {string}\n */\n\nconst mapSequence = (strings, min_replacement = 1) => {\n  let chars_replaced = 0;\n  strings = strings.map(str => {\n    if (unicode_map[str]) {\n      chars_replaced += str.length;\n    }\n\n    return unicode_map[str] || str;\n  });\n\n  if (chars_replaced >= min_replacement) {\n    return sequencePattern(strings);\n  }\n\n  return '';\n};\n/**\n * Convert a short string and split it into all possible patterns\n * Keep a pattern only if min_replacement is met\n *\n * 'abc'\n * \t\t=> [['abc'],['ab','c'],['a','bc'],['a','b','c']]\n *\t\t=> ['abc-pattern','ab-c-pattern'...]\n *\n *\n * @param {string} str\n * @param {number} min_replacement\n * @return {string}\n */\n\nconst substringsToPattern = (str, min_replacement = 1) => {\n  min_replacement = Math.max(min_replacement, str.length - 1);\n  return arrayToPattern(allSubstrings(str).map(sub_pat => {\n    return mapSequence(sub_pat, min_replacement);\n  }));\n};\n/**\n * Convert an array of sequences into a pattern\n * [{start:0,end:3,length:3,substr:'iii'}...] => (?:iii...)\n *\n * @param {Sequence[]} sequences\n * @param {boolean} all\n */\n\nconst sequencesToPattern = (sequences, all = true) => {\n  let min_replacement = sequences.length > 1 ? 1 : 0;\n  return arrayToPattern(sequences.map(sequence => {\n    let seq = [];\n    const len = all ? sequence.length() : sequence.length() - 1;\n\n    for (let j = 0; j < len; j++) {\n      seq.push(substringsToPattern(sequence.substrs[j] || '', min_replacement));\n    }\n\n    return sequencePattern(seq);\n  }));\n};\n/**\n * Return true if the sequence is already in the sequences\n * @param {Sequence} needle_seq\n * @param {Sequence[]} sequences\n */\n\n\nconst inSequences = (needle_seq, sequences) => {\n  for (const seq of sequences) {\n    if (seq.start != needle_seq.start || seq.end != needle_seq.end) {\n      continue;\n    }\n\n    if (seq.substrs.join('') !== needle_seq.substrs.join('')) {\n      continue;\n    }\n\n    let needle_parts = needle_seq.parts;\n    /**\n     * @param {TSequencePart} part\n     */\n\n    const filter = part => {\n      for (const needle_part of needle_parts) {\n        if (needle_part.start === part.start && needle_part.substr === part.substr) {\n          return false;\n        }\n\n        if (part.length == 1 || needle_part.length == 1) {\n          continue;\n        } // check for overlapping parts\n        // a = ['::=','==']\n        // b = ['::','===']\n        // a = ['r','sm']\n        // b = ['rs','m']\n\n\n        if (part.start < needle_part.start && part.end > needle_part.start) {\n          return true;\n        }\n\n        if (needle_part.start < part.start && needle_part.end > part.start) {\n          return true;\n        }\n      }\n\n      return false;\n    };\n\n    let filtered = seq.parts.filter(filter);\n\n    if (filtered.length > 0) {\n      continue;\n    }\n\n    return true;\n  }\n\n  return false;\n};\n\nclass Sequence {\n  constructor() {\n    /** @type {TSequencePart[]} */\n    this.parts = [];\n    /** @type {string[]} */\n\n    this.substrs = [];\n    this.start = 0;\n    this.end = 0;\n  }\n  /**\n   * @param {TSequencePart|undefined} part\n   */\n\n\n  add(part) {\n    if (part) {\n      this.parts.push(part);\n      this.substrs.push(part.substr);\n      this.start = Math.min(part.start, this.start);\n      this.end = Math.max(part.end, this.end);\n    }\n  }\n\n  last() {\n    return this.parts[this.parts.length - 1];\n  }\n\n  length() {\n    return this.parts.length;\n  }\n  /**\n   * @param {number} position\n   * @param {TSequencePart} last_piece\n   */\n\n\n  clone(position, last_piece) {\n    let clone = new Sequence();\n    let parts = JSON.parse(JSON.stringify(this.parts));\n    let last_part = parts.pop();\n\n    for (const part of parts) {\n      clone.add(part);\n    }\n\n    let last_substr = last_piece.substr.substring(0, position - last_part.start);\n    let clone_last_len = last_substr.length;\n    clone.add({\n      start: last_part.start,\n      end: last_part.start + clone_last_len,\n      length: clone_last_len,\n      substr: last_substr\n    });\n    return clone;\n  }\n\n}\n/**\n * Expand a regular expression pattern to include unicode variants\n * \teg /a/ becomes /a\u24D0\uFF41\u1E9A\u00E0\u00E1\u00E2\u1EA7\u1EA5\u1EAB\u1EA9\u00E3\u0101\u0103\u1EB1\u1EAF\u1EB5\u1EB3\u0227\u01E1\u00E4\u01DF\u1EA3\u00E5\u01FB\u01CE\u0201\u0203\u1EA1\u1EAD\u1EB7\u1E01\u0105\u2C65\u0250\u0251A\u24B6\uFF21\u00C0\u00C1\u00C2\u1EA6\u1EA4\u1EAA\u1EA8\u00C3\u0100\u0102\u1EB0\u1EAE\u1EB4\u1EB2\u0226\u01E0\u00C4\u01DE\u1EA2\u00C5\u01FA\u01CD\u0200\u0202\u1EA0\u1EAC\u1EB6\u1E00\u0104\u023A\u2C6F/\n *\n * Issue:\n *  \uFE8A\uFE8B [ '\uFE8A = \\\\u{fe8a}', '\uFE8B = \\\\u{fe8b}' ]\n *\tbecomes:\t\u064A\u0654\u064A\u0654 [ '\u064A = \\\\u{64a}', '\u0654 = \\\\u{654}', '\u064A = \\\\u{64a}', '\u0654 = \\\\u{654}' ]\n *\n *\t\u0130\u0132 = IIJ = \u2161J\n *\n * \t1/2/4\n *\n * @param {string} str\n * @return {string|undefined}\n */\n\n\nconst getPattern = str => {\n  initialize();\n  str = asciifold(str);\n  let pattern = '';\n  let sequences = [new Sequence()];\n\n  for (let i = 0; i < str.length; i++) {\n    let substr = str.substring(i);\n    let match = substr.match(multi_char_reg);\n    const char = str.substring(i, i + 1);\n    const match_str = match ? match[0] : null; // loop through sequences\n    // add either the char or multi_match\n\n    let overlapping = [];\n    let added_types = new Set();\n\n    for (const sequence of sequences) {\n      const last_piece = sequence.last();\n\n      if (!last_piece || last_piece.length == 1 || last_piece.end <= i) {\n        // if we have a multi match\n        if (match_str) {\n          const len = match_str.length;\n          sequence.add({\n            start: i,\n            end: i + len,\n            length: len,\n            substr: match_str\n          });\n          added_types.add('1');\n        } else {\n          sequence.add({\n            start: i,\n            end: i + 1,\n            length: 1,\n            substr: char\n          });\n          added_types.add('2');\n        }\n      } else if (match_str) {\n        let clone = sequence.clone(i, last_piece);\n        const len = match_str.length;\n        clone.add({\n          start: i,\n          end: i + len,\n          length: len,\n          substr: match_str\n        });\n        overlapping.push(clone);\n      } else {\n        // don't add char\n        // adding would create invalid patterns: 234 => [2,34,4]\n        added_types.add('3');\n      }\n    } // if we have overlapping\n\n\n    if (overlapping.length > 0) {\n      // ['ii','iii'] before ['i','i','iii']\n      overlapping = overlapping.sort((a, b) => {\n        return a.length() - b.length();\n      });\n\n      for (let clone of overlapping) {\n        // don't add if we already have an equivalent sequence\n        if (inSequences(clone, sequences)) {\n          continue;\n        }\n\n        sequences.push(clone);\n      }\n\n      continue;\n    } // if we haven't done anything unique\n    // clean up the patterns\n    // helps keep patterns smaller\n    // if str = 'r\u20A8\u33A7aarss', pattern will be 446 instead of 655\n\n\n    if (i > 0 && added_types.size == 1 && !added_types.has('3')) {\n      pattern += sequencesToPattern(sequences, false);\n      let new_seq = new Sequence();\n      const old_seq = sequences[0];\n\n      if (old_seq) {\n        new_seq.add(old_seq.last());\n      }\n\n      sequences = [new_seq];\n    }\n  }\n\n  pattern += sequencesToPattern(sequences, true);\n  return pattern;\n};\n\nexport { _asciifold, asciifold, code_points, generateMap, generateSets, generator, getPattern, initialize, mapSequence, normalize, substringsToPattern, unicode_map };\n//# sourceMappingURL=index.js.map\n", "/*! sifter.js | https://github.com/orchidjs/sifter.js | Apache License (v2) */\nimport { asciifold } from '@orchidjs/unicode-variants';\n\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\nconst getAttr = (obj, name) => {\n  if (!obj) return;\n  return obj[name];\n};\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\n\nconst getAttrNesting = (obj, name) => {\n  if (!obj) return;\n  var part,\n      names = name.split(\".\");\n\n  while ((part = names.shift()) && (obj = obj[part]));\n\n  return obj;\n};\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\n\nconst scoreValue = (value, token, weight) => {\n  var score, pos;\n  if (!value) return 0;\n  value = value + '';\n  if (token.regex == null) return 0;\n  pos = value.search(token.regex);\n  if (pos === -1) return 0;\n  score = token.string.length / value.length;\n  if (pos === 0) score += 0.5;\n  return score * weight;\n};\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\n\nconst propToArray = (obj, key) => {\n  var value = obj[key];\n  if (typeof value == 'function') return value;\n\n  if (value && !Array.isArray(value)) {\n    obj[key] = [value];\n  }\n};\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\n\nconst iterate = (object, callback) => {\n  if (Array.isArray(object)) {\n    object.forEach(callback);\n  } else {\n    for (var key in object) {\n      if (object.hasOwnProperty(key)) {\n        callback(object[key], key);\n      }\n    }\n  }\n};\nconst cmp = (a, b) => {\n  if (typeof a === 'number' && typeof b === 'number') {\n    return a > b ? 1 : a < b ? -1 : 0;\n  }\n\n  a = asciifold(a + '').toLowerCase();\n  b = asciifold(b + '').toLowerCase();\n  if (a > b) return 1;\n  if (b > a) return -1;\n  return 0;\n};\n\nexport { cmp, getAttr, getAttrNesting, iterate, propToArray, scoreValue };\n//# sourceMappingURL=utils.js.map\n", "/*! sifter.js | https://github.com/orchidjs/sifter.js | Apache License (v2) */\nimport { iterate, cmp, propToArray, getAttrNesting, getAttr, scoreValue } from './utils.js';\nexport { cmp, getAttr, getAttrNesting, iterate, propToArray, scoreValue } from './utils.js';\nimport { escape_regex, getPattern } from '@orchidjs/unicode-variants';\nexport { getPattern } from '@orchidjs/unicode-variants';\n\n/**\n * sifter.js\n * Copyright (c) 2013\u20132020 Brian Reavis & contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n * @author Brian Reavis <brian@thirdroute.com>\n */\n\nclass Sifter {\n  // []|{};\n\n  /**\n   * Textually searches arrays and hashes of objects\n   * by property (or multiple properties). Designed\n   * specifically for autocomplete.\n   *\n   */\n  constructor(items, settings) {\n    this.items = void 0;\n    this.settings = void 0;\n    this.items = items;\n    this.settings = settings || {\n      diacritics: true\n    };\n  }\n\n  /**\n   * Splits a search string into an array of individual\n   * regexps to be used to match results.\n   *\n   */\n  tokenize(query, respect_word_boundaries, weights) {\n    if (!query || !query.length) return [];\n    const tokens = [];\n    const words = query.split(/\\s+/);\n    var field_regex;\n\n    if (weights) {\n      field_regex = new RegExp('^(' + Object.keys(weights).map(escape_regex).join('|') + ')\\:(.*)$');\n    }\n\n    words.forEach(word => {\n      let field_match;\n      let field = null;\n      let regex = null; // look for \"field:query\" tokens\n\n      if (field_regex && (field_match = word.match(field_regex))) {\n        field = field_match[1];\n        word = field_match[2];\n      }\n\n      if (word.length > 0) {\n        if (this.settings.diacritics) {\n          regex = getPattern(word) || null;\n        } else {\n          regex = escape_regex(word);\n        }\n\n        if (regex && respect_word_boundaries) regex = \"\\\\b\" + regex;\n      }\n\n      tokens.push({\n        string: word,\n        regex: regex ? new RegExp(regex, 'iu') : null,\n        field: field\n      });\n    });\n    return tokens;\n  }\n\n  /**\n   * Returns a function to be used to score individual results.\n   *\n   * Good matches will have a higher score than poor matches.\n   * If an item is not a match, 0 will be returned by the function.\n   *\n   * @returns {T.ScoreFn}\n   */\n  getScoreFunction(query, options) {\n    var search = this.prepareSearch(query, options);\n    return this._getScoreFunction(search);\n  }\n  /**\n   * @returns {T.ScoreFn}\n   *\n   */\n\n\n  _getScoreFunction(search) {\n    const tokens = search.tokens,\n          token_count = tokens.length;\n\n    if (!token_count) {\n      return function () {\n        return 0;\n      };\n    }\n\n    const fields = search.options.fields,\n          weights = search.weights,\n          field_count = fields.length,\n          getAttrFn = search.getAttrFn;\n\n    if (!field_count) {\n      return function () {\n        return 1;\n      };\n    }\n    /**\n     * Calculates the score of an object\n     * against the search query.\n     *\n     */\n\n\n    const scoreObject = function () {\n      if (field_count === 1) {\n        return function (token, data) {\n          const field = fields[0].field;\n          return scoreValue(getAttrFn(data, field), token, weights[field] || 1);\n        };\n      }\n\n      return function (token, data) {\n        var sum = 0; // is the token specific to a field?\n\n        if (token.field) {\n          const value = getAttrFn(data, token.field);\n\n          if (!token.regex && value) {\n            sum += 1 / field_count;\n          } else {\n            sum += scoreValue(value, token, 1);\n          }\n        } else {\n          iterate(weights, (weight, field) => {\n            sum += scoreValue(getAttrFn(data, field), token, weight);\n          });\n        }\n\n        return sum / field_count;\n      };\n    }();\n\n    if (token_count === 1) {\n      return function (data) {\n        return scoreObject(tokens[0], data);\n      };\n    }\n\n    if (search.options.conjunction === 'and') {\n      return function (data) {\n        var score,\n            sum = 0;\n\n        for (let token of tokens) {\n          score = scoreObject(token, data);\n          if (score <= 0) return 0;\n          sum += score;\n        }\n\n        return sum / token_count;\n      };\n    } else {\n      return function (data) {\n        var sum = 0;\n        iterate(tokens, token => {\n          sum += scoreObject(token, data);\n        });\n        return sum / token_count;\n      };\n    }\n  }\n\n  /**\n   * Returns a function that can be used to compare two\n   * results, for sorting purposes. If no sorting should\n   * be performed, `null` will be returned.\n   *\n   * @return function(a,b)\n   */\n  getSortFunction(query, options) {\n    var search = this.prepareSearch(query, options);\n    return this._getSortFunction(search);\n  }\n\n  _getSortFunction(search) {\n    var implicit_score,\n        sort_flds = [];\n    const self = this,\n          options = search.options,\n          sort = !search.query && options.sort_empty ? options.sort_empty : options.sort;\n\n    if (typeof sort == 'function') {\n      return sort.bind(this);\n    }\n    /**\n     * Fetches the specified sort field value\n     * from a search result item.\n     *\n     */\n\n\n    const get_field = function get_field(name, result) {\n      if (name === '$score') return result.score;\n      return search.getAttrFn(self.items[result.id], name);\n    }; // parse options\n\n\n    if (sort) {\n      for (let s of sort) {\n        if (search.query || s.field !== '$score') {\n          sort_flds.push(s);\n        }\n      }\n    } // the \"$score\" field is implied to be the primary\n    // sort field, unless it's manually specified\n\n\n    if (search.query) {\n      implicit_score = true;\n\n      for (let fld of sort_flds) {\n        if (fld.field === '$score') {\n          implicit_score = false;\n          break;\n        }\n      }\n\n      if (implicit_score) {\n        sort_flds.unshift({\n          field: '$score',\n          direction: 'desc'\n        });\n      } // without a search.query, all items will have the same score\n\n    } else {\n      sort_flds = sort_flds.filter(fld => fld.field !== '$score');\n    } // build function\n\n\n    const sort_flds_count = sort_flds.length;\n\n    if (!sort_flds_count) {\n      return null;\n    }\n\n    return function (a, b) {\n      var result, field;\n\n      for (let sort_fld of sort_flds) {\n        field = sort_fld.field;\n        let multiplier = sort_fld.direction === 'desc' ? -1 : 1;\n        result = multiplier * cmp(get_field(field, a), get_field(field, b));\n        if (result) return result;\n      }\n\n      return 0;\n    };\n  }\n\n  /**\n   * Parses a search query and returns an object\n   * with tokens and fields ready to be populated\n   * with results.\n   *\n   */\n  prepareSearch(query, optsUser) {\n    const weights = {};\n    var options = Object.assign({}, optsUser);\n    propToArray(options, 'sort');\n    propToArray(options, 'sort_empty'); // convert fields to new format\n\n    if (options.fields) {\n      propToArray(options, 'fields');\n      const fields = [];\n      options.fields.forEach(field => {\n        if (typeof field == 'string') {\n          field = {\n            field: field,\n            weight: 1\n          };\n        }\n\n        fields.push(field);\n        weights[field.field] = 'weight' in field ? field.weight : 1;\n      });\n      options.fields = fields;\n    }\n\n    return {\n      options: options,\n      query: query.toLowerCase().trim(),\n      tokens: this.tokenize(query, options.respect_word_boundaries, weights),\n      total: 0,\n      items: [],\n      weights: weights,\n      getAttrFn: options.nesting ? getAttrNesting : getAttr\n    };\n  }\n\n  /**\n   * Searches through all items and returns a sorted array of matches.\n   *\n   */\n  search(query, options) {\n    var self = this,\n        score,\n        search;\n    search = this.prepareSearch(query, options);\n    options = search.options;\n    query = search.query; // generate result scoring function\n\n    const fn_score = options.score || self._getScoreFunction(search); // perform search and sort\n\n\n    if (query.length) {\n      iterate(self.items, (item, id) => {\n        score = fn_score(item);\n\n        if (options.filter === false || score > 0) {\n          search.items.push({\n            'score': score,\n            'id': id\n          });\n        }\n      });\n    } else {\n      iterate(self.items, (_, id) => {\n        search.items.push({\n          'score': 1,\n          'id': id\n        });\n      });\n    }\n\n    const fn_sort = self._getSortFunction(search);\n\n    if (fn_sort) search.items.sort(fn_sort); // apply limits\n\n    search.total = search.items.length;\n\n    if (typeof options.limit === 'number') {\n      search.items = search.items.slice(0, options.limit);\n    }\n\n    return search;\n  }\n\n}\n\nexport { Sifter };\n//# sourceMappingURL=sifter.js.map\n", "\nimport { asciifold } from '@orchidjs/unicode-variants';\nimport * as T from './types';\n\n\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\nexport const getAttr = (obj:{[key:string]:any}, name:string ) => {\n    if (!obj ) return;\n    return obj[name];\n};\n\n/**\n * A property getter resolving dot-notation\n * @param  {Object}  obj     The root object to fetch property on\n * @param  {String}  name    The optionally dotted property name to fetch\n * @return {Object}          The resolved property value\n */\nexport const getAttrNesting = (obj:{[key:string]:any}, name:string ) => {\n    if (!obj ) return;\n    var part, names = name.split(\".\");\n\twhile( (part = names.shift()) && (obj = obj[part]));\n    return obj;\n};\n\n/**\n * Calculates how close of a match the\n * given value is against a search token.\n *\n */\nexport const scoreValue = (value:string, token:T.Token, weight:number ):number => {\n\tvar score, pos;\n\n\tif (!value) return 0;\n\n\tvalue = value + '';\n\tif( token.regex == null ) return 0;\n\tpos = value.search(token.regex);\n\tif (pos === -1) return 0;\n\n\tscore = token.string.length / value.length;\n\tif (pos === 0) score += 0.5;\n\n\treturn score * weight;\n};\n\n\n/**\n * Cast object property to an array if it exists and has a value\n *\n */\nexport const propToArray = (obj:{[key:string]:any}, key:string) => {\n\tvar value = obj[key];\n\n\tif( typeof value == 'function' ) return value;\n\n\tif( value && !Array.isArray(value) ){\n\t\tobj[key] = [value];\n\t}\n}\n\n\n/**\n * Iterates over arrays and hashes.\n *\n * ```\n * iterate(this.items, function(item, id) {\n *    // invoked for each item\n * });\n * ```\n *\n */\nexport const iterate = (object:[]|{[key:string]:any}, callback:(value:any,key:any)=>any) => {\n\n\tif ( Array.isArray(object)) {\n\t\tobject.forEach(callback);\n\n\t}else{\n\n\t\tfor (var key in object) {\n\t\t\tif (object.hasOwnProperty(key)) {\n\t\t\t\tcallback(object[key], key);\n\t\t\t}\n\t\t}\n\t}\n};\n\n\n\nexport const cmp = (a:number|string, b:number|string) => {\n\tif (typeof a === 'number' && typeof b === 'number') {\n\t\treturn a > b ? 1 : (a < b ? -1 : 0);\n\t}\n\ta = asciifold(a + '').toLowerCase();\n\tb = asciifold(b + '').toLowerCase();\n\tif (a > b) return 1;\n\tif (b > a) return -1;\n\treturn 0;\n};\n", "\nimport { iterate } from '@orchidjs/sifter/lib/utils';\n\n/**\n * Return a dom element from either a dom query string, jQuery object, a dom element or html string\n * https://stackoverflow.com/questions/494143/creating-a-new-dom-element-from-an-html-string-using-built-in-dom-methods-or-pro/35385518#35385518\n *\n * param query should be {}\n */\nexport const getDom = ( query:any ):HTMLElement => {\n\n\tif( query.jquery ){\n\t\treturn query[0];\n\t}\n\n\tif( query instanceof HTMLElement ){\n\t\treturn query;\n\t}\n\n\tif( isHtmlString(query) ){\n\t\tvar tpl = document.createElement('template');\n\t\ttpl.innerHTML = query.trim(); // Never return a text node of whitespace as the result\n\t\treturn tpl.content.firstChild as HTMLElement;\n\t}\n\n\treturn document.querySelector(query);\n};\n\nexport const isHtmlString = (arg:any): boolean => {\n\tif( typeof arg === 'string' && arg.indexOf('<') > -1 ){\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport const escapeQuery = (query:string):string => {\n\treturn query.replace(/['\"\\\\]/g, '\\\\$&');\n}\n\n/**\n * Dispatch an event\n *\n */\nexport const triggerEvent = ( dom_el:HTMLElement, event_name:string ):void => {\n\tvar event = document.createEvent('HTMLEvents');\n\tevent.initEvent(event_name, true, false);\n\tdom_el.dispatchEvent(event)\n};\n\n/**\n * Apply CSS rules to a dom element\n *\n */\nexport const applyCSS = ( dom_el:HTMLElement, css:{ [key: string]: string|number }):void => {\n\tObject.assign(dom_el.style, css);\n}\n\n\n/**\n * Add css classes\n *\n */\nexport const addClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n\tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map( cls => {\n\t\t\tel.classList.add( cls );\n\t\t});\n\t});\n}\n\n/**\n * Remove css classes\n *\n */\n export const removeClasses = ( elmts:HTMLElement|HTMLElement[], ...classes:string[]|string[][] ) => {\n\n \tvar norm_classes \t= classesArray(classes);\n\telmts\t\t\t\t= castAsArray(elmts);\n\n\telmts.map( el => {\n\t\tnorm_classes.map(cls => {\n\t \t\tel.classList.remove( cls );\n\t\t});\n \t});\n }\n\n\n/**\n * Return arguments\n *\n */\nexport const classesArray = (args:string[]|string[][]):string[] => {\n\tvar classes:string[] = [];\n\titerate( args, (_classes) =>{\n\t\tif( typeof _classes === 'string' ){\n\t\t\t_classes = _classes.trim().split(/[\\11\\12\\14\\15\\40]/);\n\t\t}\n\t\tif( Array.isArray(_classes) ){\n\t\t\tclasses = classes.concat(_classes);\n\t\t}\n\t});\n\n\treturn classes.filter(Boolean);\n}\n\n\n/**\n * Create an array from arg if it's not already an array\n *\n */\nexport const castAsArray = (arg:any):Array<any> => {\n\tif( !Array.isArray(arg) ){\n \t\targ = [arg];\n \t}\n\treturn arg;\n}\n\n\n/**\n * Get the closest node to the evt.target matching the selector\n * Stops at wrapper\n *\n */\nexport const parentMatch = ( target:null|HTMLElement, selector:string, wrapper?:HTMLElement ):HTMLElement|void => {\n\n\tif( wrapper && !wrapper.contains(target) ){\n\t\treturn;\n\t}\n\n\twhile( target && target.matches ){\n\n\t\tif( target.matches(selector) ){\n\t\t\treturn target;\n\t\t}\n\n\t\ttarget = target.parentNode as HTMLElement;\n\t}\n}\n\n\n/**\n * Get the first or last item from an array\n *\n * > 0 - right (last)\n * <= 0 - left (first)\n *\n */\nexport const getTail = ( list:Array<any>|NodeList, direction:number=0 ):any => {\n\n\tif( direction > 0 ){\n\t\treturn list[list.length-1];\n\t}\n\n\treturn list[0];\n}\n\n/**\n * Return true if an object is empty\n *\n */\nexport const isEmptyObject = (obj:object):boolean => {\n\treturn (Object.keys(obj).length === 0);\n}\n\n\n/**\n * Get the index of an element amongst sibling nodes of the same type\n *\n */\nexport const nodeIndex = ( el:null|Element, amongst?:string ):number => {\n\tif (!el) return -1;\n\n\tamongst = amongst || el.nodeName;\n\n\tvar i = 0;\n\twhile( el = el.previousElementSibling ){\n\n\t\tif( el.matches(amongst) ){\n\t\t\ti++;\n\t\t}\n\t}\n\treturn i;\n}\n\n\n/**\n * Set attributes of an element\n *\n */\nexport const setAttr = (el:Element,attrs:{ [key: string]: null|string|number }) => {\n\titerate( attrs,(val,attr) => {\n\t\tif( val == null ){\n\t\t\tel.removeAttribute(attr as string);\n\t\t}else{\n\t\t\tel.setAttribute(attr as string, ''+val);\n\t\t}\n\t});\n}\n\n\n/**\n * Replace a node\n */\nexport const replaceNode = ( existing:Node, replacement:Node ) => {\n\tif( existing.parentNode ) existing.parentNode.replaceChild(replacement, existing);\n}\n", "/**\n * highlight v3 | MIT license | Johann Burkard <jb@eaio.com>\n * Highlights arbitrary terms in a node.\n *\n * - Modified by Marshal <beatgates@gmail.com> 2011-6-24 (added regex)\n * - Modified by Brian Reavis <brian@thirdroute.com> 2012-8-27 (cleanup)\n */\n\nimport {replaceNode} from '../vanilla';\n\n\nexport const highlight = (element:HTMLElement, regex:string|RegExp) => {\n\n\tif( regex === null ) return;\n\n\t// convet string to regex\n\tif( typeof regex === 'string' ){\n\n\t\tif( !regex.length ) return;\n\t\tregex = new RegExp(regex, 'i');\n\t}\n\n\n\t// Wrap matching part of text node with highlighting <span>, e.g.\n\t// Soccer  ->  <span class=\"highlight\">Soc</span>cer  for regex = /soc/i\n\tconst highlightText = ( node:Text ):number => {\n\n\t\tvar match = node.data.match(regex);\n\t\tif( match && node.data.length > 0 ){\n\t\t\tvar spannode\t\t= document.createElement('span');\n\t\t\tspannode.className\t= 'highlight';\n\t\t\tvar middlebit\t\t= node.splitText(match.index as number);\n\n\t\t\tmiddlebit.splitText(match[0]!.length);\n\t\t\tvar middleclone\t\t= middlebit.cloneNode(true);\n\n\t\t\tspannode.appendChild(middleclone);\n\t\t\treplaceNode(middlebit, spannode);\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn 0;\n\t};\n\n\t// Recurse element node, looking for child text nodes to highlight, unless element\n\t// is childless, <script>, <style>, or already highlighted: <span class=\"hightlight\">\n\tconst highlightChildren = ( node:Element ):void => {\n\t\tif( node.nodeType === 1 && node.childNodes && !/(script|style)/i.test(node.tagName) && ( node.className !== 'highlight' || node.tagName !== 'SPAN' ) ){\n\t\t\tArray.from(node.childNodes).forEach(element => {\n\t\t\t\thighlightRecursive(element);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tconst highlightRecursive = ( node:Node|Element ):number => {\n\n\t\tif( node.nodeType === 3 ){\n\t\t\treturn highlightText(node as Text);\n\t\t}\n\n\t\thighlightChildren(node as Element);\n\n\t\treturn 0;\n\t};\n\n\thighlightRecursive( element );\n};\n\n/**\n * removeHighlight fn copied from highlight v5 and\n * edited to remove with(), pass js strict mode, and use without jquery\n */\nexport const removeHighlight = (el:HTMLElement) => {\n\tvar elements = el.querySelectorAll(\"span.highlight\");\n\tArray.prototype.forEach.call(elements, function(el:HTMLElement){\n\t\tvar parent = el.parentNode as Node;\n\t\tparent.replaceChild(el.firstChild as Node, el);\n\t\tparent.normalize();\n\t});\n};\n", "export const KEY_A\t\t\t\t= 65;\nexport const KEY_RETURN\t\t\t= 13;\nexport const KEY_ESC\t\t\t= 27;\nexport const KEY_LEFT\t\t\t= 37;\nexport const KEY_UP\t\t\t\t= 38;\nexport const KEY_RIGHT\t\t\t= 39;\nexport const KEY_DOWN\t\t\t= 40;\nexport const KEY_BACKSPACE\t\t= 8;\nexport const KEY_DELETE\t\t\t= 46;\nexport const KEY_TAB\t\t\t= 9;\n\nexport const IS_MAC      \t\t= typeof navigator === 'undefined' ? false : /Mac/.test(navigator.userAgent);\nexport const KEY_SHORTCUT\t\t= IS_MAC ? 'metaKey' : 'ctrlKey'; // ctrl key or apple key for ma\n", "\nexport default {\n\toptions: [],\n\toptgroups: [],\n\n\tplugins: [],\n\tdelimiter: ',',\n\tsplitOn: null, // regexp or string for splitting up values from a paste command\n\tpersist: true,\n\tdiacritics: true,\n\tcreate: null,\n\tcreateOnBlur: false,\n\tcreateFilter: null,\n\thighlight: true,\n\topenOnFocus: true,\n\tshouldOpen: null,\n\tmaxOptions: 50,\n\tmaxItems: null,\n\thideSelected: null,\n\tduplicates: false,\n\taddPrecedence: false,\n\tselectOnTab: false,\n\tpreload: null,\n\tallowEmptyOption: false,\n\t//closeAfterSelect: false,\n\n\tloadThrottle: 300,\n\tloadingClass: 'loading',\n\n\tdataAttr: null, //'data-data',\n\toptgroupField: 'optgroup',\n\tvalueField: 'value',\n\tlabelField: 'text',\n\tdisabledField: 'disabled',\n\toptgroupLabelField: 'label',\n\toptgroupValueField: 'value',\n\tlockOptgroupOrder: false,\n\n\tsortField: '$order',\n\tsearchField: ['text'],\n\tsearchConjunction: 'and',\n\n\tmode: null,\n\twrapperClass: 'ts-wrapper',\n\tcontrolClass: 'ts-control',\n\tdropdownClass: 'ts-dropdown',\n\tdropdownContentClass: 'ts-dropdown-content',\n\titemClass: 'item',\n\toptionClass: 'option',\n\n\tdropdownParent: null,\n\tcontrolInput: '<input type=\"text\" autocomplete=\"off\" size=\"1\" />',\n\n\tcopyClassesToDropdown: false,\n\n\tplaceholder: null,\n\thidePlaceholder: null,\n\n\tshouldLoad: function(query:string):boolean{\n\t\treturn query.length > 0;\n\t},\n\n\t/*\n\tload                 : null, // function(query, callback) { ... }\n\tscore                : null, // function(search) { ... }\n\tonInitialize         : null, // function() { ... }\n\tonChange             : null, // function(value) { ... }\n\tonItemAdd            : null, // function(value, $item) { ... }\n\tonItemRemove         : null, // function(value) { ... }\n\tonClear              : null, // function() { ... }\n\tonOptionAdd          : null, // function(value, data) { ... }\n\tonOptionRemove       : null, // function(value) { ... }\n\tonOptionClear        : null, // function() { ... }\n\tonOptionGroupAdd     : null, // function(id, data) { ... }\n\tonOptionGroupRemove  : null, // function(id) { ... }\n\tonOptionGroupClear   : null, // function() { ... }\n\tonDropdownOpen       : null, // function(dropdown) { ... }\n\tonDropdownClose      : null, // function(dropdown) { ... }\n\tonType               : null, // function(str) { ... }\n\tonDelete             : null, // function(values) { ... }\n\t*/\n\n\trender: {\n\t\t/*\n\t\titem: null,\n\t\toptgroup: null,\n\t\toptgroup_header: null,\n\t\toption: null,\n\t\toption_create: null\n\t\t*/\n\t}\n};\n", "\nimport TomSelect from './tom-select';\nimport { TomLoadCallback } from './types/index';\n\n\n/**\n * Converts a scalar to its best string representation\n * for hash keys and HTML attribute values.\n *\n * Transformations:\n *   'str'     -> 'str'\n *   null      -> ''\n *   undefined -> ''\n *   true      -> '1'\n *   false     -> '0'\n *   0         -> '0'\n *   1         -> '1'\n *\n */\nexport const hash_key = (value:undefined|null|boolean|string|number):string|null => {\n\tif (typeof value === 'undefined' || value === null) return null;\n\treturn get_hash(value);\n};\n\nexport const get_hash = (value:boolean|string|number):string => {\n\tif (typeof value === 'boolean') return value ? '1' : '0';\n\treturn value + '';\n};\n\n/**\n * Escapes a string for use within HTML.\n *\n */\nexport const escape_html = (str:string):string => {\n\treturn (str + '')\n\t\t.replace(/&/g, '&amp;')\n\t\t.replace(/</g, '&lt;')\n\t\t.replace(/>/g, '&gt;')\n\t\t.replace(/\"/g, '&quot;');\n};\n\n\n/**\n * Debounce the user provided load function\n *\n */\nexport const loadDebounce = (fn:(value:string,callback:TomLoadCallback) => void,delay:number) => {\n\tvar timeout: null|ReturnType<typeof setTimeout>;\n\treturn function(this:TomSelect, value:string,callback:TomLoadCallback) {\n\t\tvar self = this;\n\n\t\tif( timeout ){\n\t\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\t\tclearTimeout(timeout);\n\t\t}\n\t\ttimeout = setTimeout(function() {\n\t\t\ttimeout = null;\n\t\t\tself.loadedSearches[value] = true;\n\t\t\tfn.call(self, value, callback);\n\n\t\t}, delay);\n\t};\n};\n\n\n/**\n * Debounce all fired events types listed in `types`\n * while executing the provided `fn`.\n *\n */\nexport const debounce_events = ( self:TomSelect, types:string[], fn:() => void ) => {\n\tvar type:string;\n\tvar trigger = self.trigger;\n\tvar event_args:{ [key: string]: any } = {};\n\n\t// override trigger method\n\tself.trigger = function(){\n\t\tvar type = arguments[0];\n\t\tif (types.indexOf(type) !== -1) {\n\t\t\tevent_args[type] = arguments;\n\t\t} else {\n\t\t\treturn trigger.apply(self, arguments);\n\t\t}\n\t};\n\n\t// invoke provided function\n\tfn.apply(self, []);\n\tself.trigger = trigger;\n\n\t// trigger queued events\n\tfor( type of types ){\n\t\tif( type in event_args ){\n\t\t\ttrigger.apply(self, event_args[type]);\n\t\t}\n\t}\n};\n\n\n/**\n * Determines the current selection within a text input control.\n * Returns an object containing:\n *   - start\n *   - length\n *\n */\nexport const getSelection = (input:HTMLInputElement):{ start: number; length: number } => {\n\treturn {\n\t\tstart\t: input.selectionStart || 0,\n\t\tlength\t: (input.selectionEnd||0) - (input.selectionStart||0),\n\t};\n};\n\n\n/**\n * Prevent default\n *\n */\nexport const preventDefault = (evt?:Event, stop:boolean=false):void => {\n\tif( evt ){\n\t\tevt.preventDefault();\n\t\tif( stop ){\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n}\n\n\n/**\n * Add event helper\n *\n */\nexport const addEvent = (target:EventTarget, type:string, callback:EventListenerOrEventListenerObject, options?:object):void => {\n\ttarget.addEventListener(type,callback,options);\n};\n\n\n/**\n * Return true if the requested key is down\n * Will return false if more than one control character is pressed ( when [ctrl+shift+a] != [ctrl+a] )\n * The current evt may not always set ( eg calling advanceSelection() )\n *\n */\nexport const isKeyDown = ( key_name:keyof (KeyboardEvent|MouseEvent), evt?:KeyboardEvent|MouseEvent ) => {\n\n\tif( !evt ){\n\t\treturn false;\n\t}\n\n\tif( !evt[key_name] ){\n\t\treturn false;\n\t}\n\n\tvar count = (evt.altKey?1:0) + (evt.ctrlKey?1:0) + (evt.shiftKey?1:0) + (evt.metaKey?1:0);\n\n\tif( count === 1 ){\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\n\n/**\n * Get the id of an element\n * If the id attribute is not set, set the attribute with the given id\n *\n */\nexport const getId = (el:Element,id:string) => {\n\tconst existing_id = el.getAttribute('id');\n\tif( existing_id ){\n\t\treturn existing_id;\n\t}\n\n\tel.setAttribute('id',id);\n\treturn id;\n};\n\n\n/**\n * Returns a string with backslashes added before characters that need to be escaped.\n */\nexport const addSlashes = (str:string):string => {\n\treturn str.replace(/[\\\\\"']/g, '\\\\$&');\n};\n\n/**\n *\n */\nexport const append = ( parent:Element|DocumentFragment, node: string|Node|null|undefined ):void =>{\n\tif( node ) parent.append(node);\n};\n", "import defaults from './defaults';\nimport { hash_key } from './utils';\nimport { TomOption, TomSettings, RecursivePartial } from './types/index';\nimport { iterate } from '@orchidjs/sifter/lib/utils';\nimport { TomInput } from './types/index';\n\n\nexport default function getSettings( input:TomInput, settings_user:RecursivePartial<TomSettings>):TomSettings{\n\tvar settings:TomSettings\t= Object.assign({}, defaults, settings_user);\n\n\tvar attr_data\t\t\t\t= settings.dataAttr;\n\tvar field_label\t\t\t\t= settings.labelField;\n\tvar field_value\t\t\t\t= settings.valueField;\n\tvar field_disabled\t\t\t= settings.disabledField;\n\tvar field_optgroup\t\t\t= settings.optgroupField;\n\tvar field_optgroup_label\t= settings.optgroupLabelField;\n\tvar field_optgroup_value\t= settings.optgroupValueField;\n\n\tvar tag_name\t\t\t\t= input.tagName.toLowerCase();\n\tvar placeholder\t\t\t\t= input.getAttribute('placeholder') || input.getAttribute('data-placeholder');\n\n\tif (!placeholder && !settings.allowEmptyOption) {\n\t\tlet option\t\t= input.querySelector('option[value=\"\"]');\n\t\tif( option ){\n\t\t\tplaceholder = option.textContent;\n\t\t}\n\n\t}\n\n\tvar settings_element:{\n\t\tplaceholder\t: null|string,\n\t\toptions\t\t: TomOption[],\n\t\toptgroups\t: TomOption[],\n\t\titems\t\t: string[],\n\t\tmaxItems\t: null|number,\n\t} = {\n\t\tplaceholder\t: placeholder,\n\t\toptions\t\t: [],\n\t\toptgroups\t: [],\n\t\titems\t\t: [],\n\t\tmaxItems\t: null,\n\t};\n\n\n\t/**\n\t * Initialize from a <select> element.\n\t *\n\t */\n\tvar init_select = () => {\n\t\tvar tagName;\n\t\tvar options = settings_element.options;\n\t\tvar optionsMap:{[key:string]:any} = {};\n\t\tvar group_count = 1;\n\n\t\tvar readData = (el:HTMLElement):TomOption => {\n\n\t\t\tvar data\t= Object.assign({},el.dataset); // get plain object from DOMStringMap\n\t\t\tvar json\t= attr_data && data[attr_data];\n\n\t\t\tif( typeof json === 'string' && json.length ){\n\t\t\t\tdata = Object.assign(data,JSON.parse(json));\n\t\t\t}\n\n\t\t\treturn data;\n\t\t};\n\n\t\tvar addOption = (option:HTMLOptionElement, group?:string) => {\n\n\t\t\tvar value = hash_key(option.value);\n\t\t\tif ( value == null ) return;\n\t\t\tif ( !value && !settings.allowEmptyOption) return;\n\n\t\t\t// if the option already exists, it's probably been\n\t\t\t// duplicated in another optgroup. in this case, push\n\t\t\t// the current group to the \"optgroup\" property on the\n\t\t\t// existing option so that it's rendered in both places.\n\t\t\tif (optionsMap.hasOwnProperty(value)) {\n\t\t\t\tif (group) {\n\t\t\t\t\tvar arr = optionsMap[value][field_optgroup];\n\t\t\t\t\tif (!arr) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = group;\n\t\t\t\t\t} else if (!Array.isArray(arr)) {\n\t\t\t\t\t\toptionsMap[value][field_optgroup] = [arr, group];\n\t\t\t\t\t} else {\n\t\t\t\t\t\tarr.push(group);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t}else{\n\n\t\t\t\tvar option_data             = readData(option);\n\t\t\t\toption_data[field_label]    = option_data[field_label] || option.textContent;\n\t\t\t\toption_data[field_value]    = option_data[field_value] || value;\n\t\t\t\toption_data[field_disabled] = option_data[field_disabled] || option.disabled;\n\t\t\t\toption_data[field_optgroup] = option_data[field_optgroup] || group;\n\t\t\t\toption_data.$option\t\t\t= option;\n\n\t\t\t\toptionsMap[value] = option_data;\n\t\t\t\toptions.push(option_data);\n\t\t\t}\n\n\t\t\tif( option.selected ){\n\t\t\t\tsettings_element.items.push(value);\n\t\t\t}\n\t\t};\n\n\t\tvar addGroup = ( optgroup:HTMLOptGroupElement ) => {\n\t\t\tvar id:string, optgroup_data\n\n\t\t\toptgroup_data\t\t\t\t\t\t\t= readData(optgroup);\n\t\t\toptgroup_data[field_optgroup_label]\t\t= optgroup_data[field_optgroup_label] || optgroup.getAttribute('label') || '';\n\t\t\toptgroup_data[field_optgroup_value]\t\t= optgroup_data[field_optgroup_value] || group_count++;\n\t\t\toptgroup_data[field_disabled]\t\t\t= optgroup_data[field_disabled] || optgroup.disabled;\n\t\t\tsettings_element.optgroups.push(optgroup_data);\n\n\t\t\tid = optgroup_data[field_optgroup_value];\n\n\t\t\titerate(optgroup.children, (option)=>{\n\t\t\t\taddOption(option as HTMLOptionElement, id);\n\t\t\t});\n\n\t\t};\n\n\t\tsettings_element.maxItems = input.hasAttribute('multiple') ? null : 1;\n\n\t\titerate(input.children,(child)=>{\n\t\t\ttagName = child.tagName.toLowerCase();\n\t\t\tif (tagName === 'optgroup') {\n\t\t\t\taddGroup(child as HTMLOptGroupElement);\n\t\t\t} else if (tagName === 'option') {\n\t\t\t\taddOption(child as HTMLOptionElement);\n\t\t\t}\n\t\t});\n\n\t};\n\n\n\t/**\n\t * Initialize from a <input type=\"text\"> element.\n\t *\n\t */\n\tvar init_textbox = () => {\n\t\tconst data_raw = input.getAttribute(attr_data);\n\n\t\tif (!data_raw) {\n\t\t\tvar value = input.value.trim() || '';\n\t\t\tif (!settings.allowEmptyOption && !value.length) return;\n\t\t\tconst values = value.split(settings.delimiter);\n\n\t\t\titerate( values, (value) => {\n\t\t\t\tconst option:TomOption = {};\n\t\t\t\toption[field_label] = value;\n\t\t\t\toption[field_value] = value;\n\t\t\t\tsettings_element.options.push(option);\n\t\t\t});\n\t\t\tsettings_element.items = values;\n\t\t} else {\n\t\t\tsettings_element.options = JSON.parse(data_raw);\n\t\t\titerate( settings_element.options, (opt) => {\n\t\t\t\tsettings_element.items.push(opt[field_value]);\n\t\t\t});\n\t\t}\n\t};\n\n\n\tif (tag_name === 'select') {\n\t\tinit_select();\n\t} else {\n\t\tinit_textbox();\n\t}\n\n\treturn Object.assign( {}, defaults, settings_element, settings_user) as TomSettings;\n};\n", "\nimport MicroEvent from './contrib/microevent';\nimport MicroPlugin from './contrib/microplugin';\nimport { Sifter, iterate } from '@orchidjs/sifter';\nimport { escape_regex } from '@orchidjs/unicode-variants';\nimport { TomInput, TomArgObject, TomOption, TomOptions, TomCreateFilter, TomCreateCallback, TomItem, TomSettings, TomTemplateNames, TomClearFilter, RecursivePartial } from './types/index';\nimport {highlight, removeHighlight} from './contrib/highlight';\nimport * as constants from './constants';\nimport getSettings from './getSettings';\nimport {\n\thash_key,\n\tget_hash,\n\tescape_html,\n\tdebounce_events,\n\tgetSelection,\n\tpreventDefault,\n\taddEvent,\n\tloadDebounce,\n\tisKeyDown,\n\tgetId,\n\taddSlashes,\n\tappend\n} from './utils';\n\nimport {\n\tgetDom,\n\tisHtmlString,\n\tescapeQuery,\n\ttriggerEvent,\n\tapplyCSS,\n\taddClasses,\n\tremoveClasses,\n\tparentMatch,\n\tgetTail,\n\tisEmptyObject,\n\tnodeIndex,\n\tsetAttr,\n\treplaceNode\n} from './vanilla';\n\nvar instance_i = 0;\n\nexport default class TomSelect extends MicroPlugin(MicroEvent){\n\n\tpublic control_input\t\t\t: HTMLInputElement;\n\tpublic wrapper\t\t\t\t\t: HTMLElement;\n\tpublic dropdown\t\t\t\t\t: HTMLElement;\n\tpublic control\t\t\t\t\t: HTMLElement;\n\tpublic dropdown_content\t\t\t: HTMLElement;\n\tpublic focus_node\t\t\t\t: HTMLElement;\n\n\tpublic order\t\t\t\t\t: number = 0;\n\tpublic settings\t\t\t\t\t: TomSettings;\n\tpublic input\t\t\t\t\t: TomInput;\n\tpublic tabIndex\t\t\t\t\t: number;\n\tpublic is_select_tag\t\t\t: boolean;\n\tpublic rtl\t\t\t\t\t\t: boolean;\n\tprivate inputId\t\t\t\t\t: string;\n\n\tprivate _destroy\t\t\t\t!: () => void;\n\tpublic sifter\t\t\t\t\t: Sifter;\n\n\n\tpublic isOpen\t\t\t\t\t: boolean = false;\n\tpublic isDisabled\t\t\t\t: boolean = false;\n\tpublic isRequired\t\t\t\t: boolean;\n\tpublic isInvalid\t\t\t\t: boolean = false; // @deprecated 1.8\n\tpublic isValid\t\t\t\t\t: boolean = true;\n\tpublic isLocked\t\t\t\t\t: boolean = false;\n\tpublic isFocused\t\t\t\t: boolean = false;\n\tpublic isInputHidden\t\t\t: boolean = false;\n\tpublic isSetup\t\t\t\t\t: boolean = false;\n\tpublic ignoreFocus\t\t\t\t: boolean = false;\n\tpublic ignoreHover\t\t\t\t: boolean = false;\n\tpublic hasOptions\t\t\t\t: boolean = false;\n\tpublic currentResults\t\t\t?: ReturnType<Sifter['search']>;\n\tpublic lastValue\t\t\t\t: string = '';\n\tpublic caretPos\t\t\t\t\t: number = 0;\n\tpublic loading\t\t\t\t\t: number = 0;\n\tpublic loadedSearches\t\t\t: { [key: string]: boolean } = {};\n\n\tpublic activeOption\t\t\t\t: null|HTMLElement = null;\n\tpublic activeItems\t\t\t\t: TomItem[] = [];\n\n\tpublic optgroups\t\t\t\t: TomOptions = {};\n\tpublic options\t\t\t\t\t: TomOptions = {};\n\tpublic userOptions\t\t\t\t: {[key:string]:boolean} = {};\n\tpublic items\t\t\t\t\t: string[] = [];\n\n\n\n\tconstructor( input_arg: string|TomInput, user_settings:RecursivePartial<TomSettings> ){\n\t\tsuper();\n\n\t\tinstance_i++;\n\n\t\tvar dir;\n\t\tvar input\t\t\t\t= getDom( input_arg ) as TomInput;\n\n\t\tif( input.tomselect ){\n\t\t\tthrow new Error('Tom Select already initialized on this element');\n\t\t}\n\n\n\t\tinput.tomselect\t\t\t= this;\n\n\n\t\t// detect rtl environment\n\t\tvar computedStyle\t\t= window.getComputedStyle && window.getComputedStyle(input, null);\n\t\tdir\t\t\t\t\t\t= computedStyle.getPropertyValue('direction');\n\n\t\t// setup default state\n\t\tconst settings\t\t\t= getSettings( input, user_settings );\n\t\tthis.settings\t\t\t= settings;\n\t\tthis.input\t\t\t\t= input;\n\t\tthis.tabIndex\t\t\t= input.tabIndex || 0;\n\t\tthis.is_select_tag\t\t= input.tagName.toLowerCase() === 'select';\n\t\tthis.rtl\t\t\t\t= /rtl/i.test(dir);\n\t\tthis.inputId\t\t\t= getId(input, 'tomselect-'+instance_i);\n\t\tthis.isRequired\t\t\t= input.required;\n\n\n\t\t// search system\n\t\tthis.sifter = new Sifter(this.options, {diacritics: settings.diacritics});\n\n\t\t// option-dependent defaults\n\t\tsettings.mode = settings.mode || (settings.maxItems === 1 ? 'single' : 'multi');\n\t\tif (typeof settings.hideSelected !== 'boolean') {\n\t\t\tsettings.hideSelected = settings.mode === 'multi';\n\t\t}\n\n\t\tif( typeof settings.hidePlaceholder !== 'boolean' ){\n\t\t\tsettings.hidePlaceholder = settings.mode !== 'multi';\n\t\t}\n\n\t\t// set up createFilter callback\n\t\tvar filter = settings.createFilter;\n\t\tif( typeof filter !== 'function' ){\n\n\t\t\tif( typeof filter === 'string' ){\n\t\t\t\tfilter = new RegExp(filter);\n\t\t\t}\n\n\t\t\tif( filter instanceof RegExp ){\n\t\t\t\tsettings.createFilter = (input) => (filter as RegExp).test(input);\n\t\t\t}else{\n\t\t\t\tsettings.createFilter = (value) => {\n\t\t\t\t\treturn this.settings.duplicates || !this.options[value];\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\n\t\tthis.initializePlugins(settings.plugins);\n\t\tthis.setupCallbacks();\n\t\tthis.setupTemplates();\n\n\n\t\t// Create all elements\n\t\tconst wrapper\t\t\t= getDom('<div>');\n\t\tconst control\t\t\t= getDom('<div>');\n\t\tconst dropdown\t\t\t= this._render('dropdown');\n\t\tconst dropdown_content\t= getDom(`<div role=\"listbox\" tabindex=\"-1\">`);\n\n\t\tconst classes\t\t\t= this.input.getAttribute('class') || '';\n\t\tconst inputMode\t\t\t= settings.mode;\n\n\t\tvar control_input: HTMLInputElement;\n\n\n\t\taddClasses( wrapper, settings.wrapperClass, classes, inputMode);\n\n\n\t\taddClasses(control,settings.controlClass);\n\t\tappend( wrapper, control );\n\n\n\t\taddClasses(dropdown, settings.dropdownClass, inputMode);\n\t\tif( settings.copyClassesToDropdown ){\n\t\t\taddClasses( dropdown, classes);\n\t\t}\n\n\n\t\taddClasses(dropdown_content, settings.dropdownContentClass);\n\t\tappend( dropdown, dropdown_content );\n\n\t\tgetDom( settings.dropdownParent || wrapper ).appendChild( dropdown );\n\n\n\t\t// default controlInput\n\t\tif( isHtmlString(settings.controlInput) ){\n\t\t\tcontrol_input\t\t= getDom(settings.controlInput ) as HTMLInputElement;\n\n\t\t\t// set attributes\n\t\t\tvar attrs = ['autocorrect','autocapitalize','autocomplete'];\n\t\t\titerate(attrs,(attr:string) => {\n\t\t\t\tif( input.getAttribute(attr) ){\n\t\t\t\t\tsetAttr(control_input,{[attr]:input.getAttribute(attr)});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tcontrol_input.tabIndex = -1;\n\t\t\tcontrol.appendChild( control_input );\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t// dom element\n\t\t}else if( settings.controlInput ){\n\t\t\tcontrol_input\t\t= getDom( settings.controlInput ) as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control_input;\n\n\t\t}else{\n\t\t\tcontrol_input\t\t= getDom('<input/>') as HTMLInputElement;\n\t\t\tthis.focus_node\t\t= control;\n\t\t}\n\n\t\tthis.wrapper\t\t\t= wrapper;\n\t\tthis.dropdown\t\t\t= dropdown;\n\t\tthis.dropdown_content\t= dropdown_content;\n\t\tthis.control \t\t\t= control;\n\t\tthis.control_input\t\t= control_input;\n\n\t\tthis.setup();\n\t}\n\n\t/**\n\t * set up event bindings.\n\t *\n\t */\n\tsetup(){\n\n\t\tconst self = this;\n\t\tconst settings\t\t\t\t= self.settings;\n\t\tconst control_input\t\t\t= self.control_input;\n\t\tconst dropdown\t\t\t\t= self.dropdown;\n\t\tconst dropdown_content\t\t= self.dropdown_content;\n\t\tconst wrapper\t\t\t\t= self.wrapper;\n\t\tconst control\t\t\t\t= self.control;\n\t\tconst input\t\t\t\t\t= self.input;\n\t\tconst focus_node\t\t\t= self.focus_node;\n\t\tconst passive_event\t\t\t= { passive: true };\n\t\tconst listboxId\t\t\t\t= self.inputId +'-ts-dropdown';\n\n\n\t\tsetAttr(dropdown_content,{\n\t\t\tid: listboxId\n\t\t});\n\n\t\tsetAttr(focus_node,{\n\t\t\trole:'combobox',\n\t\t\t'aria-haspopup':'listbox',\n\t\t\t'aria-expanded':'false',\n\t\t\t'aria-controls':listboxId\n\t\t});\n\n\t\tconst control_id\t= getId(focus_node,self.inputId + '-ts-control');\n\t\tconst query\t\t\t= \"label[for='\"+escapeQuery(self.inputId)+\"']\";\n\t\tconst label\t\t\t= document.querySelector(query);\n\t\tconst label_click\t= self.focus.bind(self);\n\t\tif( label ){\n\t\t\taddEvent(label,'click', label_click );\n\t\t\tsetAttr(label,{for:control_id});\n\t\t\tconst label_id = getId(label,self.inputId+'-ts-label');\n\t\t\tsetAttr(focus_node,{'aria-labelledby':label_id});\n\t\t\tsetAttr(dropdown_content,{'aria-labelledby':label_id});\n\t\t}\n\n\t\twrapper.style.width = input.style.width;\n\n\t\tif (self.plugins.names.length) {\n\t\t\tconst classes_plugins = 'plugin-' + self.plugins.names.join(' plugin-');\n\t\t\taddClasses( [wrapper,dropdown], classes_plugins);\n\t\t}\n\n\t\tif ((settings.maxItems === null || settings.maxItems > 1) && self.is_select_tag ){\n\t\t\tsetAttr(input,{multiple:'multiple'});\n\t\t}\n\n\t\tif (settings.placeholder) {\n\t\t\tsetAttr(control_input,{placeholder:settings.placeholder});\n\t\t}\n\n\t\t// if splitOn was not passed in, construct it from the delimiter to allow pasting universally\n\t\tif (!settings.splitOn && settings.delimiter) {\n\t\t\tsettings.splitOn = new RegExp('\\\\s*' + escape_regex(settings.delimiter) + '+\\\\s*');\n\t\t}\n\n\t\t// debounce user defined load() if loadThrottle > 0\n\t\t// after initializePlugins() so plugins can create/modify user defined loaders\n\t\tif( settings.load && settings.loadThrottle ){\n\t\t\tsettings.load = loadDebounce(settings.load,settings.loadThrottle)\n\t\t}\n\n\t\tself.control_input.type\t= input.type;\n\n\t\taddEvent(dropdown,'mousemove', () => {\n\t\t\tself.ignoreHover = false;\n\t\t});\n\n\t\taddEvent(dropdown,'mouseenter', (e) => {\n\n\t\t\tvar target_match = parentMatch(e.target as HTMLElement, '[data-selectable]', dropdown);\n\t\t\tif( target_match ) self.onOptionHover( e as MouseEvent, target_match );\n\n\t\t}, {capture:true});\n\n\t\t// clicking on an option should select it\n\t\taddEvent(dropdown,'click',(evt) => {\n\t\t\tconst option = parentMatch(evt.target as HTMLElement, '[data-selectable]');\n\t\t\tif( option ){\n\t\t\t\tself.onOptionSelect( evt as MouseEvent, option );\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\t\t});\n\n\t\taddEvent(control,'click', (evt) => {\n\n\t\t\tvar target_match = parentMatch( evt.target as HTMLElement, '[data-ts-item]', control);\n\t\t\tif( target_match && self.onItemSelect(evt as MouseEvent, target_match as TomItem) ){\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// retain focus (see control_input mousedown)\n\t\t\tif( control_input.value != '' ){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tself.onClick();\n\t\t\tpreventDefault(evt,true);\n\t\t});\n\n\n\t\t// keydown on focus_node for arrow_down/arrow_up\n\t\taddEvent(focus_node,'keydown',\t\t(e) => self.onKeyDown(e as KeyboardEvent) );\n\n\t\t// keypress and input/keyup\n\t\taddEvent(control_input,'keypress',\t(e) => self.onKeyPress(e as KeyboardEvent) );\n\t\taddEvent(control_input,'input',\t\t(e) => self.onInput(e as KeyboardEvent) );\n\t\taddEvent(focus_node,'blur', \t\t(e) => self.onBlur(e as FocusEvent) );\n\t\taddEvent(focus_node,'focus',\t\t(e) => self.onFocus(e as MouseEvent) );\n\t\taddEvent(control_input,'paste',\t\t(e) => self.onPaste(e as MouseEvent) );\n\n\n\t\tconst doc_mousedown = (evt:Event) => {\n\n\t\t\t// blur if target is outside of this instance\n\t\t\t// dropdown is not always inside wrapper\n\t\t\tconst target = evt.composedPath()[0];\n\t\t\tif( !wrapper.contains(target as HTMLElement) && !dropdown.contains(target as HTMLElement) ){\n\t\t\t\tif (self.isFocused) {\n\t\t\t\t\tself.blur();\n\t\t\t\t}\n\t\t\t\tself.inputState();\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\t// retain focus by preventing native handling. if the\n\t\t\t// event target is the input it should not be modified.\n\t\t\t// otherwise, text selection within the input won't work.\n\t\t\t// Fixes bug #212 which is no covered by tests\n\t\t\tif( target == control_input && self.isOpen ){\n\t\t\t\tevt.stopPropagation();\n\n\t\t\t// clicking anywhere in the control should not blur the control_input (which would close the dropdown)\n\t\t\t}else{\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t}\n\n\t\t};\n\n\t\tconst win_scroll = () => {\n\t\t\tif (self.isOpen) {\n\t\t\t\tself.positionDropdown();\n\t\t\t}\n\t\t};\n\n\n\t\taddEvent(document,'mousedown', doc_mousedown);\n\t\taddEvent(window,'scroll', win_scroll, passive_event);\n\t\taddEvent(window,'resize', win_scroll, passive_event);\n\n\t\tthis._destroy = () => {\n\t\t\tdocument.removeEventListener('mousedown',doc_mousedown);\n\t\t\twindow.removeEventListener('scroll',win_scroll);\n\t\t\twindow.removeEventListener('resize',win_scroll);\n\t\t\tif( label ) label.removeEventListener('click',label_click);\n\t\t};\n\n\t\t// store original html and tab index so that they can be\n\t\t// restored when the destroy() method is called.\n\t\tthis.revertSettings = {\n\t\t\tinnerHTML : input.innerHTML,\n\t\t\ttabIndex : input.tabIndex\n\t\t};\n\n\n\t\tinput.tabIndex = -1;\n\t\tinput.insertAdjacentElement('afterend', self.wrapper);\n\n\t\tself.sync(false);\n\t\tsettings.items = [];\n\t\tdelete settings.optgroups;\n\t\tdelete settings.options;\n\n\t\taddEvent(input,'invalid', () => {\n\t\t\tif( self.isValid ){\n\t\t\t\tself.isValid = false;\n\t\t\t\tself.isInvalid = true;\n\t\t\t\tself.refreshState();\n\t\t\t}\n\t\t});\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshItems();\n\t\tself.close(false);\n\t\tself.inputState();\n\t\tself.isSetup = true;\n\n\t\tif( input.disabled ){\n\t\t\tself.disable();\n\t\t}else{\n\t\t\tself.enable(); //sets tabIndex\n\t\t}\n\n\t\tself.on('change', this.onChange);\n\n\t\taddClasses(input,'tomselected','ts-hidden-accessible');\n\t\tself.trigger('initialize');\n\n\t\t// preload options\n\t\tif (settings.preload === true) {\n\t\t\tself.preload();\n\t\t}\n\n\t}\n\n\n\t/**\n\t * Register options and optgroups\n\t *\n\t */\n\tsetupOptions(options:TomOption[] = [], optgroups:TomOption[] = []){\n\n\t\t// build options table\n\t\tthis.addOptions(options);\n\n\n\t\t// build optgroup table\n\t\titerate( optgroups, (optgroup:TomOption) => {\n\t\t\tthis.registerOptionGroup(optgroup);\n\t\t});\n\t}\n\n\t/**\n\t * Sets up default rendering functions.\n\t */\n\tsetupTemplates() {\n\t\tvar self = this;\n\t\tvar field_label = self.settings.labelField;\n\t\tvar field_optgroup = self.settings.optgroupLabelField;\n\n\t\tvar templates = {\n\t\t\t'optgroup': (data:TomOption) => {\n\t\t\t\tlet optgroup = document.createElement('div');\n\t\t\t\toptgroup.className = 'optgroup';\n\t\t\t\toptgroup.appendChild(data.options);\n\t\t\t\treturn optgroup;\n\n\t\t\t},\n\t\t\t'optgroup_header': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"optgroup-header\">' + escape(data[field_optgroup]) + '</div>';\n\t\t\t},\n\t\t\t'option': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'item': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div>' + escape(data[field_label]) + '</div>';\n\t\t\t},\n\t\t\t'option_create': (data:TomOption, escape:typeof escape_html) => {\n\t\t\t\treturn '<div class=\"create\">Add <strong>' + escape(data.input) + '</strong>&hellip;</div>';\n\t\t\t},\n\t\t\t'no_results':() => {\n\t\t\t\treturn '<div class=\"no-results\">No results found</div>';\n\t\t\t},\n\t\t\t'loading':() => {\n\t\t\t\treturn '<div class=\"spinner\"></div>';\n\t\t\t},\n\t\t\t'not_loading':() => {},\n\t\t\t'dropdown':() => {\n\t\t\t\treturn '<div></div>';\n\t\t\t}\n\t\t};\n\n\n\t\tself.settings.render = Object.assign({}, templates, self.settings.render);\n\t}\n\n\t/**\n\t * Maps fired events to callbacks provided\n\t * in the settings used when creating the control.\n\t */\n\tsetupCallbacks() {\n\t\tvar key, fn;\n\t\tvar callbacks:{[key:string]:string} = {\n\t\t\t'initialize'      : 'onInitialize',\n\t\t\t'change'          : 'onChange',\n\t\t\t'item_add'        : 'onItemAdd',\n\t\t\t'item_remove'     : 'onItemRemove',\n\t\t\t'item_select'     : 'onItemSelect',\n\t\t\t'clear'           : 'onClear',\n\t\t\t'option_add'      : 'onOptionAdd',\n\t\t\t'option_remove'   : 'onOptionRemove',\n\t\t\t'option_clear'    : 'onOptionClear',\n\t\t\t'optgroup_add'    : 'onOptionGroupAdd',\n\t\t\t'optgroup_remove' : 'onOptionGroupRemove',\n\t\t\t'optgroup_clear'  : 'onOptionGroupClear',\n\t\t\t'dropdown_open'   : 'onDropdownOpen',\n\t\t\t'dropdown_close'  : 'onDropdownClose',\n\t\t\t'type'            : 'onType',\n\t\t\t'load'            : 'onLoad',\n\t\t\t'focus'           : 'onFocus',\n\t\t\t'blur'            : 'onBlur'\n\t\t};\n\n\t\tfor (key in callbacks) {\n\n\t\t\tfn = this.settings[callbacks[key] as (keyof TomSettings)];\n\t\t\tif (fn) this.on(key, fn);\n\n\t\t}\n\t}\n\n\t/**\n\t * Sync the Tom Select instance with the original input or select\n\t *\n\t */\n\tsync(get_settings:boolean=true):void{\n\t\tconst self\t\t= this;\n\t\tconst settings\t= get_settings ? getSettings( self.input, {delimiter:self.settings.delimiter} as RecursivePartial<TomSettings> ) : self.settings;\n\n\t\tself.setupOptions(settings.options,settings.optgroups);\n\n\t\tself.setValue(settings.items||[],true); // silent prevents recursion\n\n\t\tself.lastQuery = null; // so updated options will be displayed in dropdown\n\t}\n\n\t/**\n\t * Triggered when the main control element\n\t * has a click event.\n\t *\n\t */\n\tonClick():void {\n\t\tvar self = this;\n\n\t\tif( self.activeItems.length > 0 ){\n\t\t\tself.clearActiveItems();\n\t\t\tself.focus();\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.isFocused && self.isOpen ){\n\t\t\tself.blur();\n\t\t} else {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * @deprecated v1.7\n\t *\n\t */\n\tonMouseDown():void {}\n\n\t/**\n\t * Triggered when the value of the control has been changed.\n\t * This should propagate the event to the original DOM\n\t * input / select element.\n\t */\n\tonChange() {\n\t\ttriggerEvent(this.input, 'input');\n\t\ttriggerEvent(this.input, 'change');\n\t}\n\n\t/**\n\t * Triggered on <input> paste.\n\t *\n\t */\n\tonPaste(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isInputHidden || self.isLocked ){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\t// If a regex or string is included, this will split the pasted\n\t\t// input and create Items for each separate value\n\t\tif( !self.settings.splitOn ){\n\t\t\treturn;\n\t\t}\n\n\t\t// Wait for pasted text to be recognized in value\n\t\tsetTimeout(() => {\n\t\t\tvar pastedText = self.inputValue();\n\t\t\tif( !pastedText.match(self.settings.splitOn)){\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tvar splitInput = pastedText.trim().split(self.settings.splitOn);\n\t\t\titerate( splitInput, (piece:string) => {\n\n\t\t\t\tconst hash = hash_key(piece);\n\t\t\t\tif( hash ){\n\t\t\t\t\tif( this.options[piece] ){\n\t\t\t\t\t\tself.addItem(piece);\n\t\t\t\t\t}else{\n\t\t\t\t\t\tself.createItem(piece);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}, 0);\n\n\t}\n\n\t/**\n\t * Triggered on <input> keypress.\n\t *\n\t */\n\tonKeyPress(e:KeyboardEvent):void {\n\t\tvar self = this;\n\t\tif(self.isLocked){\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t\tvar character = String.fromCharCode(e.keyCode || e.which);\n\t\tif (self.settings.create && self.settings.mode === 'multi' && character === self.settings.delimiter) {\n\t\t\tself.createItem();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keydown.\n\t *\n\t */\n\tonKeyDown(e:KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tself.ignoreHover = true;\n\n\t\tif (self.isLocked) {\n\t\t\tif (e.keyCode !== constants.KEY_TAB) {\n\t\t\t\tpreventDefault(e);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tswitch (e.keyCode) {\n\n\t\t\t// ctrl+A: select all\n\t\t\tcase constants.KEY_A:\n\t\t\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\t\t\tif( self.control_input.value == '' ){\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t\tself.selectAll();\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\t// esc: close dropdown\n\t\t\tcase constants.KEY_ESC:\n\t\t\t\tif (self.isOpen) {\n\t\t\t\t\tpreventDefault(e,true);\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\n\t\t\t// down: open dropdown or move selection down\n\t\t\tcase constants.KEY_DOWN:\n\t\t\t\tif (!self.isOpen && self.hasOptions) {\n\t\t\t\t\tself.open();\n\t\t\t\t} else if (self.activeOption) {\n\t\t\t\t\tlet next = self.getAdjacent(self.activeOption, 1);\n\t\t\t\t\tif (next) self.setActiveOption(next);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// up: move selection up\n\t\t\tcase constants.KEY_UP:\n\t\t\t\tif (self.activeOption) {\n\t\t\t\t\tlet prev = self.getAdjacent(self.activeOption, -1);\n\t\t\t\t\tif (prev) self.setActiveOption(prev);\n\t\t\t\t}\n\t\t\t\tpreventDefault(e);\n\t\t\t\treturn;\n\n\t\t\t// return: select active option\n\t\t\tcase constants.KEY_RETURN:\n\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// if the option_create=null, the dropdown might be closed\n\t\t\t\t}else if (self.settings.create && self.createItem()) {\n\t\t\t\t\tpreventDefault(e);\n\n\t\t\t\t// don't submit form when searching for a value\n\t\t\t\t}else if( document.activeElement == self.control_input && self.isOpen ){\n\t\t\t\t\tpreventDefault(e);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\n\t\t\t// left: modifiy item selection to the left\n\t\t\tcase constants.KEY_LEFT:\n\t\t\t\tself.advanceSelection(-1, e);\n\t\t\t\treturn;\n\n\t\t\t// right: modifiy item selection to the right\n\t\t\tcase constants.KEY_RIGHT:\n\t\t\t\tself.advanceSelection(1, e);\n\t\t\t\treturn;\n\n\t\t\t// tab: select active option and/or create item\n\t\t\tcase constants.KEY_TAB:\n\n\t\t\t\tif( self.settings.selectOnTab ){\n\t\t\t\t\tif( self.canSelect(self.activeOption) ){\n\t\t\t\t\t\tself.onOptionSelect(e,self.activeOption!);\n\n\t\t\t\t\t\t// prevent default [tab] behaviour of jump to the next field\n\t\t\t\t\t\t// if select isFull, then the dropdown won't be open and [tab] will work normally\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t\tif (self.settings.create && self.createItem()) {\n\t\t\t\t\t\tpreventDefault(e);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\n\t\t\t// delete|backspace: delete items\n\t\t\tcase constants.KEY_BACKSPACE:\n\t\t\tcase constants.KEY_DELETE:\n\t\t\t\tself.deleteSelection(e);\n\t\t\t\treturn;\n\t\t}\n\n\t\t// don't enter text in the control_input when active items are selected\n\t\tif( self.isInputHidden && !isKeyDown(constants.KEY_SHORTCUT,e) ){\n\t\t\tpreventDefault(e);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered on <input> keyup.\n\t *\n\t */\n\tonInput(e:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\n\t\tif( self.isLocked ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar value = self.inputValue();\n\t\tif (self.lastValue !== value) {\n\t\t\tself.lastValue = value;\n\n\t\t\tif( self.settings.shouldLoad.call(self,value) ){\n\t\t\t\tself.load(value);\n\t\t\t}\n\n\t\t\tself.refreshOptions();\n\t\t\tself.trigger('type', value);\n\t\t}\n\t}\n\n\t/**\n\t * Triggered when the user rolls over\n\t * an option in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionHover( evt:MouseEvent|KeyboardEvent, option:HTMLElement ):void{\n\t\tif( this.ignoreHover ) return;\n\t\tthis.setActiveOption(option, false);\n\t}\n\n\t/**\n\t * Triggered on <input> focus.\n\t *\n\t */\n\tonFocus(e?:MouseEvent|KeyboardEvent):void {\n\t\tvar self = this;\n\t\tvar wasFocused = self.isFocused;\n\n\t\tif (self.isDisabled) {\n\t\t\tself.blur();\n\t\t\tpreventDefault(e);\n\t\t\treturn;\n\t\t}\n\n\t\tif (self.ignoreFocus) return;\n\t\tself.isFocused = true;\n\t\tif( self.settings.preload === 'focus' ) self.preload();\n\n\t\tif (!wasFocused) self.trigger('focus');\n\n\t\tif (!self.activeItems.length) {\n\t\t\tself.showInput();\n\t\t\tself.refreshOptions(!!self.settings.openOnFocus);\n\t\t}\n\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Triggered on <input> blur.\n\t *\n\t */\n\tonBlur(e?:FocusEvent):void {\n\n\t\tif( document.hasFocus() === false ) return;\n\n\t\tvar self = this;\n\t\tif (!self.isFocused) return;\n\t\tself.isFocused = false;\n\t\tself.ignoreFocus = false;\n\n\t\tvar deactivate = () => {\n\t\t\tself.close();\n\t\t\tself.setActiveItem();\n\t\t\tself.setCaret(self.items.length);\n\t\t\tself.trigger('blur');\n\t\t};\n\n\t\tif (self.settings.create && self.settings.createOnBlur) {\n\t\t\tself.createItem(null, deactivate);\n\t\t} else {\n\t\t\tdeactivate();\n\t\t}\n\t}\n\n\n\t/**\n\t * Triggered when the user clicks on an option\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\tonOptionSelect( evt:MouseEvent|KeyboardEvent, option:HTMLElement ){\n\t\tvar value, self = this;\n\n\n\t\t// should not be possible to trigger a option under a disabled optgroup\n\t\tif( option.parentElement && option.parentElement.matches('[data-disabled]') ){\n\t\t\treturn;\n\t\t}\n\n\n\t\tif( option.classList.contains('create') ){\n\t\t\tself.createItem(null, () => {\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tvalue = option.dataset.value;\n\t\t\tif (typeof value !== 'undefined') {\n\t\t\t\tself.lastQuery = null;\n\t\t\t\tself.addItem(value);\n\t\t\t\tif (self.settings.closeAfterSelect) {\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( !self.settings.hideSelected && evt.type && /click/.test(evt.type) ){\n\t\t\t\t\tself.setActiveOption(option);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return true if the given option can be selected\n\t *\n\t */\n\tcanSelect(option:HTMLElement|null):boolean{\n\n\t\tif( this.isOpen && option && this.dropdown_content.contains(option) ) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Triggered when the user clicks on an item\n\t * that has been selected.\n\t *\n\t */\n\tonItemSelect( evt?:MouseEvent, item?:TomItem ):boolean{\n\t\tvar self = this;\n\n\t\tif( !self.isLocked && self.settings.mode === 'multi' ){\n\t\t\tpreventDefault(evt);\n\t\t\tself.setActiveItem(item, evt);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Determines whether or not to invoke\n\t * the user-provided option provider / loader\n\t *\n\t * Note, there is a subtle difference between\n\t * this.canLoad() and this.settings.shouldLoad();\n\t *\n\t *\t- settings.shouldLoad() is a user-input validator.\n\t *\tWhen false is returned, the not_loading template\n\t *\twill be added to the dropdown\n\t *\n\t *\t- canLoad() is lower level validator that checks\n\t * \tthe Tom Select instance. There is no inherent user\n\t *\tfeedback when canLoad returns false\n\t *\n\t */\n\tcanLoad(value:string):boolean{\n\n\t\tif( !this.settings.load ) return false;\n\t\tif( this.loadedSearches.hasOwnProperty(value) ) return false;\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Invokes the user-provided option provider / loader.\n\t *\n\t */\n\tload(value:string):void {\n\t\tconst self = this;\n\n\t\tif( !self.canLoad(value) ) return;\n\n\t\taddClasses(self.wrapper,self.settings.loadingClass);\n\t\tself.loading++;\n\n\t\tconst callback = self.loadCallback.bind(self);\n\t\tself.settings.load.call(self, value, callback);\n\t}\n\n\t/**\n\t * Invoked by the user-provided option provider\n\t *\n\t */\n\tloadCallback( options:TomOption[], optgroups:TomOption[] ):void{\n\t\tconst self = this;\n\t\tself.loading = Math.max(self.loading - 1, 0);\n\t\tself.lastQuery = null;\n\n\t\tself.clearActiveOption(); // when new results load, focus should be on first option\n\t\tself.setupOptions(options,optgroups);\n\n\t\tself.refreshOptions(self.isFocused && !self.isInputHidden);\n\n\t\tif (!self.loading) {\n\t\t\tremoveClasses(self.wrapper,self.settings.loadingClass);\n\t\t}\n\n\t\tself.trigger('load', options, optgroups);\n\t}\n\n\tpreload():void{\n\t\tvar classList = this.wrapper.classList;\n\t\tif( classList.contains('preloaded') ) return;\n\t\tclassList.add('preloaded');\n\t\tthis.load('');\n\t}\n\n\n\t/**\n\t * Sets the input field of the control to the specified value.\n\t *\n\t */\n\tsetTextboxValue(value:string = '') {\n\t\tvar input = this.control_input;\n\t\tvar changed = input.value !== value;\n\t\tif (changed) {\n\t\t\tinput.value = value;\n\t\t\ttriggerEvent(input,'update');\n\t\t\tthis.lastValue = value;\n\t\t}\n\t}\n\n\t/**\n\t * Returns the value of the control. If multiple items\n\t * can be selected (e.g. <select multiple>), this returns\n\t * an array. If only one item can be selected, this\n\t * returns a string.\n\t *\n\t */\n\tgetValue():string|string[] {\n\n\t\tif( this.is_select_tag && this.input.hasAttribute('multiple')) {\n\t\t\treturn this.items;\n\t\t}\n\n\t\treturn this.items.join(this.settings.delimiter);\n\t}\n\n\t/**\n\t * Resets the selected items to the given value.\n\t *\n\t */\n\tsetValue( value:string|string[], silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change'];\n\n\t\tdebounce_events(this, events,() => {\n\t\t\tthis.clear(silent);\n\t\t\tthis.addItems(value, silent);\n\t\t});\n\t}\n\n\n\t/**\n\t * Resets the number of max items to the given value\n\t *\n\t */\n\tsetMaxItems(value:null|number){\n\t\tif(value === 0) value = null; //reset to unlimited items.\n\t\tthis.settings.maxItems = value;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Sets the selected item.\n\t *\n\t */\n\tsetActiveItem( item?:TomItem, e?:MouseEvent|KeyboardEvent ){\n\t\tvar self = this;\n\t\tvar eventName;\n\t\tvar i, begin, end, swap;\n\t\tvar last;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\t// clear the active selection\n\t\tif( !item ){\n\t\t\tself.clearActiveItems();\n\t\t\tif (self.isFocused) {\n\t\t\t\tself.showInput();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// modify selection\n\t\teventName = e && e.type.toLowerCase();\n\n\t\tif (eventName === 'click' && isKeyDown('shiftKey',e) && self.activeItems.length) {\n\t\t\tlast\t= self.getLastActive();\n\t\t\tbegin\t= Array.prototype.indexOf.call(self.control.children, last);\n\t\t\tend\t\t= Array.prototype.indexOf.call(self.control.children, item);\n\n\t\t\tif (begin > end) {\n\t\t\t\tswap  = begin;\n\t\t\t\tbegin = end;\n\t\t\t\tend   = swap;\n\t\t\t}\n\t\t\tfor (i = begin; i <= end; i++) {\n\t\t\t\titem = self.control.children[i] as TomItem;\n\t\t\t\tif (self.activeItems.indexOf(item) === -1) {\n\t\t\t\t\tself.setActiveItemClass(item);\n\t\t\t\t}\n\t\t\t}\n\t\t\tpreventDefault(e);\n\t\t} else if ((eventName === 'click' && isKeyDown(constants.KEY_SHORTCUT,e) ) || (eventName === 'keydown' && isKeyDown('shiftKey',e))) {\n\t\t\tif( item.classList.contains('active') ){\n\t\t\t\tself.removeActiveItem( item );\n\t\t\t} else {\n\t\t\t\tself.setActiveItemClass(item);\n\t\t\t}\n\t\t} else {\n\t\t\tself.clearActiveItems();\n\t\t\tself.setActiveItemClass(item);\n\t\t}\n\n\t\t// ensure control has focus\n\t\tself.hideInput();\n\t\tif (!self.isFocused) {\n\t\t\tself.focus();\n\t\t}\n\t}\n\n\t/**\n\t * Set the active and last-active classes\n\t *\n\t */\n\tsetActiveItemClass( item:TomItem ){\n\t\tconst self = this;\n\t\tconst last_active = self.control.querySelector('.last-active');\n\t\tif( last_active ) removeClasses(last_active as HTMLElement,'last-active');\n\n\t\taddClasses(item,'active last-active');\n\t\tself.trigger('item_select', item);\n\t\tif( self.activeItems.indexOf(item) == -1 ){\n\t\t\tself.activeItems.push( item );\n\t\t}\n\t}\n\n\t/**\n\t * Remove active item\n\t *\n\t */\n\tremoveActiveItem( item:TomItem ){\n\t\tvar idx = this.activeItems.indexOf(item);\n\t\tthis.activeItems.splice(idx, 1);\n\t\tremoveClasses(item,'active');\n\t}\n\n\t/**\n\t * Clears all the active items\n\t *\n\t */\n\tclearActiveItems(){\n\t\tremoveClasses(this.activeItems,'active');\n\t\tthis.activeItems = [];\n\t}\n\n\t/**\n\t * Sets the selected item in the dropdown menu\n\t * of available options.\n\t *\n\t */\n\tsetActiveOption( option:null|HTMLElement,scroll:boolean=true ):void{\n\n\t\tif( option === this.activeOption ){\n\t\t\treturn;\n\t\t}\n\n\t\tthis.clearActiveOption();\n\t\tif( !option ) return;\n\n\t\tthis.activeOption = option;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':option.getAttribute('id')});\n\t\tsetAttr(option,{'aria-selected':'true'});\n\t\taddClasses(option,'active');\n\t\tif( scroll ) this.scrollToOption(option);\n\t}\n\n\t/**\n\t * Sets the dropdown_content scrollTop to display the option\n\t *\n\t */\n\tscrollToOption( option:null|HTMLElement, behavior?:string ):void{\n\n\t\tif( !option ) return;\n\n\t\tconst content\t\t= this.dropdown_content;\n\t\tconst height_menu\t= content.clientHeight;\n\t\tconst scrollTop\t\t= content.scrollTop || 0;\n\t\tconst height_item\t= option.offsetHeight;\n\t\tconst y\t\t\t\t= option.getBoundingClientRect().top - content.getBoundingClientRect().top + scrollTop;\n\n\t\tif (y + height_item > height_menu + scrollTop) {\n\t\t\tthis.scroll(y - height_menu + height_item, behavior);\n\n\t\t} else if (y < scrollTop) {\n\t\t\tthis.scroll(y, behavior);\n\t\t}\n\t}\n\n\t/**\n\t * Scroll the dropdown to the given position\n\t *\n\t */\n\tscroll( scrollTop:number, behavior?:string ):void{\n\t\tconst content = this.dropdown_content;\n\t\tif( behavior ){\n\t\t\tcontent.style.scrollBehavior = behavior;\n\t\t}\n\t\tcontent.scrollTop = scrollTop;\n\t\tcontent.style.scrollBehavior = '';\n\t}\n\n\t/**\n\t * Clears the active option\n\t *\n\t */\n\tclearActiveOption(){\n\t\tif( this.activeOption ){\n\t\t\tremoveClasses(this.activeOption,'active');\n\t\t\tsetAttr(this.activeOption,{'aria-selected':null});\n\t\t}\n\t\tthis.activeOption = null;\n\t\tsetAttr(this.focus_node,{'aria-activedescendant':null});\n\t}\n\n\n\t/**\n\t * Selects all items (CTRL + A).\n\t */\n\tselectAll() {\n\t\tconst self = this;\n\n\t\tif (self.settings.mode === 'single') return;\n\n\t\tconst activeItems = self.controlChildren();\n\n\t\tif( !activeItems.length ) return;\n\n\t\tself.hideInput();\n\t\tself.close();\n\n\t\tself.activeItems = activeItems;\n\t\titerate( activeItems, (item:TomItem) => {\n\t\t\tself.setActiveItemClass(item);\n\t\t});\n\n\t}\n\n\t/**\n\t * Determines if the control_input should be in a hidden or visible state\n\t *\n\t */\n\tinputState(){\n\t\tvar self = this;\n\n\t\tif( !self.control.contains(self.control_input) ) return;\n\n\t\tsetAttr(self.control_input,{placeholder:self.settings.placeholder});\n\n\t\tif( self.activeItems.length > 0 || (!self.isFocused && self.settings.hidePlaceholder && self.items.length > 0) ){\n\t\t\tself.setTextboxValue();\n\t\t\tself.isInputHidden = true;\n\n\t\t}else{\n\n\t\t\tif( self.settings.hidePlaceholder && self.items.length > 0 ){\n\t\t\t\tsetAttr(self.control_input,{placeholder:''});\n\t\t\t}\n\t\t\tself.isInputHidden = false;\n\t\t}\n\n\t\tself.wrapper.classList.toggle('input-hidden', self.isInputHidden );\n\t}\n\n\t/**\n\t * Hides the input element out of view, while\n\t * retaining its focus.\n\t * @deprecated 1.3\n\t */\n\thideInput() {\n\t\tthis.inputState();\n\t}\n\n\t/**\n\t * Restores input visibility.\n\t * @deprecated 1.3\n\t */\n\tshowInput() {\n\t\tthis.inputState();\n\t}\n\n\t/**\n\t * Get the input value\n\t */\n\tinputValue(){\n\t\treturn this.control_input.value.trim();\n\t}\n\n\t/**\n\t * Gives the control focus.\n\t */\n\tfocus() {\n\t\tvar self = this;\n\t\tif (self.isDisabled) return;\n\n\t\tself.ignoreFocus = true;\n\n\t\tif( self.control_input.offsetWidth ){\n\t\t\tself.control_input.focus();\n\t\t}else{\n\t\t\tself.focus_node.focus();\n\t\t}\n\n\t\tsetTimeout(() => {\n\t\t\tself.ignoreFocus = false;\n\t\t\tself.onFocus();\n\t\t}, 0);\n\t}\n\n\t/**\n\t * Forces the control out of focus.\n\t *\n\t */\n\tblur():void {\n\t\tthis.focus_node.blur();\n\t\tthis.onBlur();\n\t}\n\n\t/**\n\t * Returns a function that scores an object\n\t * to show how good of a match it is to the\n\t * provided query.\n\t *\n\t * @return {function}\n\t */\n\tgetScoreFunction(query:string) {\n\t\treturn this.sifter.getScoreFunction(query, this.getSearchOptions());\n\t}\n\n\t/**\n\t * Returns search options for sifter (the system\n\t * for scoring and sorting results).\n\t *\n\t * @see https://github.com/orchidjs/sifter.js\n\t * @return {object}\n\t */\n\tgetSearchOptions() {\n\t\tvar settings = this.settings;\n\t\tvar sort = settings.sortField;\n\t\tif (typeof settings.sortField === 'string') {\n\t\t\tsort = [{field: settings.sortField}];\n\t\t}\n\n\t\treturn {\n\t\t\tfields      : settings.searchField,\n\t\t\tconjunction : settings.searchConjunction,\n\t\t\tsort        : sort,\n\t\t\tnesting     : settings.nesting\n\t\t};\n\t}\n\n\t/**\n\t * Searches through available options and returns\n\t * a sorted array of matches.\n\t *\n\t */\n\tsearch(query:string) : ReturnType<Sifter['search']>{\n\t\tvar result, calculateScore;\n\t\tvar self     = this;\n\t\tvar options  = this.getSearchOptions();\n\n\t\t// validate user-provided result scoring function\n\t\tif ( self.settings.score ){\n\t\t\tcalculateScore = self.settings.score.call(self,query);\n\t\t\tif (typeof calculateScore !== 'function') {\n\t\t\t\tthrow new Error('Tom Select \"score\" setting must be a function that returns a function');\n\t\t\t}\n\t\t}\n\n\t\t// perform search\n\t\tif (query !== self.lastQuery) {\n\t\t\tself.lastQuery\t\t\t= query;\n\t\t\tresult\t\t\t\t\t= self.sifter.search(query, Object.assign(options, {score: calculateScore}));\n\t\t\tself.currentResults\t\t= result;\n\t\t} else {\n\t\t\tresult\t\t\t\t\t= Object.assign( {}, self.currentResults);\n\t\t}\n\n\t\t// filter out selected items\n\t\tif( self.settings.hideSelected ){\n\t\t\tresult.items = result.items.filter((item) => {\n\t\t\t\tlet hashed = hash_key(item.id);\n\t\t\t\treturn !(hashed && self.items.indexOf(hashed) !== -1 );\n\t\t\t});\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t/**\n\t * Refreshes the list of available options shown\n\t * in the autocomplete dropdown menu.\n\t *\n\t */\n\trefreshOptions( triggerDropdown:boolean = true ){\n\t\tvar i, j, k, n, optgroup, optgroups, html:DocumentFragment, has_create_option, active_group;\n\t\tvar create;\n\t\tconst groups: {[key:string]:DocumentFragment} = {};\n\n\t\tconst groups_order:string[]\t= [];\n\t\tvar self\t\t\t\t\t= this;\n\t\tvar query\t\t\t\t\t= self.inputValue();\n\t\tconst same_query\t\t\t= query === self.lastQuery || (query == '' && self.lastQuery == null);\n\t\tvar results\t\t\t\t\t= self.search(query);\n\t\tvar active_option\t\t\t= null;\n\t\tvar show_dropdown\t\t\t= self.settings.shouldOpen || false;\n\t\tvar dropdown_content\t\t= self.dropdown_content;\n\n\n\t\tif( same_query ){\n\t\t\tactive_option\t\t\t= self.activeOption;\n\n\t\t\tif( active_option ){\n\t\t\t\tactive_group = active_option.closest('[data-group]') as HTMLElement;\n\t\t\t}\n\t\t}\n\n\t\t// build markup\n\t\tn = results.items.length;\n\t\tif (typeof self.settings.maxOptions === 'number') {\n\t\t\tn = Math.min(n, self.settings.maxOptions);\n\t\t}\n\n\t\tif( n > 0 ){\n\t\t\tshow_dropdown = true;\n\t\t}\n\n\t\t// render and group available options individually\n\t\tfor (i = 0; i < n; i++) {\n\n\t\t\t// get option dom element\n\t\t\tlet item\t\t\t= results.items[i];\n\t\t\tif( !item ) continue;\n\n\t\t\tlet opt_value\t\t= item.id;\n\t\t\tlet option\t\t\t= self.options[opt_value];\n\n\t\t\tif( option === undefined ) continue;\n\n\t\t\tlet opt_hash\t\t= get_hash(opt_value);\n\t\t\tlet option_el\t\t= self.getOption(opt_hash,true) as HTMLElement;\n\n\t\t\t// toggle 'selected' class\n\t\t\tif( !self.settings.hideSelected ){\n\t\t\t\toption_el.classList.toggle('selected', self.items.includes(opt_hash) );\n\t\t\t}\n\n\t\t\toptgroup    = option[self.settings.optgroupField] || '';\n\t\t\toptgroups   = Array.isArray(optgroup) ? optgroup : [optgroup];\n\n\t\t\tfor (j = 0, k = optgroups && optgroups.length; j < k; j++) {\n\t\t\t\toptgroup = optgroups[j];\n\t\t\t\tif (!self.optgroups.hasOwnProperty(optgroup)) {\n\t\t\t\t\toptgroup = '';\n\t\t\t\t}\n\n\t\t\t\tlet group_fragment = groups[optgroup];\n\t\t\t\tif( group_fragment === undefined ){\n\t\t\t\t\tgroup_fragment = document.createDocumentFragment();\n\t\t\t\t\tgroups_order.push(optgroup);\n\t\t\t\t}\n\n\t\t\t\t// nodes can only have one parent, so if the option is in mutple groups, we need a clone\n\t\t\t\tif( j > 0 ){\n\t\t\t\t\toption_el = option_el.cloneNode(true) as HTMLElement;\n\t\t\t\t\tsetAttr(option_el,{id: option.$id+'-clone-'+j,'aria-selected':null});\n\t\t\t\t\toption_el.classList.add('ts-cloned');\n\t\t\t\t\tremoveClasses(option_el,'active');\n\n\n\t\t\t\t\t// make sure we keep the activeOption in the same group\n\t\t\t\t\tif( self.activeOption && self.activeOption.dataset.value == opt_value ){\n\t\t\t\t\t\tif( active_group && active_group.dataset.group === optgroup.toString() ){\n\t\t\t\t\t\t\tactive_option = option_el;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tgroup_fragment.appendChild(option_el);\n\t\t\t\tgroups[optgroup] = group_fragment;\n\t\t\t}\n\t\t}\n\n\t\t// sort optgroups\n\t\tif( self.settings.lockOptgroupOrder ){\n\t\t\tgroups_order.sort((a, b) => {\n\t\t\t\tconst grp_a\t\t= self.optgroups[a];\n\t\t\t\tconst grp_b\t\t= self.optgroups[b];\n\t\t\t\tconst a_order\t= grp_a && grp_a.$order || 0;\n\t\t\t\tconst b_order\t= grp_b && grp_b.$order || 0;\n\t\t\t\treturn a_order - b_order;\n\t\t\t});\n\t\t}\n\n\t\t// render optgroup headers & join groups\n\t\thtml = document.createDocumentFragment();\n\t\titerate( groups_order, (optgroup:string) => {\n\n\t\t\tlet group_fragment = groups[optgroup];\n\n\t\t\tif( !group_fragment || !group_fragment.children.length ) return;\n\n\t\t\tlet group_heading = self.optgroups[optgroup];\n\n\t\t\tif( group_heading !== undefined ){\n\n\t\t\t\tlet group_options = document.createDocumentFragment();\n\t\t\t\tlet header = self.render('optgroup_header', group_heading);\n\t\t\t\tappend( group_options, header );\n\t\t\t\tappend( group_options, group_fragment );\n\n\t\t\t\tlet group_html = self.render('optgroup', {group:group_heading,options:group_options} );\n\n\t\t\t\tappend( html, group_html );\n\n\t\t\t} else {\n\t\t\t\tappend( html, group_fragment );\n\t\t\t}\n\t\t});\n\n\t\tdropdown_content.innerHTML = '';\n\t\tappend( dropdown_content, html );\n\n\t\t// highlight matching terms inline\n\t\tif (self.settings.highlight) {\n\t\t\tremoveHighlight( dropdown_content );\n\t\t\tif (results.query.length && results.tokens.length) {\n\t\t\t\titerate( results.tokens, (tok) => {\n\t\t\t\t\thighlight( dropdown_content, tok.regex);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\t// helper method for adding templates to dropdown\n\t\tvar add_template = (template:TomTemplateNames) => {\n\t\t\tlet content = self.render(template,{input:query});\n\t\t\tif( content ){\n\t\t\t\tshow_dropdown = true;\n\t\t\t\tdropdown_content.insertBefore(content, dropdown_content.firstChild);\n\t\t\t}\n\t\t\treturn content;\n\t\t};\n\n\n\t\t// add loading message\n\t\tif( self.loading ){\n\t\t\tadd_template('loading');\n\n\t\t// invalid query\n\t\t}else if( !self.settings.shouldLoad.call(self,query) ){\n\t\t\tadd_template('not_loading');\n\n\t\t// add no_results message\n\t\t}else if( results.items.length === 0 ){\n\t\t\tadd_template('no_results');\n\n\t\t}\n\n\n\n\t\t// add create option\n\t\thas_create_option = self.canCreate(query);\n\t\tif (has_create_option) {\n\t\t\tcreate = add_template('option_create');\n\t\t}\n\n\n\t\t// activate\n\t\tself.hasOptions = results.items.length > 0 || has_create_option;\n\t\tif( show_dropdown ){\n\n\t\t\tif (results.items.length > 0) {\n\n\t\t\t\tif( !active_option && self.settings.mode === 'single' && self.items[0] != undefined ){\n\t\t\t\t\tactive_option = self.getOption(self.items[0]);\n\t\t\t\t}\n\n\t\t\t\tif( !dropdown_content.contains(active_option)  ){\n\n\t\t\t\t\tlet active_index = 0;\n\t\t\t\t\tif( create && !self.settings.addPrecedence ){\n\t\t\t\t\t\tactive_index = 1;\n\t\t\t\t\t}\n\t\t\t\t\tactive_option = self.selectable()[active_index] as HTMLElement;\n\t\t\t\t}\n\n\t\t\t}else if( create ){\n\t\t\t\tactive_option = create;\n\t\t\t}\n\n\t\t\tif( triggerDropdown && !self.isOpen ){\n\t\t\t\tself.open();\n\t\t\t\tself.scrollToOption(active_option,'auto');\n\t\t\t}\n\t\t\tself.setActiveOption(active_option);\n\n\t\t}else{\n\t\t\tself.clearActiveOption();\n\t\t\tif( triggerDropdown && self.isOpen ){\n\t\t\t\tself.close(false); // if create_option=null, we want the dropdown to close but not reset the textbox value\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Return list of selectable options\n\t *\n\t */\n\tselectable():NodeList{\n\t\treturn this.dropdown_content.querySelectorAll('[data-selectable]');\n\t}\n\n\n\n\t/**\n\t * Adds an available option. If it already exists,\n\t * nothing will happen. Note: this does not refresh\n\t * the options list dropdown (use `refreshOptions`\n\t * for that).\n\t *\n\t * Usage:\n\t *\n\t *   this.addOption(data)\n\t *\n\t */\n\taddOption( data:TomOption, user_created = false ):false|string {\n\t\tconst self = this;\n\n\t\t// @deprecated 1.7.7\n\t\t// use addOptions( array, user_created ) for adding multiple options\n\t\tif( Array.isArray(data) ){\n\t\t\tself.addOptions( data, user_created);\n\t\t\treturn false;\n\t\t}\n\n\t\tconst key = hash_key(data[self.settings.valueField]);\n\t\tif( key === null || self.options.hasOwnProperty(key) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tdata.$order\t\t\t= data.$order || ++self.order;\n\t\tdata.$id\t\t\t= self.inputId + '-opt-' + data.$order;\n\t\tself.options[key]\t= data;\n\t\tself.lastQuery\t\t= null;\n\n\t\tif( user_created ){\n\t\t\tself.userOptions[key] = user_created;\n\t\t\tself.trigger('option_add', key, data);\n\t\t}\n\n\t\treturn key;\n\t}\n\n\t/**\n\t * Add multiple options\n\t *\n\t */\n\taddOptions( data:TomOption[], user_created = false ):void{\n\t\titerate( data, (dat:TomOption) => {\n\t\t\tthis.addOption(dat, user_created);\n\t\t});\n\t}\n\n\t/**\n\t * @deprecated 1.7.7\n\t */\n\tregisterOption( data:TomOption ):false|string {\n\t\treturn this.addOption(data);\n\t}\n\n\t/**\n\t * Registers an option group to the pool of option groups.\n\t *\n\t * @return {boolean|string}\n\t */\n\tregisterOptionGroup(data:TomOption) {\n\t\tvar key = hash_key(data[this.settings.optgroupValueField]);\n\n\t\tif ( key === null ) return false;\n\n\t\tdata.$order = data.$order || ++this.order;\n\t\tthis.optgroups[key] = data;\n\t\treturn key;\n\t}\n\n\t/**\n\t * Registers a new optgroup for options\n\t * to be bucketed into.\n\t *\n\t */\n\taddOptionGroup(id:string, data:TomOption) {\n\t\tvar hashed_id;\n\t\tdata[this.settings.optgroupValueField] = id;\n\n\t\tif( hashed_id = this.registerOptionGroup(data) ){\n\t\t\tthis.trigger('optgroup_add', hashed_id, data);\n\t\t}\n\t}\n\n\t/**\n\t * Removes an existing option group.\n\t *\n\t */\n\tremoveOptionGroup(id:string) {\n\t\tif (this.optgroups.hasOwnProperty(id)) {\n\t\t\tdelete this.optgroups[id];\n\t\t\tthis.clearCache();\n\t\t\tthis.trigger('optgroup_remove', id);\n\t\t}\n\t}\n\n\t/**\n\t * Clears all existing option groups.\n\t */\n\tclearOptionGroups() {\n\t\tthis.optgroups = {};\n\t\tthis.clearCache();\n\t\tthis.trigger('optgroup_clear');\n\t}\n\n\t/**\n\t * Updates an option available for selection. If\n\t * it is visible in the selected items or options\n\t * dropdown, it will be re-rendered automatically.\n\t *\n\t */\n\tupdateOption(value:string, data:TomOption) {\n\t\tconst self = this;\n\t\tvar item_new;\n\t\tvar index_item;\n\n\t\tconst value_old\t\t= hash_key(value);\n\t\tconst value_new\t\t= hash_key(data[self.settings.valueField]);\n\n\t\t// sanity checks\n\t\tif( value_old === null ) return;\n\n\t\tconst data_old\t\t= self.options[value_old];\n\n\t\tif( data_old == undefined ) return;\n\t\tif( typeof value_new !== 'string' ) throw new Error('Value must be set in option data');\n\n\n\t\tconst option\t\t= self.getOption(value_old);\n\t\tconst item\t\t\t= self.getItem(value_old);\n\n\n\t\tdata.$order = data.$order || data_old.$order;\n\t\tdelete self.options[value_old];\n\n\t\t// invalidate render cache\n\t\t// don't remove existing node yet, we'll remove it after replacing it\n\t\tself.uncacheValue(value_new);\n\n\t\tself.options[value_new] = data;\n\n\t\t// update the option if it's in the dropdown\n\t\tif( option ){\n\t\t\tif( self.dropdown_content.contains(option) ){\n\n\t\t\t\tconst option_new\t= self._render('option', data);\n\t\t\t\treplaceNode(option, option_new);\n\n\t\t\t\tif( self.activeOption === option ){\n\t\t\t\t\tself.setActiveOption(option_new);\n\t\t\t\t}\n\t\t\t}\n\t\t\toption.remove();\n\t\t}\n\n\t\t// update the item if we have one\n\t\tif( item ){\n\t\t\tindex_item = self.items.indexOf(value_old);\n\t\t\tif (index_item !== -1) {\n\t\t\t\tself.items.splice(index_item, 1, value_new);\n\t\t\t}\n\n\t\t\titem_new\t= self._render('item', data);\n\n\t\t\tif( item.classList.contains('active') ) addClasses(item_new,'active');\n\n\t\t\treplaceNode( item, item_new);\n\t\t}\n\n\t\t// invalidate last query because we might have updated the sortField\n\t\tself.lastQuery = null;\n\t}\n\n\t/**\n\t * Removes a single option.\n\t *\n\t */\n\tremoveOption(value:string, silent?:boolean):void {\n\t\tconst self = this;\n\t\tvalue = get_hash(value);\n\n\t\tself.uncacheValue(value);\n\n\t\tdelete self.userOptions[value];\n\t\tdelete self.options[value];\n\t\tself.lastQuery = null;\n\t\tself.trigger('option_remove', value);\n\t\tself.removeItem(value, silent);\n\t}\n\n\t/**\n\t * Clears all options.\n\t */\n\tclearOptions(filter?:TomClearFilter ) {\n\n\t\tconst boundFilter = (filter || this.clearFilter).bind(this);\n\n\t\tthis.loadedSearches\t\t= {};\n\t\tthis.userOptions\t\t= {};\n\t\tthis.clearCache();\n\n\t\tconst selected:TomOptions\t= {};\n\t\titerate(this.options,(option:TomOption,key:string)=>{\n\t\t\tif( boundFilter(option,key as string) ){\n\t\t\t\tselected[key] = option;\n\t\t\t}\n\t\t});\n\n\t\tthis.options = this.sifter.items = selected;\n\t\tthis.lastQuery = null;\n\t\tthis.trigger('option_clear');\n\t}\n\n\t/**\n\t * Used by clearOptions() to decide whether or not an option should be removed\n\t * Return true to keep an option, false to remove\n\t *\n\t */\n\tclearFilter(option:TomOption,value:string){\n\t\tif( this.items.indexOf(value) >= 0 ){\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * Returns the dom element of the option\n\t * matching the given value.\n\t *\n\t */\n\tgetOption(value:undefined|null|boolean|string|number, create:boolean=false):null|HTMLElement {\n\n\t\tconst hashed = hash_key(value);\n\t\tif( hashed === null ) return null;\n\n\t\tconst option = this.options[hashed];\n\t\tif( option != undefined ){\n\n\t\t\tif( option.$div ){\n\t\t\t\treturn option.$div;\n\t\t\t}\n\n\t\t\tif( create ){\n\t\t\t\treturn this._render('option', option);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\t/**\n\t * Returns the dom element of the next or previous dom element of the same type\n\t * Note: adjacent options may not be adjacent DOM elements (optgroups)\n\t *\n\t */\n\tgetAdjacent( option:null|HTMLElement, direction:number, type:string = 'option' ) : HTMLElement|null{\n\t\tvar self = this, all;\n\n\t\tif( !option ){\n\t\t\treturn null;\n\t\t}\n\n\t\tif( type == 'item' ){\n\t\t\tall\t\t\t= self.controlChildren();\n\t\t}else{\n\t\t\tall\t\t\t= self.dropdown_content.querySelectorAll('[data-selectable]');\n\t\t}\n\n\t\tfor( let i = 0; i < all.length; i++ ){\n\t\t\tif( all[i] != option ){\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif( direction > 0 ){\n\t\t\t\treturn all[i+1] as HTMLElement;\n\t\t\t}\n\n\t\t\treturn all[i-1] as HTMLElement;\n\t\t}\n\t\treturn null;\n\t}\n\n\n\t/**\n\t * Returns the dom element of the item\n\t * matching the given value.\n\t *\n\t */\n\tgetItem(item:string|TomItem|null):null|TomItem {\n\n\t\tif( typeof item == 'object' ){\n\t\t\treturn item;\n\t\t}\n\n\t\tvar value = hash_key(item);\n\t\treturn value !== null\n\t\t\t? this.control.querySelector(`[data-value=\"${addSlashes(value)}\"]`)\n\t\t\t: null;\n\t}\n\n\t/**\n\t * \"Selects\" multiple items at once. Adds them to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItems( values:string|string[], silent?:boolean ):void{\n\t\tvar self = this;\n\n\t\tvar items = Array.isArray(values) ? values : [values];\n\t\titems = items.filter(x => self.items.indexOf(x) === -1);\n\t\tconst last_item = items[items.length - 1];\n\t\titems.forEach(item => {\n\t\t\tself.isPending = (item !== last_item);\n\t\t\tself.addItem(item, silent);\n\t\t});\n\t}\n\n\t/**\n\t * \"Selects\" an item. Adds it to the list\n\t * at the current caret position.\n\t *\n\t */\n\taddItem( value:string, silent?:boolean ):void{\n\t\tvar events = silent ? [] : ['change','dropdown_close'];\n\n\t\tdebounce_events(this, events, () => {\n\t\t\tvar item, wasFull;\n\t\t\tconst self = this;\n\t\t \tconst inputMode = self.settings.mode;\n\t\t\tconst hashed = hash_key(value);\n\n\t\t\tif( hashed && self.items.indexOf(hashed) !== -1 ){\n\n\t\t\t\tif( inputMode === 'single' ){\n\t\t\t\t\tself.close();\n\t\t\t\t}\n\n\t\t\t\tif( inputMode === 'single' || !self.settings.duplicates ){\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (hashed === null || !self.options.hasOwnProperty(hashed)) return;\n\t\t\tif (inputMode === 'single') self.clear(silent);\n\t\t\tif (inputMode === 'multi' && self.isFull()) return;\n\n\t\t\titem = self._render('item', self.options[hashed]);\n\n\t\t\tif( self.control.contains(item) ){ // duplicates\n\t\t\t\titem = item.cloneNode(true) as HTMLElement;\n\t\t\t}\n\n\t\t\twasFull = self.isFull();\n\t\t\tself.items.splice(self.caretPos, 0, hashed);\n\t\t\tself.insertAtCaret(item);\n\n\t\t\tif (self.isSetup) {\n\n\t\t\t\t// update menu / remove the option (if this is not one item being added as part of series)\n\t\t\t\tif( !self.isPending && self.settings.hideSelected ){\n\t\t\t\t\tlet option = self.getOption(hashed);\n\t\t\t\t\tlet next = self.getAdjacent(option, 1);\n\t\t\t\t\tif( next ){\n\t\t\t\t\t\tself.setActiveOption(next);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// refreshOptions after setActiveOption(),\n\t\t\t\t// otherwise setActiveOption() will be called by refreshOptions() with the wrong value\n\t\t\t\tif( !self.isPending && !self.settings.closeAfterSelect ){\n\t\t\t\t\tself.refreshOptions(self.isFocused && inputMode !== 'single');\n\t\t\t\t}\n\n\t\t\t\t// hide the menu if the maximum number of items have been selected or no options are left\n\t\t\t\tif( self.settings.closeAfterSelect != false && self.isFull() ){\n\t\t\t\t\tself.close();\n\t\t\t\t} else if (!self.isPending) {\n\t\t\t\t\tself.positionDropdown();\n\t\t\t\t}\n\n\t\t\t\tself.trigger('item_add', hashed, item);\n\n\t\t\t\tif (!self.isPending) {\n\t\t\t\t\tself.updateOriginalInput({silent: silent});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!self.isPending || (!wasFull && self.isFull())) {\n\t\t\t\tself.inputState();\n\t\t\t\tself.refreshState();\n\t\t\t}\n\n\t\t});\n\t}\n\n\t/**\n\t * Removes the selected item matching\n\t * the provided value.\n\t *\n\t */\n\tremoveItem( item:string|TomItem|null=null, silent?:boolean ){\n\t\tconst self\t\t= this;\n\t\titem\t\t\t= self.getItem(item);\n\n\t\tif( !item ) return;\n\n\t\tvar i,idx;\n\t\tconst value\t= item.dataset.value;\n\t\ti = nodeIndex(item);\n\n\t\titem.remove();\n\t\tif( item.classList.contains('active') ){\n\t\t\tidx = self.activeItems.indexOf(item);\n\t\t\tself.activeItems.splice(idx, 1);\n\t\t\tremoveClasses(item,'active');\n\t\t}\n\n\t\tself.items.splice(i, 1);\n\t\tself.lastQuery = null;\n\t\tif (!self.settings.persist && self.userOptions.hasOwnProperty(value)) {\n\t\t\tself.removeOption(value, silent);\n\t\t}\n\n\t\tif (i < self.caretPos) {\n\t\t\tself.setCaret(self.caretPos - 1);\n\t\t}\n\n\t\tself.updateOriginalInput({silent: silent});\n\t\tself.refreshState();\n\t\tself.positionDropdown();\n\t\tself.trigger('item_remove', value, item);\n\n\t}\n\n\t/**\n\t * Invokes the `create` method provided in the\n\t * TomSelect options that should provide the data\n\t * for the new item, given the user input.\n\t *\n\t * Once this completes, it will be added\n\t * to the item list.\n\t *\n\t */\n\tcreateItem( input:null|string=null, callback:TomCreateCallback = ()=>{} ):boolean{\n\n\t\t// triggerDropdown parameter @deprecated 2.1.1\n\t\tif( arguments.length === 3 ){\n\t\t\tcallback = arguments[2];\n\t\t}\n\t\tif( typeof callback != 'function' ){\n\t\t\tcallback = () => {};\n\t\t}\n\n\t\tvar self  = this;\n\t\tvar caret = self.caretPos;\n\t\tvar output;\n\t\tinput = input || self.inputValue();\n\n\t\tif (!self.canCreate(input)) {\n\t\t\tcallback();\n\t\t\treturn false;\n\t\t}\n\n\t\tself.lock();\n\n\t\tvar created = false;\n\t\tvar create = (data?:boolean|TomOption) => {\n\t\t\tself.unlock();\n\n\t\t\tif (!data || typeof data !== 'object') return callback();\n\t\t\tvar value = hash_key(data[self.settings.valueField]);\n\t\t\tif( typeof value !== 'string' ){\n\t\t\t\treturn callback();\n\t\t\t}\n\n\t\t\tself.setTextboxValue();\n\t\t\tself.addOption(data,true);\n\t\t\tself.setCaret(caret);\n\t\t\tself.addItem(value);\n\t\t\tcallback(data);\n\t\t\tcreated = true;\n\t\t};\n\n\t\tif( typeof self.settings.create === 'function' ){\n\t\t\toutput = self.settings.create.call(this, input, create);\n\t\t}else{\n\t\t\toutput = {\n\t\t\t\t[self.settings.labelField]: input,\n\t\t\t\t[self.settings.valueField]: input,\n\t\t\t};\n\t\t}\n\n\t\tif( !created ){\n\t\t\tcreate(output);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Re-renders the selected item lists.\n\t */\n\trefreshItems() {\n\t\tvar self = this;\n\t\tself.lastQuery = null;\n\n\t\tif (self.isSetup) {\n\t\t\tself.addItems(self.items);\n\t\t}\n\n\t\tself.updateOriginalInput();\n\t\tself.refreshState();\n\t}\n\n\t/**\n\t * Updates all state-dependent attributes\n\t * and CSS classes.\n\t */\n\trefreshState() {\n\t\tconst self     = this;\n\n\t\tself.refreshValidityState();\n\n\t\tconst isFull\t= self.isFull();\n\t\tconst isLocked\t= self.isLocked;\n\n\t\tself.wrapper.classList.toggle('rtl',self.rtl);\n\n\n\t\tconst wrap_classList = self.wrapper.classList;\n\n\t\twrap_classList.toggle('focus', self.isFocused)\n\t\twrap_classList.toggle('disabled', self.isDisabled)\n\t\twrap_classList.toggle('required', self.isRequired)\n\t\twrap_classList.toggle('invalid', !self.isValid)\n\t\twrap_classList.toggle('locked', isLocked)\n\t\twrap_classList.toggle('full', isFull)\n\t\twrap_classList.toggle('input-active', self.isFocused && !self.isInputHidden)\n\t\twrap_classList.toggle('dropdown-active', self.isOpen)\n\t\twrap_classList.toggle('has-options', isEmptyObject(self.options) )\n\t\twrap_classList.toggle('has-items', self.items.length > 0);\n\n\t}\n\n\n\t/**\n\t * Update the `required` attribute of both input and control input.\n\t *\n\t * The `required` property needs to be activated on the control input\n\t * for the error to be displayed at the right place. `required` also\n\t * needs to be temporarily deactivated on the input since the input is\n\t * hidden and can't show errors.\n\t */\n\trefreshValidityState() {\n\t\tvar self = this;\n\n\t\tif( !self.input.validity ){\n\t\t\treturn;\n\t\t}\n\n\t\tself.isValid = self.input.validity.valid;\n\t\tself.isInvalid = !self.isValid;\n\t}\n\n\t/**\n\t * Determines whether or not more items can be added\n\t * to the control without exceeding the user-defined maximum.\n\t *\n\t * @returns {boolean}\n\t */\n\tisFull() {\n\t\treturn this.settings.maxItems !== null && this.items.length >= this.settings.maxItems;\n\t}\n\n\t/**\n\t * Refreshes the original <select> or <input>\n\t * element to reflect the current state.\n\t *\n\t */\n\tupdateOriginalInput( opts:TomArgObject = {} ){\n\t\tconst self = this;\n\t\tvar option, label;\n\n\t\tconst empty_option = self.input.querySelector('option[value=\"\"]') as HTMLOptionElement;\n\n\t\tif( self.is_select_tag ){\n\n\t\t\tconst selected:HTMLOptionElement[]\t\t= [];\n\t\t\tconst has_selected:number\t\t\t\t= self.input.querySelectorAll('option:checked').length;\n\n\t\t\tfunction AddSelected(option_el:HTMLOptionElement|null, value:string, label:string):HTMLOptionElement{\n\n\t\t\t\tif( !option_el ){\n\t\t\t\t\toption_el = getDom('<option value=\"' + escape_html(value) + '\">' + escape_html(label) + '</option>') as HTMLOptionElement;\n\t\t\t\t}\n\n\t\t\t\t// don't move empty option from top of list\n\t\t\t\t// fixes bug in firefox https://bugzilla.mozilla.org/show_bug.cgi?id=1725293\n\t\t\t\tif( option_el != empty_option ){\n\t\t\t\t\tself.input.append(option_el);\n\t\t\t\t}\n\n\t\t\t\tselected.push(option_el);\n\n\t\t\t\t// marking empty option as selected can break validation\n\t\t\t\t// fixes https://github.com/orchidjs/tom-select/issues/303\n\t\t\t\tif( option_el != empty_option || has_selected > 0 ){\n\t\t\t\t\toption_el.selected = true;\n\t\t\t\t}\n\n\t\t\t\treturn option_el;\n\t\t\t}\n\n\t\t\t// unselect all selected options\n\t\t\tself.input.querySelectorAll('option:checked').forEach((option_el:Element) => {\n\t\t\t\t(<HTMLOptionElement>option_el).selected = false;\n\t\t\t});\n\n\n\t\t\t// nothing selected?\n\t\t\tif( self.items.length == 0 && self.settings.mode == 'single' ){\n\n\t\t\t\tAddSelected(empty_option, \"\", \"\");\n\n\t\t\t// order selected <option> tags for values in self.items\n\t\t\t}else{\n\n\t\t\t\tself.items.forEach((value)=>{\n\t\t\t\t\toption\t\t\t= self.options[value]!;\n\t\t\t\t\tlabel\t\t\t= option[self.settings.labelField] || '';\n\n\t\t\t\t\tif( selected.includes(option.$option) ){\n\t\t\t\t\t\tconst reuse_opt = self.input.querySelector(`option[value=\"${addSlashes(value)}\"]:not(:checked)`) as HTMLOptionElement;\n\t\t\t\t\t\tAddSelected(reuse_opt, value, label);\n\t\t\t\t\t}else{\n\t\t\t\t\t\toption.$option\t= AddSelected(option.$option, value, label);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t}\n\n\t\t} else {\n\t\t\tself.input.value = self.getValue() as string;\n\t\t}\n\n\t\tif (self.isSetup) {\n\t\t\tif (!opts.silent) {\n\t\t\t\tself.trigger('change', self.getValue() );\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Shows the autocomplete dropdown containing\n\t * the available options.\n\t */\n\topen() {\n\t\tvar self = this;\n\n\t\tif (self.isLocked || self.isOpen || (self.settings.mode === 'multi' && self.isFull())) return;\n\t\tself.isOpen = true;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'true'});\n\t\tself.refreshState();\n\t\tapplyCSS(self.dropdown,{visibility: 'hidden', display: 'block'});\n\t\tself.positionDropdown();\n\t\tapplyCSS(self.dropdown,{visibility: 'visible', display: 'block'});\n\t\tself.focus();\n\t\tself.trigger('dropdown_open', self.dropdown);\n\t}\n\n\t/**\n\t * Closes the autocomplete dropdown menu.\n\t */\n\tclose(setTextboxValue=true) {\n\t\tvar self = this;\n\t\tvar trigger = self.isOpen;\n\n\t\tif( setTextboxValue ){\n\n\t\t\t// before blur() to prevent form onchange event\n\t\t\tself.setTextboxValue();\n\n\t\t\tif (self.settings.mode === 'single' && self.items.length) {\n\t\t\t\tself.hideInput();\n\t\t\t}\n\t\t}\n\n\t\tself.isOpen = false;\n\t\tsetAttr(self.focus_node,{'aria-expanded': 'false'});\n\t\tapplyCSS(self.dropdown,{display: 'none'});\n\t\tif( self.settings.hideSelected ){\n\t\t\tself.clearActiveOption();\n\t\t}\n\t\tself.refreshState();\n\n\t\tif (trigger) self.trigger('dropdown_close', self.dropdown);\n\t}\n\n\t/**\n\t * Calculates and applies the appropriate\n\t * position of the dropdown if dropdownParent = 'body'.\n\t * Otherwise, position is determined by css\n\t */\n\tpositionDropdown(){\n\n\t\tif( this.settings.dropdownParent !== 'body' ){\n\t\t\treturn;\n\t\t}\n\n\t\tvar context\t\t\t= this.control;\n\t\tvar rect\t\t\t= context.getBoundingClientRect();\n\t\tvar top\t\t\t\t= context.offsetHeight + rect.top  + window.scrollY;\n\t\tvar left\t\t\t= rect.left + window.scrollX;\n\n\n\t\tapplyCSS(this.dropdown,{\n\t\t\twidth : rect.width + 'px',\n\t\t\ttop   : top + 'px',\n\t\t\tleft  : left + 'px'\n\t\t});\n\n\t}\n\n\t/**\n\t * Resets / clears all selected items\n\t * from the control.\n\t *\n\t */\n\tclear(silent?:boolean) {\n\t\tvar self = this;\n\n\t\tif (!self.items.length) return;\n\n\t\tvar items = self.controlChildren();\n\t\titerate(items,(item:TomItem)=>{\n\t\t\tself.removeItem(item,true);\n\t\t});\n\n\t\tself.showInput();\n\t\tif( !silent ) self.updateOriginalInput();\n\t\tself.trigger('clear');\n\t}\n\n\t/**\n\t * A helper method for inserting an element\n\t * at the current caret position.\n\t *\n\t */\n\tinsertAtCaret(el:HTMLElement) {\n\t\tconst self\t\t= this;\n\t\tconst caret\t\t= self.caretPos;\n\t\tconst target\t= self.control;\n\n\t\ttarget.insertBefore(el, target.children[caret] || null);\n\t\tself.setCaret(caret + 1);\n\t}\n\n\t/**\n\t * Removes the current selected item(s).\n\t *\n\t */\n\tdeleteSelection(e:KeyboardEvent):boolean {\n\t\tvar direction, selection, caret, tail;\n\t\tvar self = this;\n\n\t\tdirection = (e && e.keyCode === constants.KEY_BACKSPACE) ? -1 : 1;\n\t\tselection = getSelection(self.control_input);\n\n\n\t\t// determine items that will be removed\n\t\tconst rm_items:TomItem[]\t= [];\n\n\t\tif (self.activeItems.length) {\n\n\t\t\ttail = getTail(self.activeItems, direction);\n\t\t\tcaret = nodeIndex(tail);\n\n\t\t\tif (direction > 0) { caret++; }\n\n\t\t\titerate(self.activeItems, (item:TomItem) => rm_items.push(item) );\n\n\t\t} else if ((self.isFocused || self.settings.mode === 'single') && self.items.length) {\n\t\t\tconst items = self.controlChildren();\n\t\t\tlet rm_item;\n\t\t\tif( direction < 0 && selection.start === 0 && selection.length === 0 ){\n\t\t\t\trm_item = items[self.caretPos - 1];\n\n\t\t\t}else if( direction > 0 && selection.start === self.inputValue().length ){\n\t\t\t\trm_item = items[self.caretPos];\n\t\t\t}\n\n\t\t\tif( rm_item !== undefined ){\n\t\t\t\trm_items.push( rm_item );\n\t\t\t}\n\t\t}\n\n\t\tif( !self.shouldDelete(rm_items,e) ){\n\t\t\treturn false;\n\t\t}\n\n\t\tpreventDefault(e,true);\n\n\t\t// perform removal\n\t\tif (typeof caret !== 'undefined') {\n\t\t\tself.setCaret(caret);\n\t\t}\n\n\t\twhile( rm_items.length ){\n\t\t\tself.removeItem(rm_items.pop());\n\t\t}\n\n\t\tself.showInput();\n\t\tself.positionDropdown();\n\t\tself.refreshOptions(false);\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Return true if the items should be deleted\n\t */\n\tshouldDelete(items:TomItem[],evt:MouseEvent|KeyboardEvent){\n\n\t\tconst values = items.map(item => item.dataset.value);\n\n\t\t// allow the callback to abort\n\t\tif( !values.length || (typeof this.settings.onDelete === 'function' && this.settings.onDelete(values,evt) === false) ){\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t}\n\n\t/**\n\t * Selects the previous / next item (depending on the `direction` argument).\n\t *\n\t * > 0 - right\n\t * < 0 - left\n\t *\n\t */\n\tadvanceSelection(direction:number, e?:MouseEvent|KeyboardEvent) {\n\t\tvar last_active, adjacent, self = this;\n\n\t\tif (self.rtl) direction *= -1;\n\t\tif( self.inputValue().length ) return;\n\n\n\t\t// add or remove to active items\n\t\tif( isKeyDown(constants.KEY_SHORTCUT,e) || isKeyDown('shiftKey',e) ){\n\n\t\t\tlast_active\t\t\t= self.getLastActive(direction);\n\t\t\tif( last_active ){\n\n\t\t\t\tif( !last_active.classList.contains('active') ){\n\t\t\t\t\tadjacent\t\t\t= last_active;\n\t\t\t\t}else{\n\t\t\t\t\tadjacent\t\t\t= self.getAdjacent(last_active,direction,'item');\n\t\t\t\t}\n\n\t\t\t// if no active item, get items adjacent to the control input\n\t\t\t}else if( direction > 0 ){\n\t\t\t\tadjacent\t\t\t= self.control_input.nextElementSibling;\n\t\t\t}else{\n\t\t\t\tadjacent\t\t\t= self.control_input.previousElementSibling;\n\t\t\t}\n\n\n\t\t\tif( adjacent ){\n\t\t\t\tif( adjacent.classList.contains('active') ){\n\t\t\t\t\tself.removeActiveItem(last_active);\n\t\t\t\t}\n\t\t\t\tself.setActiveItemClass(adjacent); // mark as last_active !! after removeActiveItem() on last_active\n\t\t\t}\n\n\t\t// move caret to the left or right\n\t\t}else{\n\t\t\tself.moveCaret(direction);\n\t\t}\n\t}\n\n\tmoveCaret(direction:number){}\n\n\t/**\n\t * Get the last active item\n\t *\n\t */\n\tgetLastActive(direction?:number){\n\n\t\tlet last_active = this.control.querySelector('.last-active');\n\t\tif( last_active ){\n\t\t\treturn last_active;\n\t\t}\n\n\n\t\tvar result = this.control.querySelectorAll('.active');\n\t\tif( result ){\n\t\t\treturn getTail(result,direction);\n\t\t}\n\t}\n\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tsetCaret(new_pos:number) {\n\t\tthis.caretPos = this.items.length;\n\t}\n\n\t/**\n\t * Return list of item dom elements\n\t *\n\t */\n\tcontrolChildren():TomItem[]{\n\t\treturn Array.from( this.control.querySelectorAll('[data-ts-item]') ) as TomItem[];\n\t}\n\n\t/**\n\t * Disables user input on the control. Used while\n\t * items are being asynchronously created.\n\t */\n\tlock() {\n\t\tthis.isLocked = true;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Re-enables user input on the control.\n\t */\n\tunlock() {\n\t\tthis.isLocked = false;\n\t\tthis.refreshState();\n\t}\n\n\t/**\n\t * Disables user input on the control completely.\n\t * While disabled, it cannot receive focus.\n\t */\n\tdisable() {\n\t\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= true;\n\t\tself.control_input.disabled\t\t= true;\n\t\tself.focus_node.tabIndex\t\t= -1;\n\t\tself.isDisabled\t\t\t\t\t= true;\n\t\tthis.close();\n\t\tself.lock();\n\t}\n\n\t/**\n\t * Enables the control so that it can respond\n\t * to focus and user input.\n\t */\n\tenable() {\n\t\tvar self = this;\n\t\tself.input.disabled\t\t\t\t= false;\n\t\tself.control_input.disabled\t\t= false;\n\t\tself.focus_node.tabIndex\t\t= self.tabIndex;\n\t\tself.isDisabled\t\t\t\t\t= false;\n\t\tself.unlock();\n\t}\n\n\t/**\n\t * Completely destroys the control and\n\t * unbinds all event listeners so that it can\n\t * be garbage collected.\n\t */\n\tdestroy() {\n\t\tvar self = this;\n\t\tvar revertSettings = self.revertSettings;\n\n\t\tself.trigger('destroy');\n\t\tself.off();\n\t\tself.wrapper.remove();\n\t\tself.dropdown.remove();\n\n\t\tself.input.innerHTML = revertSettings.innerHTML;\n\t\tself.input.tabIndex = revertSettings.tabIndex;\n\n\t\tremoveClasses(self.input,'tomselected','ts-hidden-accessible');\n\n\t\tself._destroy();\n\n\t\tdelete self.input.tomselect;\n\t}\n\n\t/**\n\t * A helper method for rendering \"item\" and\n\t * \"option\" templates, given the data.\n\t *\n\t */\n\trender( templateName:TomTemplateNames, data?:any ):null|HTMLElement{\n\t\tvar id, html;\n\t\tconst self = this;\n\n\t\tif( typeof this.settings.render[templateName] !== 'function' ){\n\t\t\treturn null;\n\t\t}\n\n\t\t// render markup\n\t\thtml = self.settings.render[templateName].call(this, data, escape_html);\n\n\t\tif( !html ){\n\t\t\treturn null;\n\t\t}\n\n\t\thtml = getDom( html );\n\n\t\t// add mandatory attributes\n\t\tif (templateName === 'option' || templateName === 'option_create') {\n\n\t\t\tif( data[self.settings.disabledField] ){\n\t\t\t\tsetAttr(html,{'aria-disabled':'true'});\n\t\t\t}else{\n\t\t\t\tsetAttr(html,{'data-selectable': ''});\n\t\t\t}\n\n\t\t}else if (templateName === 'optgroup') {\n\t\t\tid = data.group[self.settings.optgroupValueField];\n\t\t\tsetAttr(html,{'data-group': id});\n\t\t\tif(data.group[self.settings.disabledField]) {\n\t\t\t\tsetAttr(html,{'data-disabled': ''});\n\t\t\t}\n\t\t}\n\n\t\tif (templateName === 'option' || templateName === 'item') {\n\t\t\tconst value\t= get_hash(data[self.settings.valueField]);\n\t\t\tsetAttr(html,{'data-value': value });\n\n\n\t\t\t// make sure we have some classes if a template is overwritten\n\t\t\tif( templateName === 'item' ){\n\t\t\t\taddClasses(html,self.settings.itemClass);\n\t\t\t\tsetAttr(html,{'data-ts-item':''});\n\t\t\t}else{\n\t\t\t\taddClasses(html,self.settings.optionClass);\n\t\t\t\tsetAttr(html,{\n\t\t\t\t\trole:'option',\n\t\t\t\t\tid:data.$id\n\t\t\t\t});\n\n\t\t\t\t// update cache\n\t\t\t\tdata.$div = html;\n\t\t\t\tself.options[value] = data;\n\t\t\t}\n\n\n\t\t}\n\n\t\treturn html;\n\n\t}\n\n\n\t/**\n\t * Type guarded rendering\n\t *\n\t */\n\t_render( templateName:TomTemplateNames, data?:any ):HTMLElement{\n\t\tconst html = this.render(templateName, data);\n\n\t\tif( html == null ){\n\t\t\tthrow 'HTMLElement expected';\n\t\t}\n\t\treturn html;\n\t}\n\n\n\t/**\n\t * Clears the render cache for a template. If\n\t * no template is given, clears all render\n\t * caches.\n\t *\n\t */\n\tclearCache():void{\n\n\t\titerate(this.options, (option:TomOption)=>{\n\t\t\tif( option.$div ){\n\t\t\t\toption.$div.remove();\n\t\t\t\tdelete option.$div;\n\t\t\t}\n\t\t});\n\n\t}\n\n\t/**\n\t * Removes a value from item and option caches\n\t *\n\t */\n\tuncacheValue(value:string){\n\n\t\tconst option_el\t\t\t= this.getOption(value);\n\t\tif( option_el ) option_el.remove();\n\n\t}\n\n\t/**\n\t * Determines whether or not to display the\n\t * create item prompt, given a user input.\n\t *\n\t */\n\tcanCreate( input:string ):boolean {\n\t\treturn this.settings.create && (input.length > 0) && (this.settings.createFilter as TomCreateFilter ).call(this, input);\n\t}\n\n\n\t/**\n\t * Wraps this.`method` so that `new_fn` can be invoked 'before', 'after', or 'instead' of the original method\n\t *\n\t * this.hook('instead','onKeyDown',function( arg1, arg2 ...){\n\t *\n\t * });\n\t */\n\thook( when:string, method:string, new_fn:any ){\n\t\tvar self = this;\n\t\tvar orig_method = self[method];\n\n\n\t\tself[method] = function(){\n\t\t\tvar result, result_new;\n\n\t\t\tif( when === 'after' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\tresult_new = new_fn.apply(self, arguments );\n\n\t\t\tif( when === 'instead' ){\n\t\t\t\treturn result_new;\n\t\t\t}\n\n\t\t\tif( when === 'before' ){\n\t\t\t\tresult = orig_method.apply(self, arguments);\n\t\t\t}\n\n\t\t\treturn result;\n\t\t};\n\n\t}\n\n};\n", "/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { nodeIndex, removeClasses } from '../../vanilla';\n\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\n\t/**\n\t * Moves the caret to the specified index.\n\t *\n\t * The input must be moved by leaving it in place and moving the\n\t * siblings, due to the fact that focus cannot be restored once lost\n\t * on mobile webkit devices\n\t *\n\t */\n\tself.hook('instead','setCaret',(new_pos:number) => {\n\n\t\tif( self.settings.mode === 'single' || !self.control.contains(self.control_input) ) {\n\t\t\tnew_pos = self.items.length;\n\t\t} else {\n\t\t\tnew_pos = Math.max(0, Math.min(self.items.length, new_pos));\n\n\t\t\tif( new_pos != self.caretPos && !self.isPending ){\n\n\t\t\t\tself.controlChildren().forEach((child,j) => {\n\t\t\t\t\tif( j < new_pos ){\n\t\t\t\t\t\tself.control_input.insertAdjacentElement('beforebegin', child );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.control.appendChild( child );\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tself.caretPos = new_pos;\n\t});\n\n\tself.hook('instead','moveCaret',(direction:number) => {\n\n\t\tif( !self.isFocused ) return;\n\n\t\t// move caret before or after selected items\n\t\tconst last_active\t\t= self.getLastActive(direction);\n\t\tif( last_active ){\n\t\t\tconst idx = nodeIndex(last_active);\n\t\t\tself.setCaret(direction > 0 ? idx + 1: idx);\n\t\t\tself.setActiveItem();\n\t\t\tremoveClasses(last_active as HTMLElement,'last-active');\n\n\t\t// move caret left or right of current position\n\t\t}else{\n\t\t\tself.setCaret(self.caretPos + direction);\n\n\t\t}\n\n\t});\n\n};\n", "/**\n * Plugin: \"dropdown_input\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport * as constants from '../../constants';\nimport { getDom, addClasses } from '../../vanilla';\nimport { addEvent, preventDefault } from '../../utils';\n\n\nexport default function(this:TomSelect) {\n\tconst self = this;\n\n\tself.settings.shouldOpen = true; // make sure the input is shown even if there are no options to display in the dropdown\n\n\tself.hook('before','setup',()=>{\n\t\tself.focus_node\t\t= self.control;\n\n\t\taddClasses( self.control_input, 'dropdown-input');\n\n\t \tconst div = getDom('<div class=\"dropdown-input-wrap\">');\n\t\tdiv.append(self.control_input);\n\t\tself.dropdown.insertBefore(div, self.dropdown.firstChild);\n\n\t\t// set a placeholder in the select control\n\t\tconst placeholder = getDom('<input class=\"items-placeholder\" tabindex=\"-1\" />') as HTMLInputElement;\n\t\tplaceholder.placeholder = self.settings.placeholder ||'';\n\t\tself.control.append(placeholder);\n\n\t});\n\n\n\tself.on('initialize',()=>{\n\n\t\t// set tabIndex on control to -1, otherwise [shift+tab] will put focus right back on control_input\n\t\tself.control_input.addEventListener('keydown',(evt:KeyboardEvent) =>{\n\t\t//addEvent(self.control_input,'keydown' as const,(evt:KeyboardEvent) =>{\n\t\t\tswitch( evt.keyCode ){\n\t\t\t\tcase constants.KEY_ESC:\n\t\t\t\t\tif (self.isOpen) {\n\t\t\t\t\t\tpreventDefault(evt,true);\n\t\t\t\t\t\tself.close();\n\t\t\t\t\t}\n\t\t\t\t\tself.clearActiveItems();\n\t\t\t\treturn;\n\t\t\t\tcase constants.KEY_TAB:\n\t\t\t\t\tself.focus_node.tabIndex = -1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\treturn self.onKeyDown.call(self,evt);\n\t\t});\n\n\t\tself.on('blur',()=>{\n\t\t\tself.focus_node.tabIndex = self.isDisabled ? -1 : self.tabIndex;\n\t\t});\n\n\n\t\t// give the control_input focus when the dropdown is open\n\t\tself.on('dropdown_open',() =>{\n\t\t\tself.control_input.focus();\n\t\t});\n\n\t\t// prevent onBlur from closing when focus is on the control_input\n\t\tconst orig_onBlur = self.onBlur;\n\t\tself.hook('instead','onBlur',(evt?:FocusEvent)=>{\n\t\t\tif( evt && evt.relatedTarget == self.control_input ) return;\n\t\t\treturn orig_onBlur.call(self);\n\t\t});\n\n\t\taddEvent(self.control_input,'blur', () => self.onBlur() );\n\n\t\t// return focus to control to allow further keyboard input\n\t\tself.hook('before','close',() =>{\n\n\t\t\tif( !self.isOpen ) return;\n\t\t\tself.focus_node.focus({preventScroll: true});\n\t\t});\n\n\t});\n\n};\n", "/**\n * Plugin: \"input_autogrow\" (Tom Select)\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\n\nexport default function(this:TomSelect) {\n\tvar self = this;\n\tvar orig_deleteSelection = self.deleteSelection;\n\n\tthis.hook('instead','deleteSelection',(evt:KeyboardEvent) => {\n\n\t\tif( self.activeItems.length ){\n\t\t\treturn orig_deleteSelection.call(self, evt);\n\t\t}\n\n\t\treturn false;\n\t});\n\n};\n", "/**\n * Plugin: \"remove_button\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\n\nimport TomSelect from '../../tom-select';\nimport { getDom } from '../../vanilla';\nimport { escape_html, preventDefault, addEvent } from '../../utils';\nimport { TomOption, TomItem } from '../../types/index';\nimport { RBOptions } from './types';\n\nexport default function(this:TomSelect, userOptions:RBOptions) {\n\n\tconst options = Object.assign({\n\t\t\tlabel     : '&times;',\n\t\t\ttitle     : 'Remove',\n\t\t\tclassName : 'remove',\n\t\t\tappend    : true\n\t\t}, userOptions);\n\n\n\t//options.className = 'remove-single';\n\tvar self\t\t\t= this;\n\n\t// override the render method to add remove button to each item\n\tif( !options.append ){\n\t\treturn;\n\t}\n\n\tvar html = '<a href=\"javascript:void(0)\" class=\"' + options.className + '\" tabindex=\"-1\" title=\"' + escape_html(options.title) + '\">' + options.label + '</a>';\n\n\tself.hook('after','setupTemplates',() => {\n\n\t\tvar orig_render_item = self.settings.render.item;\n\n\t\tself.settings.render.item = (data:TomOption, escape:typeof escape_html) => {\n\n\t\t\tvar item = getDom(orig_render_item.call(self, data, escape)) as TomItem;\n\n\t\t\tvar close_button = getDom(html);\n\t\t\titem.appendChild(close_button);\n\n\t\t\taddEvent(close_button,'mousedown',(evt) => {\n\t\t\t\tpreventDefault(evt,true);\n\t\t\t});\n\n\t\t\taddEvent(close_button,'click',(evt) => {\n\n\t\t\t\t// propagating will trigger the dropdown to show for single mode\n\t\t\t\tpreventDefault(evt,true);\n\n\t\t\t\tif( self.isLocked ) return;\n\t\t\t\tif( !self.shouldDelete([item],evt as MouseEvent) ) return;\n\n\t\t\t\tself.removeItem(item);\n\t\t\t\tself.refreshOptions(false);\n\t\t\t\tself.inputState();\n\t\t\t});\n\n\t\t\treturn item;\n\t\t};\n\n\t});\n\n\n};\n", "/**\n * Plugin: \"restore_on_backspace\" (Tom Select)\n * Copyright (c) contributors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this\n * file except in compliance with the License. You may obtain a copy of the License at:\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF\n * ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n *\n */\nimport TomSelect from '../../tom-select';\nimport { TomOption } from '../../types/index';\n\ntype TPluginOptions = {\n\ttext?:(option:TomOption)=>string,\n};\n\nexport default function(this:TomSelect, userOptions:TPluginOptions) {\n\tconst self = this;\n\n\tconst options = Object.assign({\n\t\ttext: (option:TomOption) => {\n\t\t\treturn option[self.settings.labelField];\n\t\t}\n\t},userOptions);\n\n\tself.on('item_remove',function(value:string){\n\t\tif( !self.isFocused ){\n\t\t\treturn;\n\t\t}\n\n\t\tif( self.control_input.value.trim() === '' ){\n\t\t\tvar option = self.options[value];\n\t\t\tif( option ){\n\t\t\t\tself.setTextboxValue(options.text.call(self, option));\n\t\t\t}\n\t\t}\n\t});\n\n};\n", "import TomSelect from './tom-select';\n\nimport caret_position from './plugins/caret_position/plugin';\nimport dropdown_input from './plugins/dropdown_input/plugin';\nimport no_backspace_delete from './plugins/no_backspace_delete/plugin';\nimport remove_button from './plugins/remove_button/plugin';\nimport restore_on_backspace from './plugins/restore_on_backspace/plugin';\n\nTomSelect.define('caret_position', caret_position);\nTomSelect.define('dropdown_input', dropdown_input);\nTomSelect.define('no_backspace_delete', no_backspace_delete);\nTomSelect.define('remove_button', remove_button);\nTomSelect.define('restore_on_backspace', restore_on_backspace);\n\nexport default TomSelect;\n", "import { Controller } from \"@hotwired/stimulus\";\nimport TomSelect from \"tom-select/dist/esm/tom-select.popular\";\n\n// Connects to data-controller=\"ts--select\"\nexport default class extends Controller {\n  connect() {\n    let plugins = {};\n    if (\n      this.element.dataset.clearable &&\n      this.element.dataset.clearable === \"true\"\n    ) {\n      plugins = {\n        remove_button: {\n          title: \"Retirer ce choix\",\n        },\n      };\n    }\n\n    new TomSelect(this.element, {\n      allowEmptyOption: true,\n      plugins,\n      render: {\n        option: function (data, escape) {\n          if (data.initials && data.initials.length > 0) {\n            let image;\n            if (data.image && data.image.length > 0) {\n              image = `<img src=\"${data.image}\" width=\"32\" height=\"32\" class=\"rounded-circle img-fluid me-3\" />`;\n            } else {\n              image = `<div class=\"profile-image me-3\" style=\"width: 32px; height: 32px;\"><p class=\"fw-bold mb-0\">${data.initials}</p></div>`;\n            }\n            return (\n              \"<div class='d-flex align-items-center'>\" +\n              image +\n              escape(data.text) +\n              \"</div>\"\n            );\n          } else if (data.icon) {\n            return (\n              `\n                <div class='d-flex align-items-center justify-content-center' >\n                  ${data.icon} ${data.notitle === 'false' ? escape(data.text) : ''}\n                </div>\n              `\n            );\n          } else {\n            return \"<div>\" + escape(data.text) + \"</div>\";\n          }\n        },\n        item: function (data, escape) {\n          if (data.icon) {\n            return (\n              \"<div class='d-flex align-items-center'>\" +\n              data.icon +\n              escape(data.text) +\n              \"</div>\"\n            );\n          } else {\n            return \"<div>\" + escape(data.text) + \"</div>\";\n          }\n        },\n        no_results: function (data, escape) {\n          return '<div class=\"no-results\">Aucun r\u00E9sultat trouv\u00E9</div>';\n        },\n      },\n    });\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\"\nimport TomSelect from \"tom-select/dist/esm/tom-select.popular\"\n\n// Connect to input with data-controller=\"tags\"\nexport default class extends Controller {\n\n  static values = {\n    url: String\n  }\n\n  connect() {\n    this.input = new TomSelect(this.element, {\n      create: true,\n      valueField: \"name\",\n      labelField: \"name\",\n      searchField: \"name\",\n      plugins: {\n        'remove_button': {\n          'title': 'Retirer ce choix'\n        }\n      },\n      render: {\n        option_create: ( data, escape ) => {\n          return '<div class=\"create\">Ajouter <strong>' + escape(data.input) + '</strong>&hellip;</div>';\n        },\n        no_results: ( data, escape ) => {\n          return '<div class=\"no-results\">Aucun r\u00E9sultat trouv\u00E9</div>';\n        },\n      },\n      onItemAdd: (value, item) => {\n        this.input.setTextboxValue('')\t\n      },\n      load: (query, callback) => {\n        const csrfToken = document.querySelector(\"[name='csrf-token']\").content\n        fetch(this.urlValue, {\n          method: \"POST\",\n          headers: {\n            \"Accept\": \"application/json\",\n            \"X-CSRF-Token\": csrfToken,\n            \"Content-Type\": \"application/json\",\n          },\n          body: JSON.stringify({\n            search: encodeURIComponent(query),\n          }),\n        })\n\t\t\t\t.then(response => response.json())\n\t\t\t\t.then(json => {\n\t\t\t\t\tcallback(json.items)\n\t\t\t\t}).catch(() => {\n\t\t\t\t\tcallback()\n\t\t\t\t})\n      }\n    })\n  }\n\n  disconnect() {\n    this.input.destroy()\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport TomSelect from \"tom-select/dist/esm/tom-select.popular\";\n\n// Connect to input with data-controller=\"document-file\"\nexport default class extends Controller {\n  static values = {\n    url: String,\n    value: String,\n  };\n\n  static targets = [\n    \"input\",\n    \"fileInput\",\n    \"titleInput\",\n    \"dateInput\",\n    \"hiddenFieldsContainer\",\n    \"hiddenFieldContainer\",\n  ];\n\n  connect() {\n    this.isEditMode = window.location.pathname.endsWith(\"edit\");\n    this.input = new TomSelect(this.inputTarget, {\n      create: false,\n      maxItems: this.inputTarget.multiple ? null : 1,\n      preload: true,\n      placeholder:\n        \"Ajouter une document de votre biblioth\u00E8que patrimoniale\",\n      valueField: \"id\",\n      labelField: \"name\",\n      searchField: \"name\",\n      plugins: {\n        remove_button: {\n          title: \"Retirer ce choix\",\n        },\n      },\n      render: {\n        item: function (data, escape) {\n          return (\n            '<div class=\"item\" data-created-at=\"' +\n            escape(data.createdAt) +\n            '\">' +\n            escape(data.name) +\n            \"</div>\"\n          );\n        },\n        option_create: (data, escape) => {\n          return (\n            '<div class=\"create\">Ajouter <strong>' +\n            escape(data.input) +\n            \"</strong>&hellip;</div>\"\n          );\n        },\n        no_results: (data, escape) => {\n          return '<div class=\"no-results\">Aucun r\u00E9sultat trouv\u00E9</div>';\n        },\n      },\n      load: (query, callback) => {\n        const csrfToken = document.querySelector(\"[name='csrf-token']\").content;\n        fetch(this.urlValue, {\n          method: \"POST\",\n          headers: {\n            Accept: \"application/json\",\n            \"X-CSRF-Token\": csrfToken,\n            \"Content-Type\": \"application/json\",\n          },\n          body: JSON.stringify({\n            search: encodeURIComponent(query),\n          }),\n        })\n          .then((response) => response.json())\n          .then((json) => {\n            callback(json.items);\n          })\n          .catch(() => {\n            callback();\n          });\n      },\n    });\n\n    this.input.on(\"change\", (value) => this.handleSelectChange(value));\n    this.input.on(\"item_add\", (value, item) =>\n      this.handleSelectItemAdd(value, item)\n    );\n    this.input.on(\"item_remove\", (value, $item) =>\n      this.handleSelectItemRemove(value, $item)\n    );\n  }\n\n  handleSelectChange(value) {\n    if (value) {\n      this.fileInputTarget.value = null;\n      this.valueValue = value;\n    }\n  }\n\n  handleSelectItemAdd(value, item) {\n    if (this.hasDateInputTarget) {\n      if (!this.dateInputTarget.value) {\n        this.dateInputTarget._flatpickr.setDate(item.dataset.createdAt);\n      }\n    }\n    if (this.hasTitleInputTarget) {\n      if (!this.titleInputTarget.value) {\n        this.titleInputTarget.value = item.textContent.slice(0, -1);\n      }\n    }\n    if (value && !this.isEditMode) {\n      if (this.hasHiddenFieldsContainerTarget) {\n        this.hiddenFieldsContainerTarget.classList.remove(\"invisible\");\n        this.hiddenFieldsContainerTarget.classList.add(\"show\");\n        this.hiddenFieldContainerTarget.classList.remove(\"show\");\n        this.hiddenFieldContainerTarget.classList.add(\"invisible\");\n      }\n    }\n  }\n\n  handleSelectItemRemove(value, item) {\n    if (!this.isEditMode) {\n      if (this.hasHiddenFieldsContainerTarget) {\n        this.hiddenFieldsContainerTarget.classList.remove(\"show\");\n        this.hiddenFieldsContainerTarget.classList.add(\"invisible\");\n      }\n      if (this.hasTitleInputTarget) {\n        this.titleInputTarget.value = \"\";\n      }\n      if (this.hasDateInputTarget) {\n        this.dateInputTarget.value = \"\";\n      }\n    }\n  }\n\n  handleChange(event) {\n\n    console.log(this.hasTitleInputTarget);\n\n    this.input.clear();\n    if (this.hasTitleInputTarget) {\n      if (!this.titleInputTarget.value || this.titleInputTarget.value !== event.target.files[0].name) {\n        this.titleInputTarget.value = event.target.files[0].name;\n      }\n    }\n    if (!this.isEditMode) {\n      if (event.target.files[0]) {\n        if (this.hasHiddenFieldsContainerTarget) {\n          this.hiddenFieldsContainerTarget.classList.remove(\"invisible\");\n          this.hiddenFieldsContainerTarget.classList.add(\"show\");\n          this.hiddenFieldContainerTarget.classList.remove(\"invisible\");\n          this.hiddenFieldContainerTarget.classList.add(\"show\");\n        }\n      } else {\n        if (this.hasHiddenFieldsContainerTarget) {\n          this.hiddenFieldsContainerTarget.classList.remove(\"show\");\n          this.hiddenFieldsContainerTarget.classList.add(\"invisible\");\n        }\n        this.titleInputTarget.value = \"\";\n        if (this.hasDateInputTarget) {\n          this.dateInputTarget.value = \"\";\n        }\n        this.hiddenFieldContainerTarget.classList.remove(\"show\");\n        this.hiddenFieldContainerTarget.classList.add(\"invisible\");\n      }\n    }\n  }\n\n  disconnect() {\n    this.input.destroy();\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\nimport TomSelect from \"tom-select/dist/esm/tom-select.popular\";\n\n// Connects to data-controller=\"ts--user-select\"\nexport default class extends Controller {\n  static targets = [\"content\", \"editContent\", \"select\", \"emptyState\"];\n  static values = {\n    editMode: { type: Boolean, default: false },\n  };\n\n  connect() {\n    this.select = new TomSelect(this.selectTarget, {\n      plugins: {\n        remove_button: {\n          title: \"Retirer ce choix\",\n        },\n      },\n      render: {\n        option: function (data, escape) {\n          if (data.initials && data.initials.length > 0) {\n            let image;\n            if (data.image && data.image.length > 0) {\n              image = `<img src=\"${data.image}\" width=\"32\" height=\"32\" class=\"rounded-circle img-fluid me-3\" />`;\n            } else {\n              image = `<div class=\"profile-image me-3\" style=\"width: 32px; height: 32px;\"><p class=\"fw-bold mb-0\">${data.initials}</p></div>`;\n            }\n            return (\n              \"<div class='d-flex align-items-center'>\" +\n              image +\n              escape(data.text) +\n              \"</div>\"\n            );\n          } else {\n            return \"<div>\" + escape(data.text) + \"</div>\";\n          }\n        },\n        no_results: function (data, escape) {\n          return '<div class=\"no-results\">Aucun r\u00E9sultat trouv\u00E9</div>';\n        },\n      },\n    });\n\n    this.select.on(\"blur\", () => {\n      if (this.editModeValue) {\n        this.toggle();\n      }\n    });\n\n    this.select.on(\"item_add\", (value) => {\n      if (this.hasEmptyStateTarget) {\n        this.emptyStateTarget.classList.add(\"d-none\");\n      }\n      const optionHtml = this.select.getOption(value);\n      const tmpOption = optionHtml.cloneNode(true);\n      tmpOption.querySelectorAll(\"*\").forEach(function (el) {\n        el.remove(); // remove the children\n      });\n      const profileImage = optionHtml\n        .querySelector(\".profile-image, img\")\n        .cloneNode(true);\n      profileImage.setAttribute(\"data-value\", value);\n      profileImage.setAttribute(\"data-bs-placement\", \"top\");\n      profileImage.setAttribute(\"data-bs-toggle\", \"tooltip\");\n      profileImage.setAttribute(\n        \"data-bs-original-title\",\n        tmpOption.textContent\n      );\n      profileImage.classList.remove(\"me-3\");\n      profileImage.classList.add(\"me-2\");\n      this.contentTarget\n        .querySelector(\".form-control\")\n        .appendChild(profileImage);\n      new bootstrap.Tooltip(profileImage);\n      this.toggle();\n    });\n\n    this.select.on(\"item_remove\", (value) => {\n      this.contentTarget.querySelector(`[data-value=\"${value}\"]`).remove();\n      if (this.contentTarget.querySelectorAll(\"[data-value]\").length === 0) {\n        if (this.hasEmptyStateTarget) {\n          this.emptyStateTarget.classList.remove(\"d-none\");\n        }\n      }\n      this.toggle();\n    });\n  }\n\n  toggle() {\n    this.contentTarget.classList.toggle(\"d-none\");\n    this.editContentTarget.classList.toggle(\"d-none\");\n    if (!this.editModeValue) {\n      this.select.open();\n    }\n    this.editModeValue = !this.editModeValue;\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\"editor\"];\n\n  connect() {\n    this.initialized = false;\n    addEventListener(\"trix-before-initialize\", () => {\n      this.addIndentButtonConfig();\n    });\n    addEventListener(\"trix-initialize\", (event) => {\n      if (!this.initialized) {\n        const { toolbarElement } = event.target;\n        toolbarElement.querySelector(\"[data-trix-attribute='quote']\").remove();\n        toolbarElement.querySelector(\"[data-trix-attribute='code']\").remove();\n        toolbarElement.querySelector(\"[data-trix-action='decreaseNestingLevel']\").remove();\n        toolbarElement.querySelector(\"[data-trix-action='increaseNestingLevel']\").remove();\n        const h1Button = toolbarElement.querySelector(\n          \"[data-trix-attribute=heading1]\"\n        );\n        var h2ButtonHTML = `<button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-2\" data-trix-attribute=\"heading2\" title=\"Heading 2\" tabindex=\"-1\" data-trix-active=\"\"><strong>H2</strong></button>`;\n        var h3ButtonHTML = `<button type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-heading-3\" data-trix-attribute=\"heading3\" title=\"Heading 3\" tabindex=\"-1\" data-trix-active=\"\"><strong>H3</strong></button>`;\n        // var todoListButtonHTML = `<button type=\"button\" class=\"trix-button\" data-trix-attribute=\"todoList\" title=\"Todo list\" tabindex=\"-1\" data-trix-active=\"\"><strong>Todo</strong></button>`;\n        // h1Button.insertAdjacentHTML(\"afterend\", todoListButtonHTML);\n        h1Button.insertAdjacentHTML(\"afterend\", h3ButtonHTML);\n        h1Button.insertAdjacentHTML(\"afterend\", h2ButtonHTML);\n\n        const increaseLevelButton = toolbarElement.querySelector(\n          \"[data-trix-attribute=number]\"\n        );\n        var increaseIndentButtonHTML = `<button data-action=\"trix-default-toolbar#indentIncreased\" type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-indent-increase\" data-trix-action=\"increaseIndent\" title=\"Increase indent\" tabindex=\"-1\" data-trix-active=\"\"><strong>Increase indent</strong></button>`;\n        var decreaseIndentButtonHTML = `<button data-action=\"trix-default-toolbar#indentDecreased\" type=\"button\" class=\"trix-button trix-button--icon trix-button--icon-indent-decrease\" data-trix-action=\"decreaseIndent\" title=\"Decrease indent\" tabindex=\"-1\" data-trix-active=\"\"><strong>Decrease indent</strong></button>`;\n        increaseLevelButton.insertAdjacentHTML(\n          \"afterend\",\n          decreaseIndentButtonHTML\n        );\n        increaseLevelButton.insertAdjacentHTML(\n          \"afterend\",\n          increaseIndentButtonHTML\n        );\n\n        this.initialized = true;\n      }\n    });\n  }\n\n  addIndentButtonConfig() {\n    Trix.config.textAttributes.indent = {\n      styleProperty: \"marginLeft\",\n      inheritable: true,\n    };\n  }\n\n  indentIncreased() {\n    this.editorTarget.editor.activateAttribute(\"indent\", \"32px\");\n  }\n\n  indentDecreased() {\n    this.editorTarget.editor.deactivateAttribute(\"indent\");\n  }\n\n  disconnect() {\n    const toolbarElement = this.element.querySelector(\"trix-toolbar\");\n    toolbarElement.querySelector(\"[data-trix-attribute='heading2']\").remove();\n    toolbarElement.querySelector(\"[data-trix-attribute='heading3']\").remove();\n    // toolbarElement.querySelector(\"[data-trix-attribute='todoList']\").remove();\n  }\n}\n", "export var HOOKS = [\n    \"onChange\",\n    \"onClose\",\n    \"onDayCreate\",\n    \"onDestroy\",\n    \"onKeyDown\",\n    \"onMonthChange\",\n    \"onOpen\",\n    \"onParseConfig\",\n    \"onReady\",\n    \"onValueUpdate\",\n    \"onYearChange\",\n    \"onPreCalendarPosition\",\n];\nexport var defaults = {\n    _disable: [],\n    allowInput: false,\n    allowInvalidPreload: false,\n    altFormat: \"F j, Y\",\n    altInput: false,\n    altInputClass: \"form-control input\",\n    animate: typeof window === \"object\" &&\n        window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n    ariaDateFormat: \"F j, Y\",\n    autoFillDefaultTime: true,\n    clickOpens: true,\n    closeOnSelect: true,\n    conjunction: \", \",\n    dateFormat: \"Y-m-d\",\n    defaultHour: 12,\n    defaultMinute: 0,\n    defaultSeconds: 0,\n    disable: [],\n    disableMobile: false,\n    enableSeconds: false,\n    enableTime: false,\n    errorHandler: function (err) {\n        return typeof console !== \"undefined\" && console.warn(err);\n    },\n    getWeek: function (givenDate) {\n        var date = new Date(givenDate.getTime());\n        date.setHours(0, 0, 0, 0);\n        date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n        var week1 = new Date(date.getFullYear(), 0, 4);\n        return (1 +\n            Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n                3 +\n                ((week1.getDay() + 6) % 7)) /\n                7));\n    },\n    hourIncrement: 1,\n    ignoredFocusElements: [],\n    inline: false,\n    locale: \"default\",\n    minuteIncrement: 5,\n    mode: \"single\",\n    monthSelectorType: \"dropdown\",\n    nextArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>\",\n    noCalendar: false,\n    now: new Date(),\n    onChange: [],\n    onClose: [],\n    onDayCreate: [],\n    onDestroy: [],\n    onKeyDown: [],\n    onMonthChange: [],\n    onOpen: [],\n    onParseConfig: [],\n    onReady: [],\n    onValueUpdate: [],\n    onYearChange: [],\n    onPreCalendarPosition: [],\n    plugins: [],\n    position: \"auto\",\n    positionElement: undefined,\n    prevArrow: \"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>\",\n    shorthandCurrentMonth: false,\n    showMonths: 1,\n    static: false,\n    time_24hr: false,\n    weekNumbers: false,\n    wrap: false,\n};\n", "export var english = {\n    weekdays: {\n        shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n        longhand: [\n            \"Sunday\",\n            \"Monday\",\n            \"Tuesday\",\n            \"Wednesday\",\n            \"Thursday\",\n            \"Friday\",\n            \"Saturday\",\n        ],\n    },\n    months: {\n        shorthand: [\n            \"Jan\",\n            \"Feb\",\n            \"Mar\",\n            \"Apr\",\n            \"May\",\n            \"Jun\",\n            \"Jul\",\n            \"Aug\",\n            \"Sep\",\n            \"Oct\",\n            \"Nov\",\n            \"Dec\",\n        ],\n        longhand: [\n            \"January\",\n            \"February\",\n            \"March\",\n            \"April\",\n            \"May\",\n            \"June\",\n            \"July\",\n            \"August\",\n            \"September\",\n            \"October\",\n            \"November\",\n            \"December\",\n        ],\n    },\n    daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n    firstDayOfWeek: 0,\n    ordinal: function (nth) {\n        var s = nth % 100;\n        if (s > 3 && s < 21)\n            return \"th\";\n        switch (s % 10) {\n            case 1:\n                return \"st\";\n            case 2:\n                return \"nd\";\n            case 3:\n                return \"rd\";\n            default:\n                return \"th\";\n        }\n    },\n    rangeSeparator: \" to \",\n    weekAbbreviation: \"Wk\",\n    scrollTitle: \"Scroll to increment\",\n    toggleTitle: \"Click to toggle\",\n    amPM: [\"AM\", \"PM\"],\n    yearAriaLabel: \"Year\",\n    monthAriaLabel: \"Month\",\n    hourAriaLabel: \"Hour\",\n    minuteAriaLabel: \"Minute\",\n    time_24hr: false,\n};\nexport default english;\n", "export var pad = function (number, length) {\n    if (length === void 0) { length = 2; }\n    return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n    var t;\n    return function () {\n        var _this = this;\n        var args = arguments;\n        clearTimeout(t);\n        t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n    };\n}\nexport var arrayify = function (obj) {\n    return obj instanceof Array ? obj : [obj];\n};\n", "export function toggleClass(elem, className, bool) {\n    if (bool === true)\n        return elem.classList.add(className);\n    elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n    var e = window.document.createElement(tag);\n    className = className || \"\";\n    content = content || \"\";\n    e.className = className;\n    if (content !== undefined)\n        e.textContent = content;\n    return e;\n}\nexport function clearNode(node) {\n    while (node.firstChild)\n        node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n    if (condition(node))\n        return node;\n    else if (node.parentNode)\n        return findParent(node.parentNode, condition);\n    return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n    var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n    if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n        numInput.type = \"number\";\n    }\n    else {\n        numInput.type = \"text\";\n        numInput.pattern = \"\\\\d*\";\n    }\n    if (opts !== undefined)\n        for (var key in opts)\n            numInput.setAttribute(key, opts[key]);\n    wrapper.appendChild(numInput);\n    wrapper.appendChild(arrowUp);\n    wrapper.appendChild(arrowDown);\n    return wrapper;\n}\nexport function getEventTarget(event) {\n    try {\n        if (typeof event.composedPath === \"function\") {\n            var path = event.composedPath();\n            return path[0];\n        }\n        return event.target;\n    }\n    catch (error) {\n        return event.target;\n    }\n}\n", "import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n    D: doNothing,\n    F: function (dateObj, monthName, locale) {\n        dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n    },\n    G: function (dateObj, hour) {\n        dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n    },\n    H: function (dateObj, hour) {\n        dateObj.setHours(parseFloat(hour));\n    },\n    J: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    K: function (dateObj, amPM, locale) {\n        dateObj.setHours((dateObj.getHours() % 12) +\n            12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n    },\n    M: function (dateObj, shortMonth, locale) {\n        dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n    },\n    S: function (dateObj, seconds) {\n        dateObj.setSeconds(parseFloat(seconds));\n    },\n    U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n    W: function (dateObj, weekNum, locale) {\n        var weekNumber = parseInt(weekNum);\n        var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n        date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n        return date;\n    },\n    Y: function (dateObj, year) {\n        dateObj.setFullYear(parseFloat(year));\n    },\n    Z: function (_, ISODate) { return new Date(ISODate); },\n    d: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    h: function (dateObj, hour) {\n        dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n    },\n    i: function (dateObj, minutes) {\n        dateObj.setMinutes(parseFloat(minutes));\n    },\n    j: function (dateObj, day) {\n        dateObj.setDate(parseFloat(day));\n    },\n    l: doNothing,\n    m: function (dateObj, month) {\n        dateObj.setMonth(parseFloat(month) - 1);\n    },\n    n: function (dateObj, month) {\n        dateObj.setMonth(parseFloat(month) - 1);\n    },\n    s: function (dateObj, seconds) {\n        dateObj.setSeconds(parseFloat(seconds));\n    },\n    u: function (_, unixMillSeconds) {\n        return new Date(parseFloat(unixMillSeconds));\n    },\n    w: doNothing,\n    y: function (dateObj, year) {\n        dateObj.setFullYear(2000 + parseFloat(year));\n    },\n};\nexport var tokenRegex = {\n    D: \"\",\n    F: \"\",\n    G: \"(\\\\d\\\\d|\\\\d)\",\n    H: \"(\\\\d\\\\d|\\\\d)\",\n    J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n    K: \"\",\n    M: \"\",\n    S: \"(\\\\d\\\\d|\\\\d)\",\n    U: \"(.+)\",\n    W: \"(\\\\d\\\\d|\\\\d)\",\n    Y: \"(\\\\d{4})\",\n    Z: \"(.+)\",\n    d: \"(\\\\d\\\\d|\\\\d)\",\n    h: \"(\\\\d\\\\d|\\\\d)\",\n    i: \"(\\\\d\\\\d|\\\\d)\",\n    j: \"(\\\\d\\\\d|\\\\d)\",\n    l: \"\",\n    m: \"(\\\\d\\\\d|\\\\d)\",\n    n: \"(\\\\d\\\\d|\\\\d)\",\n    s: \"(\\\\d\\\\d|\\\\d)\",\n    u: \"(.+)\",\n    w: \"(\\\\d\\\\d|\\\\d)\",\n    y: \"(\\\\d{2})\",\n};\nexport var formats = {\n    Z: function (date) { return date.toISOString(); },\n    D: function (date, locale, options) {\n        return locale.weekdays.shorthand[formats.w(date, locale, options)];\n    },\n    F: function (date, locale, options) {\n        return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n    },\n    G: function (date, locale, options) {\n        return pad(formats.h(date, locale, options));\n    },\n    H: function (date) { return pad(date.getHours()); },\n    J: function (date, locale) {\n        return locale.ordinal !== undefined\n            ? date.getDate() + locale.ordinal(date.getDate())\n            : date.getDate();\n    },\n    K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n    M: function (date, locale) {\n        return monthToStr(date.getMonth(), true, locale);\n    },\n    S: function (date) { return pad(date.getSeconds()); },\n    U: function (date) { return date.getTime() / 1000; },\n    W: function (date, _, options) {\n        return options.getWeek(date);\n    },\n    Y: function (date) { return pad(date.getFullYear(), 4); },\n    d: function (date) { return pad(date.getDate()); },\n    h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n    i: function (date) { return pad(date.getMinutes()); },\n    j: function (date) { return date.getDate(); },\n    l: function (date, locale) {\n        return locale.weekdays.longhand[date.getDay()];\n    },\n    m: function (date) { return pad(date.getMonth() + 1); },\n    n: function (date) { return date.getMonth() + 1; },\n    s: function (date) { return date.getSeconds(); },\n    u: function (date) { return date.getTime(); },\n    w: function (date) { return date.getDay(); },\n    y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n", "import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n    var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n    return function (dateObj, frmt, overrideLocale) {\n        var locale = overrideLocale || l10n;\n        if (config.formatDate !== undefined && !isMobile) {\n            return config.formatDate(dateObj, frmt, locale);\n        }\n        return frmt\n            .split(\"\")\n            .map(function (c, i, arr) {\n            return formats[c] && arr[i - 1] !== \"\\\\\"\n                ? formats[c](dateObj, locale, config)\n                : c !== \"\\\\\"\n                    ? c\n                    : \"\";\n        })\n            .join(\"\");\n    };\n};\nexport var createDateParser = function (_a) {\n    var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n    return function (date, givenFormat, timeless, customLocale) {\n        if (date !== 0 && !date)\n            return undefined;\n        var locale = customLocale || l10n;\n        var parsedDate;\n        var dateOrig = date;\n        if (date instanceof Date)\n            parsedDate = new Date(date.getTime());\n        else if (typeof date !== \"string\" &&\n            date.toFixed !== undefined)\n            parsedDate = new Date(date);\n        else if (typeof date === \"string\") {\n            var format = givenFormat || (config || defaults).dateFormat;\n            var datestr = String(date).trim();\n            if (datestr === \"today\") {\n                parsedDate = new Date();\n                timeless = true;\n            }\n            else if (config && config.parseDate) {\n                parsedDate = config.parseDate(date, format);\n            }\n            else if (/Z$/.test(datestr) ||\n                /GMT$/.test(datestr)) {\n                parsedDate = new Date(date);\n            }\n            else {\n                var matched = void 0, ops = [];\n                for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n                    var token = format[i];\n                    var isBackSlash = token === \"\\\\\";\n                    var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n                    if (tokenRegex[token] && !escaped) {\n                        regexStr += tokenRegex[token];\n                        var match = new RegExp(regexStr).exec(date);\n                        if (match && (matched = true)) {\n                            ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n                                fn: revFormat[token],\n                                val: match[++matchIndex],\n                            });\n                        }\n                    }\n                    else if (!isBackSlash)\n                        regexStr += \".\";\n                }\n                parsedDate =\n                    !config || !config.noCalendar\n                        ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n                        : new Date(new Date().setHours(0, 0, 0, 0));\n                ops.forEach(function (_a) {\n                    var fn = _a.fn, val = _a.val;\n                    return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n                });\n                parsedDate = matched ? parsedDate : undefined;\n            }\n        }\n        if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n            config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n            return undefined;\n        }\n        if (timeless === true)\n            parsedDate.setHours(0, 0, 0, 0);\n        return parsedDate;\n    };\n};\nexport function compareDates(date1, date2, timeless) {\n    if (timeless === void 0) { timeless = true; }\n    if (timeless !== false) {\n        return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n            new Date(date2.getTime()).setHours(0, 0, 0, 0));\n    }\n    return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n    return (3600 * (date1.getHours() - date2.getHours()) +\n        60 * (date1.getMinutes() - date2.getMinutes()) +\n        date1.getSeconds() -\n        date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n    return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n    return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n    var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n    return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n    DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n    var hours = config.defaultHour;\n    var minutes = config.defaultMinute;\n    var seconds = config.defaultSeconds;\n    if (config.minDate !== undefined) {\n        var minHour = config.minDate.getHours();\n        var minMinutes = config.minDate.getMinutes();\n        var minSeconds = config.minDate.getSeconds();\n        if (hours < minHour) {\n            hours = minHour;\n        }\n        if (hours === minHour && minutes < minMinutes) {\n            minutes = minMinutes;\n        }\n        if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n            seconds = config.minDate.getSeconds();\n    }\n    if (config.maxDate !== undefined) {\n        var maxHr = config.maxDate.getHours();\n        var maxMinutes = config.maxDate.getMinutes();\n        hours = Math.min(hours, maxHr);\n        if (hours === maxHr)\n            minutes = Math.min(maxMinutes, minutes);\n        if (hours === maxHr && minutes === maxMinutes)\n            seconds = config.maxDate.getSeconds();\n    }\n    return { hours: hours, minutes: minutes, seconds: seconds };\n}\n", "\"use strict\";\nif (typeof Object.assign !== \"function\") {\n    Object.assign = function (target) {\n        var args = [];\n        for (var _i = 1; _i < arguments.length; _i++) {\n            args[_i - 1] = arguments[_i];\n        }\n        if (!target) {\n            throw TypeError(\"Cannot convert undefined or null to object\");\n        }\n        var _loop_1 = function (source) {\n            if (source) {\n                Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n            }\n        };\n        for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n            var source = args_1[_a];\n            _loop_1(source);\n        }\n        return target;\n    };\n}\n", "var __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n    for (var r = Array(s), k = 0, i = 0; i < il; i++)\n        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n            r[k] = a[j];\n    return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n    var self = {\n        config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n        l10n: English,\n    };\n    self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n    self._handlers = [];\n    self.pluginElements = [];\n    self.loadedPlugins = [];\n    self._bind = bind;\n    self._setHoursFromDate = setHoursFromDate;\n    self._positionCalendar = positionCalendar;\n    self.changeMonth = changeMonth;\n    self.changeYear = changeYear;\n    self.clear = clear;\n    self.close = close;\n    self.onMouseOver = onMouseOver;\n    self._createElement = createElement;\n    self.createDay = createDay;\n    self.destroy = destroy;\n    self.isEnabled = isEnabled;\n    self.jumpToDate = jumpToDate;\n    self.updateValue = updateValue;\n    self.open = open;\n    self.redraw = redraw;\n    self.set = set;\n    self.setDate = setDate;\n    self.toggle = toggle;\n    function setupHelperFunctions() {\n        self.utils = {\n            getDaysInMonth: function (month, yr) {\n                if (month === void 0) { month = self.currentMonth; }\n                if (yr === void 0) { yr = self.currentYear; }\n                if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n                    return 29;\n                return self.l10n.daysInMonth[month];\n            },\n        };\n    }\n    function init() {\n        self.element = self.input = element;\n        self.isOpen = false;\n        parseConfig();\n        setupLocale();\n        setupInputs();\n        setupDates();\n        setupHelperFunctions();\n        if (!self.isMobile)\n            build();\n        bindEvents();\n        if (self.selectedDates.length || self.config.noCalendar) {\n            if (self.config.enableTime) {\n                setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n            }\n            updateValue(false);\n        }\n        setCalendarWidth();\n        var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n        if (!self.isMobile && isSafari) {\n            positionCalendar();\n        }\n        triggerEvent(\"onReady\");\n    }\n    function getClosestActiveElement() {\n        var _a;\n        return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n            .activeElement || document.activeElement);\n    }\n    function bindToInstance(fn) {\n        return fn.bind(self);\n    }\n    function setCalendarWidth() {\n        var config = self.config;\n        if (config.weekNumbers === false && config.showMonths === 1) {\n            return;\n        }\n        else if (config.noCalendar !== true) {\n            window.requestAnimationFrame(function () {\n                if (self.calendarContainer !== undefined) {\n                    self.calendarContainer.style.visibility = \"hidden\";\n                    self.calendarContainer.style.display = \"block\";\n                }\n                if (self.daysContainer !== undefined) {\n                    var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n                    self.daysContainer.style.width = daysWidth + \"px\";\n                    self.calendarContainer.style.width =\n                        daysWidth +\n                            (self.weekWrapper !== undefined\n                                ? self.weekWrapper.offsetWidth\n                                : 0) +\n                            \"px\";\n                    self.calendarContainer.style.removeProperty(\"visibility\");\n                    self.calendarContainer.style.removeProperty(\"display\");\n                }\n            });\n        }\n    }\n    function updateTime(e) {\n        if (self.selectedDates.length === 0) {\n            var defaultDate = self.config.minDate === undefined ||\n                compareDates(new Date(), self.config.minDate) >= 0\n                ? new Date()\n                : new Date(self.config.minDate.getTime());\n            var defaults = getDefaultHours(self.config);\n            defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n            self.selectedDates = [defaultDate];\n            self.latestSelectedDateObj = defaultDate;\n        }\n        if (e !== undefined && e.type !== \"blur\") {\n            timeWrapper(e);\n        }\n        var prevValue = self._input.value;\n        setHoursFromInputs();\n        updateValue();\n        if (self._input.value !== prevValue) {\n            self._debouncedChange();\n        }\n    }\n    function ampm2military(hour, amPM) {\n        return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n    }\n    function military2ampm(hour) {\n        switch (hour % 24) {\n            case 0:\n            case 12:\n                return 12;\n            default:\n                return hour % 12;\n        }\n    }\n    function setHoursFromInputs() {\n        if (self.hourElement === undefined || self.minuteElement === undefined)\n            return;\n        var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n            ? (parseInt(self.secondElement.value, 10) || 0) % 60\n            : 0;\n        if (self.amPM !== undefined) {\n            hours = ampm2military(hours, self.amPM.textContent);\n        }\n        var limitMinHours = self.config.minTime !== undefined ||\n            (self.config.minDate &&\n                self.minDateHasTime &&\n                self.latestSelectedDateObj &&\n                compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n                    0);\n        var limitMaxHours = self.config.maxTime !== undefined ||\n            (self.config.maxDate &&\n                self.maxDateHasTime &&\n                self.latestSelectedDateObj &&\n                compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n                    0);\n        if (self.config.maxTime !== undefined &&\n            self.config.minTime !== undefined &&\n            self.config.minTime > self.config.maxTime) {\n            var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n            var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n            var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n            if (currentTime > maxBound && currentTime < minBound) {\n                var result = parseSeconds(minBound);\n                hours = result[0];\n                minutes = result[1];\n                seconds = result[2];\n            }\n        }\n        else {\n            if (limitMaxHours) {\n                var maxTime = self.config.maxTime !== undefined\n                    ? self.config.maxTime\n                    : self.config.maxDate;\n                hours = Math.min(hours, maxTime.getHours());\n                if (hours === maxTime.getHours())\n                    minutes = Math.min(minutes, maxTime.getMinutes());\n                if (minutes === maxTime.getMinutes())\n                    seconds = Math.min(seconds, maxTime.getSeconds());\n            }\n            if (limitMinHours) {\n                var minTime = self.config.minTime !== undefined\n                    ? self.config.minTime\n                    : self.config.minDate;\n                hours = Math.max(hours, minTime.getHours());\n                if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n                    minutes = minTime.getMinutes();\n                if (minutes === minTime.getMinutes())\n                    seconds = Math.max(seconds, minTime.getSeconds());\n            }\n        }\n        setHours(hours, minutes, seconds);\n    }\n    function setHoursFromDate(dateObj) {\n        var date = dateObj || self.latestSelectedDateObj;\n        if (date && date instanceof Date) {\n            setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n        }\n    }\n    function setHours(hours, minutes, seconds) {\n        if (self.latestSelectedDateObj !== undefined) {\n            self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n        }\n        if (!self.hourElement || !self.minuteElement || self.isMobile)\n            return;\n        self.hourElement.value = pad(!self.config.time_24hr\n            ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n            : hours);\n        self.minuteElement.value = pad(minutes);\n        if (self.amPM !== undefined)\n            self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n        if (self.secondElement !== undefined)\n            self.secondElement.value = pad(seconds);\n    }\n    function onYearInput(event) {\n        var eventTarget = getEventTarget(event);\n        var year = parseInt(eventTarget.value) + (event.delta || 0);\n        if (year / 1000 > 1 ||\n            (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n            changeYear(year);\n        }\n    }\n    function bind(element, event, handler, options) {\n        if (event instanceof Array)\n            return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n        if (element instanceof Array)\n            return element.forEach(function (el) { return bind(el, event, handler, options); });\n        element.addEventListener(event, handler, options);\n        self._handlers.push({\n            remove: function () { return element.removeEventListener(event, handler, options); },\n        });\n    }\n    function triggerChange() {\n        triggerEvent(\"onChange\");\n    }\n    function bindEvents() {\n        if (self.config.wrap) {\n            [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n                Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n                    return bind(el, \"click\", self[evt]);\n                });\n            });\n        }\n        if (self.isMobile) {\n            setupMobile();\n            return;\n        }\n        var debouncedResize = debounce(onResize, 50);\n        self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n        if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n            bind(self.daysContainer, \"mouseover\", function (e) {\n                if (self.config.mode === \"range\")\n                    onMouseOver(getEventTarget(e));\n            });\n        bind(self._input, \"keydown\", onKeyDown);\n        if (self.calendarContainer !== undefined) {\n            bind(self.calendarContainer, \"keydown\", onKeyDown);\n        }\n        if (!self.config.inline && !self.config.static)\n            bind(window, \"resize\", debouncedResize);\n        if (window.ontouchstart !== undefined)\n            bind(window.document, \"touchstart\", documentClick);\n        else\n            bind(window.document, \"mousedown\", documentClick);\n        bind(window.document, \"focus\", documentClick, { capture: true });\n        if (self.config.clickOpens === true) {\n            bind(self._input, \"focus\", self.open);\n            bind(self._input, \"click\", self.open);\n        }\n        if (self.daysContainer !== undefined) {\n            bind(self.monthNav, \"click\", onMonthNavClick);\n            bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n            bind(self.daysContainer, \"click\", selectDate);\n        }\n        if (self.timeContainer !== undefined &&\n            self.minuteElement !== undefined &&\n            self.hourElement !== undefined) {\n            var selText = function (e) {\n                return getEventTarget(e).select();\n            };\n            bind(self.timeContainer, [\"increment\"], updateTime);\n            bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n            bind(self.timeContainer, \"click\", timeIncrement);\n            bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n            if (self.secondElement !== undefined)\n                bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n            if (self.amPM !== undefined) {\n                bind(self.amPM, \"click\", function (e) {\n                    updateTime(e);\n                });\n            }\n        }\n        if (self.config.allowInput) {\n            bind(self._input, \"blur\", onBlur);\n        }\n    }\n    function jumpToDate(jumpDate, triggerChange) {\n        var jumpTo = jumpDate !== undefined\n            ? self.parseDate(jumpDate)\n            : self.latestSelectedDateObj ||\n                (self.config.minDate && self.config.minDate > self.now\n                    ? self.config.minDate\n                    : self.config.maxDate && self.config.maxDate < self.now\n                        ? self.config.maxDate\n                        : self.now);\n        var oldYear = self.currentYear;\n        var oldMonth = self.currentMonth;\n        try {\n            if (jumpTo !== undefined) {\n                self.currentYear = jumpTo.getFullYear();\n                self.currentMonth = jumpTo.getMonth();\n            }\n        }\n        catch (e) {\n            e.message = \"Invalid date supplied: \" + jumpTo;\n            self.config.errorHandler(e);\n        }\n        if (triggerChange && self.currentYear !== oldYear) {\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        if (triggerChange &&\n            (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n            triggerEvent(\"onMonthChange\");\n        }\n        self.redraw();\n    }\n    function timeIncrement(e) {\n        var eventTarget = getEventTarget(e);\n        if (~eventTarget.className.indexOf(\"arrow\"))\n            incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n    }\n    function incrementNumInput(e, delta, inputElem) {\n        var target = e && getEventTarget(e);\n        var input = inputElem ||\n            (target && target.parentNode && target.parentNode.firstChild);\n        var event = createEvent(\"increment\");\n        event.delta = delta;\n        input && input.dispatchEvent(event);\n    }\n    function build() {\n        var fragment = window.document.createDocumentFragment();\n        self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n        self.calendarContainer.tabIndex = -1;\n        if (!self.config.noCalendar) {\n            fragment.appendChild(buildMonthNav());\n            self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n            if (self.config.weekNumbers) {\n                var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n                self.innerContainer.appendChild(weekWrapper);\n                self.weekNumbers = weekNumbers;\n                self.weekWrapper = weekWrapper;\n            }\n            self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n            self.rContainer.appendChild(buildWeekdays());\n            if (!self.daysContainer) {\n                self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n                self.daysContainer.tabIndex = -1;\n            }\n            buildDays();\n            self.rContainer.appendChild(self.daysContainer);\n            self.innerContainer.appendChild(self.rContainer);\n            fragment.appendChild(self.innerContainer);\n        }\n        if (self.config.enableTime) {\n            fragment.appendChild(buildTime());\n        }\n        toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n        toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n        toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n        self.calendarContainer.appendChild(fragment);\n        var customAppend = self.config.appendTo !== undefined &&\n            self.config.appendTo.nodeType !== undefined;\n        if (self.config.inline || self.config.static) {\n            self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n            if (self.config.inline) {\n                if (!customAppend && self.element.parentNode)\n                    self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n                else if (self.config.appendTo !== undefined)\n                    self.config.appendTo.appendChild(self.calendarContainer);\n            }\n            if (self.config.static) {\n                var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n                if (self.element.parentNode)\n                    self.element.parentNode.insertBefore(wrapper, self.element);\n                wrapper.appendChild(self.element);\n                if (self.altInput)\n                    wrapper.appendChild(self.altInput);\n                wrapper.appendChild(self.calendarContainer);\n            }\n        }\n        if (!self.config.static && !self.config.inline)\n            (self.config.appendTo !== undefined\n                ? self.config.appendTo\n                : window.document.body).appendChild(self.calendarContainer);\n    }\n    function createDay(className, date, _dayNumber, i) {\n        var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n        dayElement.dateObj = date;\n        dayElement.$i = i;\n        dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n        if (className.indexOf(\"hidden\") === -1 &&\n            compareDates(date, self.now) === 0) {\n            self.todayDateElem = dayElement;\n            dayElement.classList.add(\"today\");\n            dayElement.setAttribute(\"aria-current\", \"date\");\n        }\n        if (dateIsEnabled) {\n            dayElement.tabIndex = -1;\n            if (isDateSelected(date)) {\n                dayElement.classList.add(\"selected\");\n                self.selectedDateElem = dayElement;\n                if (self.config.mode === \"range\") {\n                    toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n                        compareDates(date, self.selectedDates[0], true) === 0);\n                    toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n                        compareDates(date, self.selectedDates[1], true) === 0);\n                    if (className === \"nextMonthDay\")\n                        dayElement.classList.add(\"inRange\");\n                }\n            }\n        }\n        else {\n            dayElement.classList.add(\"flatpickr-disabled\");\n        }\n        if (self.config.mode === \"range\") {\n            if (isDateInRange(date) && !isDateSelected(date))\n                dayElement.classList.add(\"inRange\");\n        }\n        if (self.weekNumbers &&\n            self.config.showMonths === 1 &&\n            className !== \"prevMonthDay\" &&\n            i % 7 === 6) {\n            self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"<span class='flatpickr-day'>\" + self.config.getWeek(date) + \"</span>\");\n        }\n        triggerEvent(\"onDayCreate\", dayElement);\n        return dayElement;\n    }\n    function focusOnDayElem(targetNode) {\n        targetNode.focus();\n        if (self.config.mode === \"range\")\n            onMouseOver(targetNode);\n    }\n    function getFirstAvailableDay(delta) {\n        var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n        var endMonth = delta > 0 ? self.config.showMonths : -1;\n        for (var m = startMonth; m != endMonth; m += delta) {\n            var month = self.daysContainer.children[m];\n            var startIndex = delta > 0 ? 0 : month.children.length - 1;\n            var endIndex = delta > 0 ? month.children.length : -1;\n            for (var i = startIndex; i != endIndex; i += delta) {\n                var c = month.children[i];\n                if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n                    return c;\n            }\n        }\n        return undefined;\n    }\n    function getNextAvailableDay(current, delta) {\n        var givenMonth = current.className.indexOf(\"Month\") === -1\n            ? current.dateObj.getMonth()\n            : self.currentMonth;\n        var endMonth = delta > 0 ? self.config.showMonths : -1;\n        var loopDelta = delta > 0 ? 1 : -1;\n        for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n            var month = self.daysContainer.children[m];\n            var startIndex = givenMonth - self.currentMonth === m\n                ? current.$i + delta\n                : delta < 0\n                    ? month.children.length - 1\n                    : 0;\n            var numMonthDays = month.children.length;\n            for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n                var c = month.children[i];\n                if (c.className.indexOf(\"hidden\") === -1 &&\n                    isEnabled(c.dateObj) &&\n                    Math.abs(current.$i - i) >= Math.abs(delta))\n                    return focusOnDayElem(c);\n            }\n        }\n        self.changeMonth(loopDelta);\n        focusOnDay(getFirstAvailableDay(loopDelta), 0);\n        return undefined;\n    }\n    function focusOnDay(current, offset) {\n        var activeElement = getClosestActiveElement();\n        var dayFocused = isInView(activeElement || document.body);\n        var startElem = current !== undefined\n            ? current\n            : dayFocused\n                ? activeElement\n                : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n                    ? self.selectedDateElem\n                    : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n                        ? self.todayDateElem\n                        : getFirstAvailableDay(offset > 0 ? 1 : -1);\n        if (startElem === undefined) {\n            self._input.focus();\n        }\n        else if (!dayFocused) {\n            focusOnDayElem(startElem);\n        }\n        else {\n            getNextAvailableDay(startElem, offset);\n        }\n    }\n    function buildMonthDays(year, month) {\n        var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n        var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n        var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n        var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n        for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n        }\n        for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n        }\n        for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n            (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n            days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n        }\n        var dayContainer = createElement(\"div\", \"dayContainer\");\n        dayContainer.appendChild(days);\n        return dayContainer;\n    }\n    function buildDays() {\n        if (self.daysContainer === undefined) {\n            return;\n        }\n        clearNode(self.daysContainer);\n        if (self.weekNumbers)\n            clearNode(self.weekNumbers);\n        var frag = document.createDocumentFragment();\n        for (var i = 0; i < self.config.showMonths; i++) {\n            var d = new Date(self.currentYear, self.currentMonth, 1);\n            d.setMonth(self.currentMonth + i);\n            frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n        }\n        self.daysContainer.appendChild(frag);\n        self.days = self.daysContainer.firstChild;\n        if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n            onMouseOver();\n        }\n    }\n    function buildMonthSwitch() {\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType !== \"dropdown\")\n            return;\n        var shouldBuildMonth = function (month) {\n            if (self.config.minDate !== undefined &&\n                self.currentYear === self.config.minDate.getFullYear() &&\n                month < self.config.minDate.getMonth()) {\n                return false;\n            }\n            return !(self.config.maxDate !== undefined &&\n                self.currentYear === self.config.maxDate.getFullYear() &&\n                month > self.config.maxDate.getMonth());\n        };\n        self.monthsDropdownContainer.tabIndex = -1;\n        self.monthsDropdownContainer.innerHTML = \"\";\n        for (var i = 0; i < 12; i++) {\n            if (!shouldBuildMonth(i))\n                continue;\n            var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n            month.value = new Date(self.currentYear, i).getMonth().toString();\n            month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n            month.tabIndex = -1;\n            if (self.currentMonth === i) {\n                month.selected = true;\n            }\n            self.monthsDropdownContainer.appendChild(month);\n        }\n    }\n    function buildMonth() {\n        var container = createElement(\"div\", \"flatpickr-month\");\n        var monthNavFragment = window.document.createDocumentFragment();\n        var monthElement;\n        if (self.config.showMonths > 1 ||\n            self.config.monthSelectorType === \"static\") {\n            monthElement = createElement(\"span\", \"cur-month\");\n        }\n        else {\n            self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n            self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n            bind(self.monthsDropdownContainer, \"change\", function (e) {\n                var target = getEventTarget(e);\n                var selectedMonth = parseInt(target.value, 10);\n                self.changeMonth(selectedMonth - self.currentMonth);\n                triggerEvent(\"onMonthChange\");\n            });\n            buildMonthSwitch();\n            monthElement = self.monthsDropdownContainer;\n        }\n        var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n        var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n        yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n        if (self.config.minDate) {\n            yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n        }\n        if (self.config.maxDate) {\n            yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n            yearElement.disabled =\n                !!self.config.minDate &&\n                    self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n        }\n        var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n        currentMonth.appendChild(monthElement);\n        currentMonth.appendChild(yearInput);\n        monthNavFragment.appendChild(currentMonth);\n        container.appendChild(monthNavFragment);\n        return {\n            container: container,\n            yearElement: yearElement,\n            monthElement: monthElement,\n        };\n    }\n    function buildMonths() {\n        clearNode(self.monthNav);\n        self.monthNav.appendChild(self.prevMonthNav);\n        if (self.config.showMonths) {\n            self.yearElements = [];\n            self.monthElements = [];\n        }\n        for (var m = self.config.showMonths; m--;) {\n            var month = buildMonth();\n            self.yearElements.push(month.yearElement);\n            self.monthElements.push(month.monthElement);\n            self.monthNav.appendChild(month.container);\n        }\n        self.monthNav.appendChild(self.nextMonthNav);\n    }\n    function buildMonthNav() {\n        self.monthNav = createElement(\"div\", \"flatpickr-months\");\n        self.yearElements = [];\n        self.monthElements = [];\n        self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n        self.prevMonthNav.innerHTML = self.config.prevArrow;\n        self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n        self.nextMonthNav.innerHTML = self.config.nextArrow;\n        buildMonths();\n        Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n            get: function () { return self.__hidePrevMonthArrow; },\n            set: function (bool) {\n                if (self.__hidePrevMonthArrow !== bool) {\n                    toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n                    self.__hidePrevMonthArrow = bool;\n                }\n            },\n        });\n        Object.defineProperty(self, \"_hideNextMonthArrow\", {\n            get: function () { return self.__hideNextMonthArrow; },\n            set: function (bool) {\n                if (self.__hideNextMonthArrow !== bool) {\n                    toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n                    self.__hideNextMonthArrow = bool;\n                }\n            },\n        });\n        self.currentYearElement = self.yearElements[0];\n        updateNavigationCurrentMonth();\n        return self.monthNav;\n    }\n    function buildTime() {\n        self.calendarContainer.classList.add(\"hasTime\");\n        if (self.config.noCalendar)\n            self.calendarContainer.classList.add(\"noCalendar\");\n        var defaults = getDefaultHours(self.config);\n        self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n        self.timeContainer.tabIndex = -1;\n        var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n        var hourInput = createNumberInput(\"flatpickr-hour\", {\n            \"aria-label\": self.l10n.hourAriaLabel,\n        });\n        self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n        var minuteInput = createNumberInput(\"flatpickr-minute\", {\n            \"aria-label\": self.l10n.minuteAriaLabel,\n        });\n        self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n        self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n        self.hourElement.value = pad(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getHours()\n            : self.config.time_24hr\n                ? defaults.hours\n                : military2ampm(defaults.hours));\n        self.minuteElement.value = pad(self.latestSelectedDateObj\n            ? self.latestSelectedDateObj.getMinutes()\n            : defaults.minutes);\n        self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n        self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n        self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n        self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n        self.hourElement.setAttribute(\"maxlength\", \"2\");\n        self.minuteElement.setAttribute(\"min\", \"0\");\n        self.minuteElement.setAttribute(\"max\", \"59\");\n        self.minuteElement.setAttribute(\"maxlength\", \"2\");\n        self.timeContainer.appendChild(hourInput);\n        self.timeContainer.appendChild(separator);\n        self.timeContainer.appendChild(minuteInput);\n        if (self.config.time_24hr)\n            self.timeContainer.classList.add(\"time24hr\");\n        if (self.config.enableSeconds) {\n            self.timeContainer.classList.add(\"hasSeconds\");\n            var secondInput = createNumberInput(\"flatpickr-second\");\n            self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n            self.secondElement.value = pad(self.latestSelectedDateObj\n                ? self.latestSelectedDateObj.getSeconds()\n                : defaults.seconds);\n            self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n            self.secondElement.setAttribute(\"min\", \"0\");\n            self.secondElement.setAttribute(\"max\", \"59\");\n            self.secondElement.setAttribute(\"maxlength\", \"2\");\n            self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n            self.timeContainer.appendChild(secondInput);\n        }\n        if (!self.config.time_24hr) {\n            self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n                ? self.hourElement.value\n                : self.config.defaultHour) > 11)]);\n            self.amPM.title = self.l10n.toggleTitle;\n            self.amPM.tabIndex = -1;\n            self.timeContainer.appendChild(self.amPM);\n        }\n        return self.timeContainer;\n    }\n    function buildWeekdays() {\n        if (!self.weekdayContainer)\n            self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n        else\n            clearNode(self.weekdayContainer);\n        for (var i = self.config.showMonths; i--;) {\n            var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n            self.weekdayContainer.appendChild(container);\n        }\n        updateWeekdays();\n        return self.weekdayContainer;\n    }\n    function updateWeekdays() {\n        if (!self.weekdayContainer) {\n            return;\n        }\n        var firstDayOfWeek = self.l10n.firstDayOfWeek;\n        var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n        if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n            weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n        }\n        for (var i = self.config.showMonths; i--;) {\n            self.weekdayContainer.children[i].innerHTML = \"\\n      <span class='flatpickr-weekday'>\\n        \" + weekdays.join(\"</span><span class='flatpickr-weekday'>\") + \"\\n      </span>\\n      \";\n        }\n    }\n    function buildWeeks() {\n        self.calendarContainer.classList.add(\"hasWeeks\");\n        var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n        weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n        var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n        weekWrapper.appendChild(weekNumbers);\n        return {\n            weekWrapper: weekWrapper,\n            weekNumbers: weekNumbers,\n        };\n    }\n    function changeMonth(value, isOffset) {\n        if (isOffset === void 0) { isOffset = true; }\n        var delta = isOffset ? value : value - self.currentMonth;\n        if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n            (delta > 0 && self._hideNextMonthArrow === true))\n            return;\n        self.currentMonth += delta;\n        if (self.currentMonth < 0 || self.currentMonth > 11) {\n            self.currentYear += self.currentMonth > 11 ? 1 : -1;\n            self.currentMonth = (self.currentMonth + 12) % 12;\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n        buildDays();\n        triggerEvent(\"onMonthChange\");\n        updateNavigationCurrentMonth();\n    }\n    function clear(triggerChangeEvent, toInitial) {\n        if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n        if (toInitial === void 0) { toInitial = true; }\n        self.input.value = \"\";\n        if (self.altInput !== undefined)\n            self.altInput.value = \"\";\n        if (self.mobileInput !== undefined)\n            self.mobileInput.value = \"\";\n        self.selectedDates = [];\n        self.latestSelectedDateObj = undefined;\n        if (toInitial === true) {\n            self.currentYear = self._initialDate.getFullYear();\n            self.currentMonth = self._initialDate.getMonth();\n        }\n        if (self.config.enableTime === true) {\n            var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n            setHours(hours, minutes, seconds);\n        }\n        self.redraw();\n        if (triggerChangeEvent)\n            triggerEvent(\"onChange\");\n    }\n    function close() {\n        self.isOpen = false;\n        if (!self.isMobile) {\n            if (self.calendarContainer !== undefined) {\n                self.calendarContainer.classList.remove(\"open\");\n            }\n            if (self._input !== undefined) {\n                self._input.classList.remove(\"active\");\n            }\n        }\n        triggerEvent(\"onClose\");\n    }\n    function destroy() {\n        if (self.config !== undefined)\n            triggerEvent(\"onDestroy\");\n        for (var i = self._handlers.length; i--;) {\n            self._handlers[i].remove();\n        }\n        self._handlers = [];\n        if (self.mobileInput) {\n            if (self.mobileInput.parentNode)\n                self.mobileInput.parentNode.removeChild(self.mobileInput);\n            self.mobileInput = undefined;\n        }\n        else if (self.calendarContainer && self.calendarContainer.parentNode) {\n            if (self.config.static && self.calendarContainer.parentNode) {\n                var wrapper = self.calendarContainer.parentNode;\n                wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n                if (wrapper.parentNode) {\n                    while (wrapper.firstChild)\n                        wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n                    wrapper.parentNode.removeChild(wrapper);\n                }\n            }\n            else\n                self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n        }\n        if (self.altInput) {\n            self.input.type = \"text\";\n            if (self.altInput.parentNode)\n                self.altInput.parentNode.removeChild(self.altInput);\n            delete self.altInput;\n        }\n        if (self.input) {\n            self.input.type = self.input._type;\n            self.input.classList.remove(\"flatpickr-input\");\n            self.input.removeAttribute(\"readonly\");\n        }\n        [\n            \"_showTimeInput\",\n            \"latestSelectedDateObj\",\n            \"_hideNextMonthArrow\",\n            \"_hidePrevMonthArrow\",\n            \"__hideNextMonthArrow\",\n            \"__hidePrevMonthArrow\",\n            \"isMobile\",\n            \"isOpen\",\n            \"selectedDateElem\",\n            \"minDateHasTime\",\n            \"maxDateHasTime\",\n            \"days\",\n            \"daysContainer\",\n            \"_input\",\n            \"_positionElement\",\n            \"innerContainer\",\n            \"rContainer\",\n            \"monthNav\",\n            \"todayDateElem\",\n            \"calendarContainer\",\n            \"weekdayContainer\",\n            \"prevMonthNav\",\n            \"nextMonthNav\",\n            \"monthsDropdownContainer\",\n            \"currentMonthElement\",\n            \"currentYearElement\",\n            \"navigationCurrentMonth\",\n            \"selectedDateElem\",\n            \"config\",\n        ].forEach(function (k) {\n            try {\n                delete self[k];\n            }\n            catch (_) { }\n        });\n    }\n    function isCalendarElem(elem) {\n        return self.calendarContainer.contains(elem);\n    }\n    function documentClick(e) {\n        if (self.isOpen && !self.config.inline) {\n            var eventTarget_1 = getEventTarget(e);\n            var isCalendarElement = isCalendarElem(eventTarget_1);\n            var isInput = eventTarget_1 === self.input ||\n                eventTarget_1 === self.altInput ||\n                self.element.contains(eventTarget_1) ||\n                (e.path &&\n                    e.path.indexOf &&\n                    (~e.path.indexOf(self.input) ||\n                        ~e.path.indexOf(self.altInput)));\n            var lostFocus = !isInput &&\n                !isCalendarElement &&\n                !isCalendarElem(e.relatedTarget);\n            var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n                return elem.contains(eventTarget_1);\n            });\n            if (lostFocus && isIgnored) {\n                if (self.config.allowInput) {\n                    self.setDate(self._input.value, false, self.config.altInput\n                        ? self.config.altFormat\n                        : self.config.dateFormat);\n                }\n                if (self.timeContainer !== undefined &&\n                    self.minuteElement !== undefined &&\n                    self.hourElement !== undefined &&\n                    self.input.value !== \"\" &&\n                    self.input.value !== undefined) {\n                    updateTime();\n                }\n                self.close();\n                if (self.config &&\n                    self.config.mode === \"range\" &&\n                    self.selectedDates.length === 1)\n                    self.clear(false);\n            }\n        }\n    }\n    function changeYear(newYear) {\n        if (!newYear ||\n            (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n            (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n            return;\n        var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n        self.currentYear = newYearNum || self.currentYear;\n        if (self.config.maxDate &&\n            self.currentYear === self.config.maxDate.getFullYear()) {\n            self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n        }\n        else if (self.config.minDate &&\n            self.currentYear === self.config.minDate.getFullYear()) {\n            self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n        }\n        if (isNewYear) {\n            self.redraw();\n            triggerEvent(\"onYearChange\");\n            buildMonthSwitch();\n        }\n    }\n    function isEnabled(date, timeless) {\n        var _a;\n        if (timeless === void 0) { timeless = true; }\n        var dateToCheck = self.parseDate(date, undefined, timeless);\n        if ((self.config.minDate &&\n            dateToCheck &&\n            compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n            (self.config.maxDate &&\n                dateToCheck &&\n                compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n            return false;\n        if (!self.config.enable && self.config.disable.length === 0)\n            return true;\n        if (dateToCheck === undefined)\n            return false;\n        var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n        for (var i = 0, d = void 0; i < array.length; i++) {\n            d = array[i];\n            if (typeof d === \"function\" &&\n                d(dateToCheck))\n                return bool;\n            else if (d instanceof Date &&\n                dateToCheck !== undefined &&\n                d.getTime() === dateToCheck.getTime())\n                return bool;\n            else if (typeof d === \"string\") {\n                var parsed = self.parseDate(d, undefined, true);\n                return parsed && parsed.getTime() === dateToCheck.getTime()\n                    ? bool\n                    : !bool;\n            }\n            else if (typeof d === \"object\" &&\n                dateToCheck !== undefined &&\n                d.from &&\n                d.to &&\n                dateToCheck.getTime() >= d.from.getTime() &&\n                dateToCheck.getTime() <= d.to.getTime())\n                return bool;\n        }\n        return !bool;\n    }\n    function isInView(elem) {\n        if (self.daysContainer !== undefined)\n            return (elem.className.indexOf(\"hidden\") === -1 &&\n                elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n                self.daysContainer.contains(elem));\n        return false;\n    }\n    function onBlur(e) {\n        var isInput = e.target === self._input;\n        var valueChanged = self._input.value.trimEnd() !== getDateStr();\n        if (isInput &&\n            valueChanged &&\n            !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n            self.setDate(self._input.value, true, e.target === self.altInput\n                ? self.config.altFormat\n                : self.config.dateFormat);\n        }\n    }\n    function onKeyDown(e) {\n        var eventTarget = getEventTarget(e);\n        var isInput = self.config.wrap\n            ? element.contains(eventTarget)\n            : eventTarget === self._input;\n        var allowInput = self.config.allowInput;\n        var allowKeydown = self.isOpen && (!allowInput || !isInput);\n        var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n        if (e.keyCode === 13 && isInput) {\n            if (allowInput) {\n                self.setDate(self._input.value, true, eventTarget === self.altInput\n                    ? self.config.altFormat\n                    : self.config.dateFormat);\n                self.close();\n                return eventTarget.blur();\n            }\n            else {\n                self.open();\n            }\n        }\n        else if (isCalendarElem(eventTarget) ||\n            allowKeydown ||\n            allowInlineKeydown) {\n            var isTimeObj = !!self.timeContainer &&\n                self.timeContainer.contains(eventTarget);\n            switch (e.keyCode) {\n                case 13:\n                    if (isTimeObj) {\n                        e.preventDefault();\n                        updateTime();\n                        focusAndClose();\n                    }\n                    else\n                        selectDate(e);\n                    break;\n                case 27:\n                    e.preventDefault();\n                    focusAndClose();\n                    break;\n                case 8:\n                case 46:\n                    if (isInput && !self.config.allowInput) {\n                        e.preventDefault();\n                        self.clear();\n                    }\n                    break;\n                case 37:\n                case 39:\n                    if (!isTimeObj && !isInput) {\n                        e.preventDefault();\n                        var activeElement = getClosestActiveElement();\n                        if (self.daysContainer !== undefined &&\n                            (allowInput === false ||\n                                (activeElement && isInView(activeElement)))) {\n                            var delta_1 = e.keyCode === 39 ? 1 : -1;\n                            if (!e.ctrlKey)\n                                focusOnDay(undefined, delta_1);\n                            else {\n                                e.stopPropagation();\n                                changeMonth(delta_1);\n                                focusOnDay(getFirstAvailableDay(1), 0);\n                            }\n                        }\n                    }\n                    else if (self.hourElement)\n                        self.hourElement.focus();\n                    break;\n                case 38:\n                case 40:\n                    e.preventDefault();\n                    var delta = e.keyCode === 40 ? 1 : -1;\n                    if ((self.daysContainer &&\n                        eventTarget.$i !== undefined) ||\n                        eventTarget === self.input ||\n                        eventTarget === self.altInput) {\n                        if (e.ctrlKey) {\n                            e.stopPropagation();\n                            changeYear(self.currentYear - delta);\n                            focusOnDay(getFirstAvailableDay(1), 0);\n                        }\n                        else if (!isTimeObj)\n                            focusOnDay(undefined, delta * 7);\n                    }\n                    else if (eventTarget === self.currentYearElement) {\n                        changeYear(self.currentYear - delta);\n                    }\n                    else if (self.config.enableTime) {\n                        if (!isTimeObj && self.hourElement)\n                            self.hourElement.focus();\n                        updateTime(e);\n                        self._debouncedChange();\n                    }\n                    break;\n                case 9:\n                    if (isTimeObj) {\n                        var elems = [\n                            self.hourElement,\n                            self.minuteElement,\n                            self.secondElement,\n                            self.amPM,\n                        ]\n                            .concat(self.pluginElements)\n                            .filter(function (x) { return x; });\n                        var i = elems.indexOf(eventTarget);\n                        if (i !== -1) {\n                            var target = elems[i + (e.shiftKey ? -1 : 1)];\n                            e.preventDefault();\n                            (target || self._input).focus();\n                        }\n                    }\n                    else if (!self.config.noCalendar &&\n                        self.daysContainer &&\n                        self.daysContainer.contains(eventTarget) &&\n                        e.shiftKey) {\n                        e.preventDefault();\n                        self._input.focus();\n                    }\n                    break;\n                default:\n                    break;\n            }\n        }\n        if (self.amPM !== undefined && eventTarget === self.amPM) {\n            switch (e.key) {\n                case self.l10n.amPM[0].charAt(0):\n                case self.l10n.amPM[0].charAt(0).toLowerCase():\n                    self.amPM.textContent = self.l10n.amPM[0];\n                    setHoursFromInputs();\n                    updateValue();\n                    break;\n                case self.l10n.amPM[1].charAt(0):\n                case self.l10n.amPM[1].charAt(0).toLowerCase():\n                    self.amPM.textContent = self.l10n.amPM[1];\n                    setHoursFromInputs();\n                    updateValue();\n                    break;\n            }\n        }\n        if (isInput || isCalendarElem(eventTarget)) {\n            triggerEvent(\"onKeyDown\", e);\n        }\n    }\n    function onMouseOver(elem, cellClass) {\n        if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n        if (self.selectedDates.length !== 1 ||\n            (elem &&\n                (!elem.classList.contains(cellClass) ||\n                    elem.classList.contains(\"flatpickr-disabled\"))))\n            return;\n        var hoverDate = elem\n            ? elem.dateObj.getTime()\n            : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n        var containsDisabled = false;\n        var minRange = 0, maxRange = 0;\n        for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n            if (!isEnabled(new Date(t), true)) {\n                containsDisabled =\n                    containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n                if (t < initialDate && (!minRange || t > minRange))\n                    minRange = t;\n                else if (t > initialDate && (!maxRange || t < maxRange))\n                    maxRange = t;\n            }\n        }\n        var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n        hoverableCells.forEach(function (dayElem) {\n            var date = dayElem.dateObj;\n            var timestamp = date.getTime();\n            var outOfRange = (minRange > 0 && timestamp < minRange) ||\n                (maxRange > 0 && timestamp > maxRange);\n            if (outOfRange) {\n                dayElem.classList.add(\"notAllowed\");\n                [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n                    dayElem.classList.remove(c);\n                });\n                return;\n            }\n            else if (containsDisabled && !outOfRange)\n                return;\n            [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n                dayElem.classList.remove(c);\n            });\n            if (elem !== undefined) {\n                elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n                    ? \"startRange\"\n                    : \"endRange\");\n                if (initialDate < hoverDate && timestamp === initialDate)\n                    dayElem.classList.add(\"startRange\");\n                else if (initialDate > hoverDate && timestamp === initialDate)\n                    dayElem.classList.add(\"endRange\");\n                if (timestamp >= minRange &&\n                    (maxRange === 0 || timestamp <= maxRange) &&\n                    isBetween(timestamp, initialDate, hoverDate))\n                    dayElem.classList.add(\"inRange\");\n            }\n        });\n    }\n    function onResize() {\n        if (self.isOpen && !self.config.static && !self.config.inline)\n            positionCalendar();\n    }\n    function open(e, positionElement) {\n        if (positionElement === void 0) { positionElement = self._positionElement; }\n        if (self.isMobile === true) {\n            if (e) {\n                e.preventDefault();\n                var eventTarget = getEventTarget(e);\n                if (eventTarget) {\n                    eventTarget.blur();\n                }\n            }\n            if (self.mobileInput !== undefined) {\n                self.mobileInput.focus();\n                self.mobileInput.click();\n            }\n            triggerEvent(\"onOpen\");\n            return;\n        }\n        else if (self._input.disabled || self.config.inline) {\n            return;\n        }\n        var wasOpen = self.isOpen;\n        self.isOpen = true;\n        if (!wasOpen) {\n            self.calendarContainer.classList.add(\"open\");\n            self._input.classList.add(\"active\");\n            triggerEvent(\"onOpen\");\n            positionCalendar(positionElement);\n        }\n        if (self.config.enableTime === true && self.config.noCalendar === true) {\n            if (self.config.allowInput === false &&\n                (e === undefined ||\n                    !self.timeContainer.contains(e.relatedTarget))) {\n                setTimeout(function () { return self.hourElement.select(); }, 50);\n            }\n        }\n    }\n    function minMaxDateSetter(type) {\n        return function (date) {\n            var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n            var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n            if (dateObj !== undefined) {\n                self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n                    dateObj.getHours() > 0 ||\n                        dateObj.getMinutes() > 0 ||\n                        dateObj.getSeconds() > 0;\n            }\n            if (self.selectedDates) {\n                self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n                if (!self.selectedDates.length && type === \"min\")\n                    setHoursFromDate(dateObj);\n                updateValue();\n            }\n            if (self.daysContainer) {\n                redraw();\n                if (dateObj !== undefined)\n                    self.currentYearElement[type] = dateObj.getFullYear().toString();\n                else\n                    self.currentYearElement.removeAttribute(type);\n                self.currentYearElement.disabled =\n                    !!inverseDateObj &&\n                        dateObj !== undefined &&\n                        inverseDateObj.getFullYear() === dateObj.getFullYear();\n            }\n        };\n    }\n    function parseConfig() {\n        var boolOpts = [\n            \"wrap\",\n            \"weekNumbers\",\n            \"allowInput\",\n            \"allowInvalidPreload\",\n            \"clickOpens\",\n            \"time_24hr\",\n            \"enableTime\",\n            \"noCalendar\",\n            \"altInput\",\n            \"shorthandCurrentMonth\",\n            \"inline\",\n            \"static\",\n            \"enableSeconds\",\n            \"disableMobile\",\n        ];\n        var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n        var formats = {};\n        self.config.parseDate = userConfig.parseDate;\n        self.config.formatDate = userConfig.formatDate;\n        Object.defineProperty(self.config, \"enable\", {\n            get: function () { return self.config._enable; },\n            set: function (dates) {\n                self.config._enable = parseDateRules(dates);\n            },\n        });\n        Object.defineProperty(self.config, \"disable\", {\n            get: function () { return self.config._disable; },\n            set: function (dates) {\n                self.config._disable = parseDateRules(dates);\n            },\n        });\n        var timeMode = userConfig.mode === \"time\";\n        if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n            var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n            formats.dateFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n                    : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n        }\n        if (userConfig.altInput &&\n            (userConfig.enableTime || timeMode) &&\n            !userConfig.altFormat) {\n            var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n            formats.altFormat =\n                userConfig.noCalendar || timeMode\n                    ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n                    : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n        }\n        Object.defineProperty(self.config, \"minDate\", {\n            get: function () { return self.config._minDate; },\n            set: minMaxDateSetter(\"min\"),\n        });\n        Object.defineProperty(self.config, \"maxDate\", {\n            get: function () { return self.config._maxDate; },\n            set: minMaxDateSetter(\"max\"),\n        });\n        var minMaxTimeSetter = function (type) { return function (val) {\n            self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n        }; };\n        Object.defineProperty(self.config, \"minTime\", {\n            get: function () { return self.config._minTime; },\n            set: minMaxTimeSetter(\"min\"),\n        });\n        Object.defineProperty(self.config, \"maxTime\", {\n            get: function () { return self.config._maxTime; },\n            set: minMaxTimeSetter(\"max\"),\n        });\n        if (userConfig.mode === \"time\") {\n            self.config.noCalendar = true;\n            self.config.enableTime = true;\n        }\n        Object.assign(self.config, formats, userConfig);\n        for (var i = 0; i < boolOpts.length; i++)\n            self.config[boolOpts[i]] =\n                self.config[boolOpts[i]] === true ||\n                    self.config[boolOpts[i]] === \"true\";\n        HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n            self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n        });\n        self.isMobile =\n            !self.config.disableMobile &&\n                !self.config.inline &&\n                self.config.mode === \"single\" &&\n                !self.config.disable.length &&\n                !self.config.enable &&\n                !self.config.weekNumbers &&\n                /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n        for (var i = 0; i < self.config.plugins.length; i++) {\n            var pluginConf = self.config.plugins[i](self) || {};\n            for (var key in pluginConf) {\n                if (HOOKS.indexOf(key) > -1) {\n                    self.config[key] = arrayify(pluginConf[key])\n                        .map(bindToInstance)\n                        .concat(self.config[key]);\n                }\n                else if (typeof userConfig[key] === \"undefined\")\n                    self.config[key] = pluginConf[key];\n            }\n        }\n        if (!userConfig.altInputClass) {\n            self.config.altInputClass =\n                getInputElem().className + \" \" + self.config.altInputClass;\n        }\n        triggerEvent(\"onParseConfig\");\n    }\n    function getInputElem() {\n        return self.config.wrap\n            ? element.querySelector(\"[data-input]\")\n            : element;\n    }\n    function setupLocale() {\n        if (typeof self.config.locale !== \"object\" &&\n            typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n            self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n        self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n            ? self.config.locale\n            : self.config.locale !== \"default\"\n                ? flatpickr.l10ns[self.config.locale]\n                : undefined));\n        tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n        tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n        tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n        tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n        tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n        var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n        if (userConfig.time_24hr === undefined &&\n            flatpickr.defaultConfig.time_24hr === undefined) {\n            self.config.time_24hr = self.l10n.time_24hr;\n        }\n        self.formatDate = createDateFormatter(self);\n        self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n    }\n    function positionCalendar(customPositionElement) {\n        if (typeof self.config.position === \"function\") {\n            return void self.config.position(self, customPositionElement);\n        }\n        if (self.calendarContainer === undefined)\n            return;\n        triggerEvent(\"onPreCalendarPosition\");\n        var positionElement = customPositionElement || self._positionElement;\n        var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n            (configPosVertical !== \"below\" &&\n                distanceFromBottom < calendarHeight &&\n                inputBounds.top > calendarHeight);\n        var top = window.pageYOffset +\n            inputBounds.top +\n            (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n        toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n        toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n        if (self.config.inline)\n            return;\n        var left = window.pageXOffset + inputBounds.left;\n        var isCenter = false;\n        var isRight = false;\n        if (configPosHorizontal === \"center\") {\n            left -= (calendarWidth - inputBounds.width) / 2;\n            isCenter = true;\n        }\n        else if (configPosHorizontal === \"right\") {\n            left -= calendarWidth - inputBounds.width;\n            isRight = true;\n        }\n        toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n        toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n        toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n        var right = window.document.body.offsetWidth -\n            (window.pageXOffset + inputBounds.right);\n        var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n        var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n        toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n        if (self.config.static)\n            return;\n        self.calendarContainer.style.top = top + \"px\";\n        if (!rightMost) {\n            self.calendarContainer.style.left = left + \"px\";\n            self.calendarContainer.style.right = \"auto\";\n        }\n        else if (!centerMost) {\n            self.calendarContainer.style.left = \"auto\";\n            self.calendarContainer.style.right = right + \"px\";\n        }\n        else {\n            var doc = getDocumentStyleSheet();\n            if (doc === undefined)\n                return;\n            var bodyWidth = window.document.body.offsetWidth;\n            var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n            var centerBefore = \".flatpickr-calendar.centerMost:before\";\n            var centerAfter = \".flatpickr-calendar.centerMost:after\";\n            var centerIndex = doc.cssRules.length;\n            var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n            toggleClass(self.calendarContainer, \"rightMost\", false);\n            toggleClass(self.calendarContainer, \"centerMost\", true);\n            doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n            self.calendarContainer.style.left = centerLeft + \"px\";\n            self.calendarContainer.style.right = \"auto\";\n        }\n    }\n    function getDocumentStyleSheet() {\n        var editableSheet = null;\n        for (var i = 0; i < document.styleSheets.length; i++) {\n            var sheet = document.styleSheets[i];\n            if (!sheet.cssRules)\n                continue;\n            try {\n                sheet.cssRules;\n            }\n            catch (err) {\n                continue;\n            }\n            editableSheet = sheet;\n            break;\n        }\n        return editableSheet != null ? editableSheet : createStyleSheet();\n    }\n    function createStyleSheet() {\n        var style = document.createElement(\"style\");\n        document.head.appendChild(style);\n        return style.sheet;\n    }\n    function redraw() {\n        if (self.config.noCalendar || self.isMobile)\n            return;\n        buildMonthSwitch();\n        updateNavigationCurrentMonth();\n        buildDays();\n    }\n    function focusAndClose() {\n        self._input.focus();\n        if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n            navigator.msMaxTouchPoints !== undefined) {\n            setTimeout(self.close, 0);\n        }\n        else {\n            self.close();\n        }\n    }\n    function selectDate(e) {\n        e.preventDefault();\n        e.stopPropagation();\n        var isSelectable = function (day) {\n            return day.classList &&\n                day.classList.contains(\"flatpickr-day\") &&\n                !day.classList.contains(\"flatpickr-disabled\") &&\n                !day.classList.contains(\"notAllowed\");\n        };\n        var t = findParent(getEventTarget(e), isSelectable);\n        if (t === undefined)\n            return;\n        var target = t;\n        var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n        var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n            selectedDate.getMonth() >\n                self.currentMonth + self.config.showMonths - 1) &&\n            self.config.mode !== \"range\";\n        self.selectedDateElem = target;\n        if (self.config.mode === \"single\")\n            self.selectedDates = [selectedDate];\n        else if (self.config.mode === \"multiple\") {\n            var selectedIndex = isDateSelected(selectedDate);\n            if (selectedIndex)\n                self.selectedDates.splice(parseInt(selectedIndex), 1);\n            else\n                self.selectedDates.push(selectedDate);\n        }\n        else if (self.config.mode === \"range\") {\n            if (self.selectedDates.length === 2) {\n                self.clear(false, false);\n            }\n            self.latestSelectedDateObj = selectedDate;\n            self.selectedDates.push(selectedDate);\n            if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n                self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n        }\n        setHoursFromInputs();\n        if (shouldChangeMonth) {\n            var isNewYear = self.currentYear !== selectedDate.getFullYear();\n            self.currentYear = selectedDate.getFullYear();\n            self.currentMonth = selectedDate.getMonth();\n            if (isNewYear) {\n                triggerEvent(\"onYearChange\");\n                buildMonthSwitch();\n            }\n            triggerEvent(\"onMonthChange\");\n        }\n        updateNavigationCurrentMonth();\n        buildDays();\n        updateValue();\n        if (!shouldChangeMonth &&\n            self.config.mode !== \"range\" &&\n            self.config.showMonths === 1)\n            focusOnDayElem(target);\n        else if (self.selectedDateElem !== undefined &&\n            self.hourElement === undefined) {\n            self.selectedDateElem && self.selectedDateElem.focus();\n        }\n        if (self.hourElement !== undefined)\n            self.hourElement !== undefined && self.hourElement.focus();\n        if (self.config.closeOnSelect) {\n            var single = self.config.mode === \"single\" && !self.config.enableTime;\n            var range = self.config.mode === \"range\" &&\n                self.selectedDates.length === 2 &&\n                !self.config.enableTime;\n            if (single || range) {\n                focusAndClose();\n            }\n        }\n        triggerChange();\n    }\n    var CALLBACKS = {\n        locale: [setupLocale, updateWeekdays],\n        showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n        minDate: [jumpToDate],\n        maxDate: [jumpToDate],\n        positionElement: [updatePositionElement],\n        clickOpens: [\n            function () {\n                if (self.config.clickOpens === true) {\n                    bind(self._input, \"focus\", self.open);\n                    bind(self._input, \"click\", self.open);\n                }\n                else {\n                    self._input.removeEventListener(\"focus\", self.open);\n                    self._input.removeEventListener(\"click\", self.open);\n                }\n            },\n        ],\n    };\n    function set(option, value) {\n        if (option !== null && typeof option === \"object\") {\n            Object.assign(self.config, option);\n            for (var key in option) {\n                if (CALLBACKS[key] !== undefined)\n                    CALLBACKS[key].forEach(function (x) { return x(); });\n            }\n        }\n        else {\n            self.config[option] = value;\n            if (CALLBACKS[option] !== undefined)\n                CALLBACKS[option].forEach(function (x) { return x(); });\n            else if (HOOKS.indexOf(option) > -1)\n                self.config[option] = arrayify(value);\n        }\n        self.redraw();\n        updateValue(true);\n    }\n    function setSelectedDate(inputDate, format) {\n        var dates = [];\n        if (inputDate instanceof Array)\n            dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n        else if (inputDate instanceof Date || typeof inputDate === \"number\")\n            dates = [self.parseDate(inputDate, format)];\n        else if (typeof inputDate === \"string\") {\n            switch (self.config.mode) {\n                case \"single\":\n                case \"time\":\n                    dates = [self.parseDate(inputDate, format)];\n                    break;\n                case \"multiple\":\n                    dates = inputDate\n                        .split(self.config.conjunction)\n                        .map(function (date) { return self.parseDate(date, format); });\n                    break;\n                case \"range\":\n                    dates = inputDate\n                        .split(self.l10n.rangeSeparator)\n                        .map(function (date) { return self.parseDate(date, format); });\n                    break;\n                default:\n                    break;\n            }\n        }\n        else\n            self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n        self.selectedDates = (self.config.allowInvalidPreload\n            ? dates\n            : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n        if (self.config.mode === \"range\")\n            self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n    }\n    function setDate(date, triggerChange, format) {\n        if (triggerChange === void 0) { triggerChange = false; }\n        if (format === void 0) { format = self.config.dateFormat; }\n        if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n            return self.clear(triggerChange);\n        setSelectedDate(date, format);\n        self.latestSelectedDateObj =\n            self.selectedDates[self.selectedDates.length - 1];\n        self.redraw();\n        jumpToDate(undefined, triggerChange);\n        setHoursFromDate();\n        if (self.selectedDates.length === 0) {\n            self.clear(false);\n        }\n        updateValue(triggerChange);\n        if (triggerChange)\n            triggerEvent(\"onChange\");\n    }\n    function parseDateRules(arr) {\n        return arr\n            .slice()\n            .map(function (rule) {\n            if (typeof rule === \"string\" ||\n                typeof rule === \"number\" ||\n                rule instanceof Date) {\n                return self.parseDate(rule, undefined, true);\n            }\n            else if (rule &&\n                typeof rule === \"object\" &&\n                rule.from &&\n                rule.to)\n                return {\n                    from: self.parseDate(rule.from, undefined),\n                    to: self.parseDate(rule.to, undefined),\n                };\n            return rule;\n        })\n            .filter(function (x) { return x; });\n    }\n    function setupDates() {\n        self.selectedDates = [];\n        self.now = self.parseDate(self.config.now) || new Date();\n        var preloadedDate = self.config.defaultDate ||\n            ((self.input.nodeName === \"INPUT\" ||\n                self.input.nodeName === \"TEXTAREA\") &&\n                self.input.placeholder &&\n                self.input.value === self.input.placeholder\n                ? null\n                : self.input.value);\n        if (preloadedDate)\n            setSelectedDate(preloadedDate, self.config.dateFormat);\n        self._initialDate =\n            self.selectedDates.length > 0\n                ? self.selectedDates[0]\n                : self.config.minDate &&\n                    self.config.minDate.getTime() > self.now.getTime()\n                    ? self.config.minDate\n                    : self.config.maxDate &&\n                        self.config.maxDate.getTime() < self.now.getTime()\n                        ? self.config.maxDate\n                        : self.now;\n        self.currentYear = self._initialDate.getFullYear();\n        self.currentMonth = self._initialDate.getMonth();\n        if (self.selectedDates.length > 0)\n            self.latestSelectedDateObj = self.selectedDates[0];\n        if (self.config.minTime !== undefined)\n            self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n        if (self.config.maxTime !== undefined)\n            self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n        self.minDateHasTime =\n            !!self.config.minDate &&\n                (self.config.minDate.getHours() > 0 ||\n                    self.config.minDate.getMinutes() > 0 ||\n                    self.config.minDate.getSeconds() > 0);\n        self.maxDateHasTime =\n            !!self.config.maxDate &&\n                (self.config.maxDate.getHours() > 0 ||\n                    self.config.maxDate.getMinutes() > 0 ||\n                    self.config.maxDate.getSeconds() > 0);\n    }\n    function setupInputs() {\n        self.input = getInputElem();\n        if (!self.input) {\n            self.config.errorHandler(new Error(\"Invalid input element specified\"));\n            return;\n        }\n        self.input._type = self.input.type;\n        self.input.type = \"text\";\n        self.input.classList.add(\"flatpickr-input\");\n        self._input = self.input;\n        if (self.config.altInput) {\n            self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n            self._input = self.altInput;\n            self.altInput.placeholder = self.input.placeholder;\n            self.altInput.disabled = self.input.disabled;\n            self.altInput.required = self.input.required;\n            self.altInput.tabIndex = self.input.tabIndex;\n            self.altInput.type = \"text\";\n            self.input.setAttribute(\"type\", \"hidden\");\n            if (!self.config.static && self.input.parentNode)\n                self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n        }\n        if (!self.config.allowInput)\n            self._input.setAttribute(\"readonly\", \"readonly\");\n        updatePositionElement();\n    }\n    function updatePositionElement() {\n        self._positionElement = self.config.positionElement || self._input;\n    }\n    function setupMobile() {\n        var inputType = self.config.enableTime\n            ? self.config.noCalendar\n                ? \"time\"\n                : \"datetime-local\"\n            : \"date\";\n        self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n        self.mobileInput.tabIndex = 1;\n        self.mobileInput.type = inputType;\n        self.mobileInput.disabled = self.input.disabled;\n        self.mobileInput.required = self.input.required;\n        self.mobileInput.placeholder = self.input.placeholder;\n        self.mobileFormatStr =\n            inputType === \"datetime-local\"\n                ? \"Y-m-d\\\\TH:i:S\"\n                : inputType === \"date\"\n                    ? \"Y-m-d\"\n                    : \"H:i:S\";\n        if (self.selectedDates.length > 0) {\n            self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n        }\n        if (self.config.minDate)\n            self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n        if (self.config.maxDate)\n            self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n        if (self.input.getAttribute(\"step\"))\n            self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n        self.input.type = \"hidden\";\n        if (self.altInput !== undefined)\n            self.altInput.type = \"hidden\";\n        try {\n            if (self.input.parentNode)\n                self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n        }\n        catch (_a) { }\n        bind(self.mobileInput, \"change\", function (e) {\n            self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n            triggerEvent(\"onChange\");\n            triggerEvent(\"onClose\");\n        });\n    }\n    function toggle(e) {\n        if (self.isOpen === true)\n            return self.close();\n        self.open(e);\n    }\n    function triggerEvent(event, data) {\n        if (self.config === undefined)\n            return;\n        var hooks = self.config[event];\n        if (hooks !== undefined && hooks.length > 0) {\n            for (var i = 0; hooks[i] && i < hooks.length; i++)\n                hooks[i](self.selectedDates, self.input.value, self, data);\n        }\n        if (event === \"onChange\") {\n            self.input.dispatchEvent(createEvent(\"change\"));\n            self.input.dispatchEvent(createEvent(\"input\"));\n        }\n    }\n    function createEvent(name) {\n        var e = document.createEvent(\"Event\");\n        e.initEvent(name, true, true);\n        return e;\n    }\n    function isDateSelected(date) {\n        for (var i = 0; i < self.selectedDates.length; i++) {\n            var selectedDate = self.selectedDates[i];\n            if (selectedDate instanceof Date &&\n                compareDates(selectedDate, date) === 0)\n                return \"\" + i;\n        }\n        return false;\n    }\n    function isDateInRange(date) {\n        if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n            return false;\n        return (compareDates(date, self.selectedDates[0]) >= 0 &&\n            compareDates(date, self.selectedDates[1]) <= 0);\n    }\n    function updateNavigationCurrentMonth() {\n        if (self.config.noCalendar || self.isMobile || !self.monthNav)\n            return;\n        self.yearElements.forEach(function (yearElement, i) {\n            var d = new Date(self.currentYear, self.currentMonth, 1);\n            d.setMonth(self.currentMonth + i);\n            if (self.config.showMonths > 1 ||\n                self.config.monthSelectorType === \"static\") {\n                self.monthElements[i].textContent =\n                    monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n            }\n            else {\n                self.monthsDropdownContainer.value = d.getMonth().toString();\n            }\n            yearElement.value = d.getFullYear().toString();\n        });\n        self._hidePrevMonthArrow =\n            self.config.minDate !== undefined &&\n                (self.currentYear === self.config.minDate.getFullYear()\n                    ? self.currentMonth <= self.config.minDate.getMonth()\n                    : self.currentYear < self.config.minDate.getFullYear());\n        self._hideNextMonthArrow =\n            self.config.maxDate !== undefined &&\n                (self.currentYear === self.config.maxDate.getFullYear()\n                    ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n                    : self.currentYear > self.config.maxDate.getFullYear());\n    }\n    function getDateStr(specificFormat) {\n        var format = specificFormat ||\n            (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n        return self.selectedDates\n            .map(function (dObj) { return self.formatDate(dObj, format); })\n            .filter(function (d, i, arr) {\n            return self.config.mode !== \"range\" ||\n                self.config.enableTime ||\n                arr.indexOf(d) === i;\n        })\n            .join(self.config.mode !== \"range\"\n            ? self.config.conjunction\n            : self.l10n.rangeSeparator);\n    }\n    function updateValue(triggerChange) {\n        if (triggerChange === void 0) { triggerChange = true; }\n        if (self.mobileInput !== undefined && self.mobileFormatStr) {\n            self.mobileInput.value =\n                self.latestSelectedDateObj !== undefined\n                    ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n                    : \"\";\n        }\n        self.input.value = getDateStr(self.config.dateFormat);\n        if (self.altInput !== undefined) {\n            self.altInput.value = getDateStr(self.config.altFormat);\n        }\n        if (triggerChange !== false)\n            triggerEvent(\"onValueUpdate\");\n    }\n    function onMonthNavClick(e) {\n        var eventTarget = getEventTarget(e);\n        var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n        var isNextMonth = self.nextMonthNav.contains(eventTarget);\n        if (isPrevMonth || isNextMonth) {\n            changeMonth(isPrevMonth ? -1 : 1);\n        }\n        else if (self.yearElements.indexOf(eventTarget) >= 0) {\n            eventTarget.select();\n        }\n        else if (eventTarget.classList.contains(\"arrowUp\")) {\n            self.changeYear(self.currentYear + 1);\n        }\n        else if (eventTarget.classList.contains(\"arrowDown\")) {\n            self.changeYear(self.currentYear - 1);\n        }\n    }\n    function timeWrapper(e) {\n        e.preventDefault();\n        var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n        if (self.amPM !== undefined && eventTarget === self.amPM) {\n            self.amPM.textContent =\n                self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n        }\n        var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n            (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n        var newValue = curValue + step * delta;\n        if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n            var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n            if (newValue < min) {\n                newValue =\n                    max +\n                        newValue +\n                        int(!isHourElem) +\n                        (int(isHourElem) && int(!self.amPM));\n                if (isMinuteElem)\n                    incrementNumInput(undefined, -1, self.hourElement);\n            }\n            else if (newValue > max) {\n                newValue =\n                    input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n                if (isMinuteElem)\n                    incrementNumInput(undefined, 1, self.hourElement);\n            }\n            if (self.amPM &&\n                isHourElem &&\n                (step === 1\n                    ? newValue + curValue === 23\n                    : Math.abs(newValue - curValue) > step)) {\n                self.amPM.textContent =\n                    self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n            }\n            input.value = pad(newValue);\n        }\n    }\n    init();\n    return self;\n}\nfunction _flatpickr(nodeList, config) {\n    var nodes = Array.prototype.slice\n        .call(nodeList)\n        .filter(function (x) { return x instanceof HTMLElement; });\n    var instances = [];\n    for (var i = 0; i < nodes.length; i++) {\n        var node = nodes[i];\n        try {\n            if (node.getAttribute(\"data-fp-omit\") !== null)\n                continue;\n            if (node._flatpickr !== undefined) {\n                node._flatpickr.destroy();\n                node._flatpickr = undefined;\n            }\n            node._flatpickr = FlatpickrInstance(node, config || {});\n            instances.push(node._flatpickr);\n        }\n        catch (e) {\n            console.error(e);\n        }\n    }\n    return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n    typeof HTMLCollection !== \"undefined\" &&\n    typeof NodeList !== \"undefined\") {\n    HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n    HTMLElement.prototype.flatpickr = function (config) {\n        return _flatpickr([this], config);\n    };\n}\nvar flatpickr = function (selector, config) {\n    if (typeof selector === \"string\") {\n        return _flatpickr(window.document.querySelectorAll(selector), config);\n    }\n    else if (selector instanceof Node) {\n        return _flatpickr([selector], config);\n    }\n    else {\n        return _flatpickr(selector, config);\n    }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n    en: __assign({}, English),\n    default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n    flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n    flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n    jQuery.fn.flatpickr = function (config) {\n        return _flatpickr(this, config);\n    };\n}\nDate.prototype.fp_incr = function (days) {\n    return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n    window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n", "import { Controller } from \"@hotwired/stimulus\";\nimport flatpickr from \"flatpickr\";\nimport { French } from \"flatpickr/dist/l10n/fr\";\n\nconst defaultConfig = {\n  dateFormat: \"Y-m-d\",\n  altInput: true,\n  altFormat: \"d/m/Y\",\n  locale: French,\n};\n\nconst taskConfig = {\n  dateFormat: \"Y-m-d\",\n  altInput: true,\n  altFormat: \"d/m/Y\",\n  locale: French,\n};\n\nconst dateTimeConfig = {\n  enableTime: true,\n  dateFormat: \"Y-m-d H:i\",\n  altInput: true,\n  altFormat: \"d/m/Y H:i\",\n  locale: French,\n};\n\n// Connect to input with data-controller=\"datepicker\"\nexport default class extends Controller {\n  static values = {\n    type: String,\n  };\n\n  connect() {\n    let config;\n    if (this.typeValue) {\n      if (this.typeValue === \"date\") {\n        config = defaultConfig;\n      } else if (this.typeValue === \"datetime\") {\n        config = dateTimeConfig;\n      } else if (this.typeValue === \"task\") {\n        config = taskConfig;\n      } else {\n        config = defaultConfig;\n      }\n    } else {\n      config = defaultConfig;\n    }\n\n    this.instance = flatpickr(this.element, config);\n  }\n\n  disconnect() {\n    this.instance.destroy();\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\n// Connect to input with data-controller=\"collapse\"\nexport default class extends Controller {\n  static targets = [\"toggle\"];\n\n  toggle(event) {\n    const target = document.getElementById(event.target.dataset.target);\n    new bootstrap.Collapse(target);\n  }\n}\n", "import {Controller} from '@hotwired/stimulus'\n\nexport default class extends Controller {\n\n\n  static targets = ['input', 'icon']\n  static classes = ['hidden']\n\n  connect(){\n    this.hidden = this.inputTarget.type === 'password'\n    this.class = this.hasHiddenClass ? this.hiddenClass : 'hidden'\n  }\n\n  toggle(e) {\n    e.preventDefault()\n\n    this.inputTarget.type = this.hidden ? 'text' : 'password'\n    this.hidden = !this.hidden\n\n    this.iconTargets.forEach(icon => icon.classList.toggle(this.class))\n  }\n}", "import { Controller } from \"@hotwired/stimulus\";\n\n// Connect to input with data-controller=\"clearable-input\"\nexport default class extends Controller {\n  clear(event) {\n    const input = event.currentTarget.parentElement.querySelector(\"input\");\n    input.value = \"\";\n  }\n}\n", "import { Controller } from \"@hotwired/stimulus\";\n\n// Connects to data-controller=\"autosubmit-input\"\nexport default class extends Controller {\n  submit() {\n    clearTimeout(this.timeout);\n    this.timeout = setTimeout(() => {\n      this.element.requestSubmit();\n    }, 300);\n  }\n}\n", "import {Controller} from \"@hotwired/stimulus\";\n\nexport default class extends Controller {\n  static targets = [\"menu\", \"button\"];\n\n  connect() {\n    this.buttonTarget\n    this.menuTarget;\n  }\n\n\n  toggleMenu() {\n    this.menuTarget.classList.toggle(\"hidden\");\n  }\n}", "// This file is auto-generated by ./bin/rails stimulus:manifest:update\n// Run that command whenever you add a new controller or create them with\n// ./bin/rails generate stimulus controllerName\n\nimport { application } from \"./application\";\n\nimport SidebarController from \"./sidebar_controller.js\";\napplication.register(\"sidebar\", SidebarController);\n\nimport AuthorizedUsersController from \"./authorized_users_controller.js\";\napplication.register(\"authorized-users\", AuthorizedUsersController);\n\nimport MultiUploadController from \"./multi_upload_controller.js\";\napplication.register(\"multi-upload\", MultiUploadController);\n\nimport RolesController from \"./roles_controller.js\";\napplication.register(\"roles\", RolesController);\n\nimport Ts__SelectController from \"./ts/select_controller.js\";\napplication.register(\"ts--select\", Ts__SelectController);\n\nimport TagsController from \"./ts/tags_controller.js\";\napplication.register(\"tags\", TagsController);\n\nimport DocumentFileController from \"./ts/document_file_controller.js\";\napplication.register(\"document-file\", DocumentFileController);\n\nimport UserSelectController from \"./ts/user_select_controller.js\";\napplication.register(\"ts--user-select\", UserSelectController);\n\nimport TrixDefaultToolbarController from \"./trix/trix_default_toolbar_controller.js\";\napplication.register(\"trix-default-toolbar\", TrixDefaultToolbarController);\n\nimport DatepickerController from \"./datepicker_controller\";\napplication.register(\"datepicker\", DatepickerController);\n\nimport CollapseController from \"./collapse_controller.js\";\napplication.register(\"collapse\", CollapseController);\n\nimport PasswordVisibility from \"./password_visibility\";\napplication.register(\"passwordvisibility\", PasswordVisibility);\n\nimport ClearableInputController from \"./clearable_input_controller\";\napplication.register(\"clearable-input\", ClearableInputController);\n\nimport AutosubmitInputController from \"./autosubmit_input_controller.js\";\napplication.register(\"autosubmit-input\", AutosubmitInputController);\n\nimport Dropmenucontroller from \"./dropmenu_controller\";\napplication.register('dropmenu', Dropmenucontroller)\n", "// Entry point for the build script in your package.json\nimport \"@hotwired/turbo-rails\";\nimport \"trix\";\nimport \"@rails/actiontext\";\nimport \"./custom/trix_customization\";\nimport \"./controllers\";\nimport * as ActiveStorage from \"@rails/activestorage\";\nimport \"./jquery\";\nimport \"./custom/libs/jquery-validation/localization/messages_fr\";\nimport \"./custom/elements/todoList\";\nimport \"./custom/elements/todoItem\";\nimport \"./custom/elements/todoInput\";\nimport \"./custom/main\";\nimport \"./custom/form\";\n\nrequire(\"@rails/ujs\").start();\nrequire(\"@nathanvda/cocoon\");\nActiveStorage.start();\n\n$(\"#note_cocoon\").on(\"cocoon:before-remove\", function (e, insertedItem) {\n  fields_count = $(\".nested-fields\").length;\n  if (fields_count <= 1) {\n    e.preventDefault();\n    alert(\"Vous devez garder au moins un bloc de contenu\");\n  }\n});\n\nsetTimeout(function () {\n  $(\".alert\").addClass(\"d-none\");\n}, 6000);\n\nwindow.followLink = (event, url) => {\n  if (\n    event.target &&\n    event.target.nodeName !== \"A\" &&\n    event.target.parentElement.nodeName !== \"A\"\n  ) {\n    window.location = url;\n  }\n};\n", "import jquery from \"jquery\";\nimport jquery_validation from \"jquery-validation\";\nwindow.jQuery = jquery;\nwindow.$ = jquery;\n", "const templateTodo = document.createElement(\"template\");\ntemplateTodo.innerHTML = `\n    <section>\n        <todo-input></todo-input>\n        <ul id=\"list-container\"></ul>\n    </section>\n`;\n\nclass TodoList extends HTMLElement {\n  constructor() {\n    super();\n    // Do not use shadow DOM to avoid problems when testing with selenium\n    // this._root = this.attachShadow({ 'mode': 'open' });\n    // initial state\n    this._list = [\n      { text: \"my initial todo\", checked: false },\n      { text: \"Learn about Web Components\", checked: true },\n    ];\n  }\n\n  connectedCallback() {\n    this.appendChild(templateTodo.content.cloneNode(true));\n    this.$input = this.querySelector(\"todo-input\");\n    this.$listContainer = this.querySelector(\"#list-container\");\n    this.$input.addEventListener(\"onSubmit\", this.addItem.bind(this));\n    this._render();\n  }\n\n  addItem(e) {\n    this._list.push({ text: e.detail, checked: false });\n    this._render();\n  }\n\n  removeItem(e) {\n    this._list.splice(e.detail, 1);\n    this._render();\n  }\n\n  toggleItem(e) {\n    const item = this._list[e.detail];\n    this._list[e.detail] = Object.assign({}, item, {\n      checked: !item.checked,\n    });\n    this._render();\n  }\n\n  disconnectedCallback() {}\n\n  _render() {\n    if (!this.$listContainer) return;\n    // empty the list\n    this.$listContainer.innerHTML = \"\";\n    this._list.forEach((item, index) => {\n      let $item = document.createElement(\"todo-item\");\n      $item.setAttribute(\"text\", item.text);\n      $item.checked = item.checked;\n      $item.index = index;\n      $item.addEventListener(\"onRemove\", this.removeItem.bind(this));\n      $item.addEventListener(\"onToggle\", this.toggleItem.bind(this));\n      this.$listContainer.appendChild($item);\n    });\n  }\n}\n\nwindow.customElements.define(\"todo-list\", TodoList);\n", "const templateTodoItem = document.createElement(\"template\");\ntemplateTodoItem.innerHTML = `\n    <li class=\"item\">\n        <input type=\"checkbox\">\n        <label></label>\n        <button class=\"destroy\">x</button>\n    </li>\n`;\n\nclass TodoItem extends HTMLElement {\n  constructor() {\n    super();\n    // Do not use shadow DOM to avoid problems when testing with selenium\n    // this._root = this.attachShadow({ 'mode': 'open' });\n    this._checked = false;\n    this._text = \"\";\n  }\n\n  connectedCallback() {\n    this.appendChild(templateTodoItem.content.cloneNode(true));\n    this.$item = this.querySelector(\".item\");\n    this.$removeButton = this.querySelector(\".destroy\");\n    this.$text = this.querySelector(\"label\");\n    this.$checkbox = this.querySelector(\"input\");\n    this.$removeButton.addEventListener(\"click\", (e) => {\n      e.preventDefault();\n      this.dispatchEvent(new CustomEvent(\"onRemove\", { detail: this.index }));\n    });\n    this.$checkbox.addEventListener(\"click\", (e) => {\n      e.preventDefault();\n      this.dispatchEvent(new CustomEvent(\"onToggle\", { detail: this.index }));\n    });\n    this._render();\n  }\n\n  disconnectedCallback() {}\n\n  static get observedAttributes() {\n    return [\"text\"];\n  }\n  attributeChangedCallback(name, oldValue, newValue) {\n    this._text = newValue;\n  }\n\n  set index(value) {\n    this._index = value;\n  }\n\n  get index() {\n    return this._index;\n  }\n\n  set checked(value) {\n    this._checked = Boolean(value);\n  }\n\n  get checked() {\n    return this.hasAttribute(\"checked\");\n  }\n\n  _render() {\n    if (!this.$item) return;\n    this.$text.textContent = this._text;\n    if (this._checked) {\n      this.$item.classList.add(\"completed\");\n      this.$checkbox.setAttribute(\"checked\", \"\");\n    } else {\n      this.$item.classList.remove(\"completed\");\n      this.$checkbox.removeAttribute(\"checked\");\n    }\n  }\n}\n\nwindow.customElements.define(\"todo-item\", TodoItem);\n", "const templateTodoInput = document.createElement(\"template\");\ntemplateTodoInput.innerHTML = `\n    <form id=\"new-todo-form\">\n        <input id=\"new-todo\" type=\"text\" placeholder=\"What needs to be done?\">\n    </form>\n`;\n\nclass TodoInput extends HTMLElement {\n  constructor() {\n    super();\n    // Do not use shadow DOM to avoid problems when testing with selenium\n    // this._root = this.attachShadow({ 'mode': 'open' });\n  }\n\n  connectedCallback() {\n    console.log(\"TodoInput ADDED TO THE DOM\");\n    this.appendChild(templateTodoInput.content.cloneNode(true));\n    this.$form = this.querySelector(\"form\");\n    this.$input = this.querySelector(\"input\");\n    this.$form.addEventListener(\"submit\", (e) => {\n      e.preventDefault();\n      if (!this.$input.value) return;\n      this.dispatchEvent(\n        new CustomEvent(\"onSubmit\", { detail: this.$input.value })\n      );\n      this.$input.value = \"\";\n    });\n  }\n\n  disconnectedCallback() {\n    console.log(\"TodoInput REMOVED TO THE DOM\");\n  }\n}\n\nwindow.customElements.define(\"todo-input\", TodoInput);\n", "( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n$.ui = $.ui || {};\n\nreturn $.ui.version = \"1.13.2\";\n\n} );\n", "( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\n// $.ui.plugin is deprecated. Use $.widget() extensions instead.\nreturn $.ui.plugin = {\n\tadd: function( module, option, set ) {\n\t\tvar i,\n\t\t\tproto = $.ui[ module ].prototype;\n\t\tfor ( i in set ) {\n\t\t\tproto.plugins[ i ] = proto.plugins[ i ] || [];\n\t\t\tproto.plugins[ i ].push( [ option, set[ i ] ] );\n\t\t}\n\t},\n\tcall: function( instance, name, args, allowDisconnected ) {\n\t\tvar i,\n\t\t\tset = instance.plugins[ name ];\n\n\t\tif ( !set ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !allowDisconnected && ( !instance.element[ 0 ].parentNode ||\n\t\t\t\tinstance.element[ 0 ].parentNode.nodeType === 11 ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfor ( i = 0; i < set.length; i++ ) {\n\t\t\tif ( instance.options[ set[ i ][ 0 ] ] ) {\n\t\t\t\tset[ i ][ 1 ].apply( instance.element, args );\n\t\t\t}\n\t\t}\n\t}\n};\n\n} );\n", "/*!\n * jQuery UI Widget 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Widget\n//>>group: Core\n//>>description: Provides a factory for creating stateful widgets with a common API.\n//>>docs: http://api.jqueryui.com/jQuery.widget/\n//>>demos: http://jqueryui.com/widget/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nvar widgetUuid = 0;\nvar widgetHasOwnProperty = Array.prototype.hasOwnProperty;\nvar widgetSlice = Array.prototype.slice;\n\n$.cleanData = ( function( orig ) {\n\treturn function( elems ) {\n\t\tvar events, elem, i;\n\t\tfor ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {\n\n\t\t\t// Only trigger remove when necessary to save time\n\t\t\tevents = $._data( elem, \"events\" );\n\t\t\tif ( events && events.remove ) {\n\t\t\t\t$( elem ).triggerHandler( \"remove\" );\n\t\t\t}\n\t\t}\n\t\torig( elems );\n\t};\n} )( $.cleanData );\n\n$.widget = function( name, base, prototype ) {\n\tvar existingConstructor, constructor, basePrototype;\n\n\t// ProxiedPrototype allows the provided prototype to remain unmodified\n\t// so that it can be used as a mixin for multiple widgets (#8876)\n\tvar proxiedPrototype = {};\n\n\tvar namespace = name.split( \".\" )[ 0 ];\n\tname = name.split( \".\" )[ 1 ];\n\tvar fullName = namespace + \"-\" + name;\n\n\tif ( !prototype ) {\n\t\tprototype = base;\n\t\tbase = $.Widget;\n\t}\n\n\tif ( Array.isArray( prototype ) ) {\n\t\tprototype = $.extend.apply( null, [ {} ].concat( prototype ) );\n\t}\n\n\t// Create selector for plugin\n\t$.expr.pseudos[ fullName.toLowerCase() ] = function( elem ) {\n\t\treturn !!$.data( elem, fullName );\n\t};\n\n\t$[ namespace ] = $[ namespace ] || {};\n\texistingConstructor = $[ namespace ][ name ];\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\n\n\t\t// Allow instantiation without \"new\" keyword\n\t\tif ( !this || !this._createWidget ) {\n\t\t\treturn new constructor( options, element );\n\t\t}\n\n\t\t// Allow instantiation without initializing for simple inheritance\n\t\t// must use \"new\" keyword (the code above always passes args)\n\t\tif ( arguments.length ) {\n\t\t\tthis._createWidget( options, element );\n\t\t}\n\t};\n\n\t// Extend with the existing constructor to carry over any static properties\n\t$.extend( constructor, existingConstructor, {\n\t\tversion: prototype.version,\n\n\t\t// Copy the object used to create the prototype in case we need to\n\t\t// redefine the widget later\n\t\t_proto: $.extend( {}, prototype ),\n\n\t\t// Track widgets that inherit from this widget in case this widget is\n\t\t// redefined after a widget inherits from it\n\t\t_childConstructors: []\n\t} );\n\n\tbasePrototype = new base();\n\n\t// We need to make the options hash a property directly on the new instance\n\t// otherwise we'll modify the options hash on the prototype that we're\n\t// inheriting from\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\n\t$.each( prototype, function( prop, value ) {\n\t\tif ( typeof value !== \"function\" ) {\n\t\t\tproxiedPrototype[ prop ] = value;\n\t\t\treturn;\n\t\t}\n\t\tproxiedPrototype[ prop ] = ( function() {\n\t\t\tfunction _super() {\n\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\n\t\t\t}\n\n\t\t\tfunction _superApply( args ) {\n\t\t\t\treturn base.prototype[ prop ].apply( this, args );\n\t\t\t}\n\n\t\t\treturn function() {\n\t\t\t\tvar __super = this._super;\n\t\t\t\tvar __superApply = this._superApply;\n\t\t\t\tvar returnValue;\n\n\t\t\t\tthis._super = _super;\n\t\t\t\tthis._superApply = _superApply;\n\n\t\t\t\treturnValue = value.apply( this, arguments );\n\n\t\t\t\tthis._super = __super;\n\t\t\t\tthis._superApply = __superApply;\n\n\t\t\t\treturn returnValue;\n\t\t\t};\n\t\t} )();\n\t} );\n\tconstructor.prototype = $.widget.extend( basePrototype, {\n\n\t\t// TODO: remove support for widgetEventPrefix\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\n\t\t// don't prefix for widgets that aren't DOM-based\n\t\twidgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name\n\t}, proxiedPrototype, {\n\t\tconstructor: constructor,\n\t\tnamespace: namespace,\n\t\twidgetName: name,\n\t\twidgetFullName: fullName\n\t} );\n\n\t// If this widget is being redefined then we need to find all widgets that\n\t// are inheriting from it and redefine all of them so that they inherit from\n\t// the new version of this widget. We're essentially trying to replace one\n\t// level in the prototype chain.\n\tif ( existingConstructor ) {\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\n\t\t\tvar childPrototype = child.prototype;\n\n\t\t\t// Redefine the child widget using the same prototype that was\n\t\t\t// originally used, but inherit from the new version of the base\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor,\n\t\t\t\tchild._proto );\n\t\t} );\n\n\t\t// Remove the list of existing child constructors from the old constructor\n\t\t// so the old child constructors can be garbage collected\n\t\tdelete existingConstructor._childConstructors;\n\t} else {\n\t\tbase._childConstructors.push( constructor );\n\t}\n\n\t$.widget.bridge( name, constructor );\n\n\treturn constructor;\n};\n\n$.widget.extend = function( target ) {\n\tvar input = widgetSlice.call( arguments, 1 );\n\tvar inputIndex = 0;\n\tvar inputLength = input.length;\n\tvar key;\n\tvar value;\n\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\n\t\tfor ( key in input[ inputIndex ] ) {\n\t\t\tvalue = input[ inputIndex ][ key ];\n\t\t\tif ( widgetHasOwnProperty.call( input[ inputIndex ], key ) && value !== undefined ) {\n\n\t\t\t\t// Clone objects\n\t\t\t\tif ( $.isPlainObject( value ) ) {\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\n\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\n\t\t\t\t\t\t$.widget.extend( {}, value );\n\n\t\t\t\t// Copy everything else by reference\n\t\t\t\t} else {\n\t\t\t\t\ttarget[ key ] = value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn target;\n};\n\n$.widget.bridge = function( name, object ) {\n\tvar fullName = object.prototype.widgetFullName || name;\n\t$.fn[ name ] = function( options ) {\n\t\tvar isMethodCall = typeof options === \"string\";\n\t\tvar args = widgetSlice.call( arguments, 1 );\n\t\tvar returnValue = this;\n\n\t\tif ( isMethodCall ) {\n\n\t\t\t// If this is an empty collection, we need to have the instance method\n\t\t\t// return undefined instead of the jQuery instance\n\t\t\tif ( !this.length && options === \"instance\" ) {\n\t\t\t\treturnValue = undefined;\n\t\t\t} else {\n\t\t\t\tthis.each( function() {\n\t\t\t\t\tvar methodValue;\n\t\t\t\t\tvar instance = $.data( this, fullName );\n\n\t\t\t\t\tif ( options === \"instance\" ) {\n\t\t\t\t\t\treturnValue = instance;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !instance ) {\n\t\t\t\t\t\treturn $.error( \"cannot call methods on \" + name +\n\t\t\t\t\t\t\t\" prior to initialization; \" +\n\t\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( typeof instance[ options ] !== \"function\" ||\n\t\t\t\t\t\toptions.charAt( 0 ) === \"_\" ) {\n\t\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name +\n\t\t\t\t\t\t\t\" widget instance\" );\n\t\t\t\t\t}\n\n\t\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\n\n\t\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\n\t\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\n\t\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\n\t\t\t\t\t\t\tmethodValue;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// Allow multiple hashes to be passed on init\n\t\t\tif ( args.length ) {\n\t\t\t\toptions = $.widget.extend.apply( null, [ options ].concat( args ) );\n\t\t\t}\n\n\t\t\tthis.each( function() {\n\t\t\t\tvar instance = $.data( this, fullName );\n\t\t\t\tif ( instance ) {\n\t\t\t\t\tinstance.option( options || {} );\n\t\t\t\t\tif ( instance._init ) {\n\t\t\t\t\t\tinstance._init();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn returnValue;\n\t};\n};\n\n$.Widget = function( /* options, element */ ) {};\n$.Widget._childConstructors = [];\n\n$.Widget.prototype = {\n\twidgetName: \"widget\",\n\twidgetEventPrefix: \"\",\n\tdefaultElement: \"<div>\",\n\n\toptions: {\n\t\tclasses: {},\n\t\tdisabled: false,\n\n\t\t// Callbacks\n\t\tcreate: null\n\t},\n\n\t_createWidget: function( options, element ) {\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\n\t\tthis.element = $( element );\n\t\tthis.uuid = widgetUuid++;\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\n\n\t\tthis.bindings = $();\n\t\tthis.hoverable = $();\n\t\tthis.focusable = $();\n\t\tthis.classesElementLookup = {};\n\n\t\tif ( element !== this ) {\n\t\t\t$.data( element, this.widgetFullName, this );\n\t\t\tthis._on( true, this.element, {\n\t\t\t\tremove: function( event ) {\n\t\t\t\t\tif ( event.target === element ) {\n\t\t\t\t\t\tthis.destroy();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t\tthis.document = $( element.style ?\n\n\t\t\t\t// Element within the document\n\t\t\t\telement.ownerDocument :\n\n\t\t\t\t// Element is window or document\n\t\t\t\telement.document || element );\n\t\t\tthis.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );\n\t\t}\n\n\t\tthis.options = $.widget.extend( {},\n\t\t\tthis.options,\n\t\t\tthis._getCreateOptions(),\n\t\t\toptions );\n\n\t\tthis._create();\n\n\t\tif ( this.options.disabled ) {\n\t\t\tthis._setOptionDisabled( this.options.disabled );\n\t\t}\n\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\n\t\tthis._init();\n\t},\n\n\t_getCreateOptions: function() {\n\t\treturn {};\n\t},\n\n\t_getCreateEventData: $.noop,\n\n\t_create: $.noop,\n\n\t_init: $.noop,\n\n\tdestroy: function() {\n\t\tvar that = this;\n\n\t\tthis._destroy();\n\t\t$.each( this.classesElementLookup, function( key, value ) {\n\t\t\tthat._removeClass( value, key );\n\t\t} );\n\n\t\t// We can probably remove the unbind calls in 2.0\n\t\t// all event bindings should go through this._on()\n\t\tthis.element\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeData( this.widgetFullName );\n\t\tthis.widget()\n\t\t\t.off( this.eventNamespace )\n\t\t\t.removeAttr( \"aria-disabled\" );\n\n\t\t// Clean up events and states\n\t\tthis.bindings.off( this.eventNamespace );\n\t},\n\n\t_destroy: $.noop,\n\n\twidget: function() {\n\t\treturn this.element;\n\t},\n\n\toption: function( key, value ) {\n\t\tvar options = key;\n\t\tvar parts;\n\t\tvar curOption;\n\t\tvar i;\n\n\t\tif ( arguments.length === 0 ) {\n\n\t\t\t// Don't return a reference to the internal hash\n\t\t\treturn $.widget.extend( {}, this.options );\n\t\t}\n\n\t\tif ( typeof key === \"string\" ) {\n\n\t\t\t// Handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\n\t\t\toptions = {};\n\t\t\tparts = key.split( \".\" );\n\t\t\tkey = parts.shift();\n\t\t\tif ( parts.length ) {\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\n\t\t\t\t}\n\t\t\t\tkey = parts.pop();\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\n\t\t\t\t}\n\t\t\t\tcurOption[ key ] = value;\n\t\t\t} else {\n\t\t\t\tif ( arguments.length === 1 ) {\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\n\t\t\t\t}\n\t\t\t\toptions[ key ] = value;\n\t\t\t}\n\t\t}\n\n\t\tthis._setOptions( options );\n\n\t\treturn this;\n\t},\n\n\t_setOptions: function( options ) {\n\t\tvar key;\n\n\t\tfor ( key in options ) {\n\t\t\tthis._setOption( key, options[ key ] );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tif ( key === \"classes\" ) {\n\t\t\tthis._setOptionClasses( value );\n\t\t}\n\n\t\tthis.options[ key ] = value;\n\n\t\tif ( key === \"disabled\" ) {\n\t\t\tthis._setOptionDisabled( value );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_setOptionClasses: function( value ) {\n\t\tvar classKey, elements, currentElements;\n\n\t\tfor ( classKey in value ) {\n\t\t\tcurrentElements = this.classesElementLookup[ classKey ];\n\t\t\tif ( value[ classKey ] === this.options.classes[ classKey ] ||\n\t\t\t\t\t!currentElements ||\n\t\t\t\t\t!currentElements.length ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// We are doing this to create a new jQuery object because the _removeClass() call\n\t\t\t// on the next line is going to destroy the reference to the current elements being\n\t\t\t// tracked. We need to save a copy of this collection so that we can add the new classes\n\t\t\t// below.\n\t\t\telements = $( currentElements.get() );\n\t\t\tthis._removeClass( currentElements, classKey );\n\n\t\t\t// We don't use _addClass() here, because that uses this.options.classes\n\t\t\t// for generating the string of classes. We want to use the value passed in from\n\t\t\t// _setOption(), this is the new value of the classes option which was passed to\n\t\t\t// _setOption(). We pass this value directly to _classes().\n\t\t\telements.addClass( this._classes( {\n\t\t\t\telement: elements,\n\t\t\t\tkeys: classKey,\n\t\t\t\tclasses: value,\n\t\t\t\tadd: true\n\t\t\t} ) );\n\t\t}\n\t},\n\n\t_setOptionDisabled: function( value ) {\n\t\tthis._toggleClass( this.widget(), this.widgetFullName + \"-disabled\", null, !!value );\n\n\t\t// If the widget is becoming disabled, then nothing is interactive\n\t\tif ( value ) {\n\t\t\tthis._removeClass( this.hoverable, null, \"ui-state-hover\" );\n\t\t\tthis._removeClass( this.focusable, null, \"ui-state-focus\" );\n\t\t}\n\t},\n\n\tenable: function() {\n\t\treturn this._setOptions( { disabled: false } );\n\t},\n\n\tdisable: function() {\n\t\treturn this._setOptions( { disabled: true } );\n\t},\n\n\t_classes: function( options ) {\n\t\tvar full = [];\n\t\tvar that = this;\n\n\t\toptions = $.extend( {\n\t\t\telement: this.element,\n\t\t\tclasses: this.options.classes || {}\n\t\t}, options );\n\n\t\tfunction bindRemoveEvent() {\n\t\t\tvar nodesToBind = [];\n\n\t\t\toptions.element.each( function( _, element ) {\n\t\t\t\tvar isTracked = $.map( that.classesElementLookup, function( elements ) {\n\t\t\t\t\treturn elements;\n\t\t\t\t} )\n\t\t\t\t\t.some( function( elements ) {\n\t\t\t\t\t\treturn elements.is( element );\n\t\t\t\t\t} );\n\n\t\t\t\tif ( !isTracked ) {\n\t\t\t\t\tnodesToBind.push( element );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tthat._on( $( nodesToBind ), {\n\t\t\t\tremove: \"_untrackClassesElement\"\n\t\t\t} );\n\t\t}\n\n\t\tfunction processClassString( classes, checkOption ) {\n\t\t\tvar current, i;\n\t\t\tfor ( i = 0; i < classes.length; i++ ) {\n\t\t\t\tcurrent = that.classesElementLookup[ classes[ i ] ] || $();\n\t\t\t\tif ( options.add ) {\n\t\t\t\t\tbindRemoveEvent();\n\t\t\t\t\tcurrent = $( $.uniqueSort( current.get().concat( options.element.get() ) ) );\n\t\t\t\t} else {\n\t\t\t\t\tcurrent = $( current.not( options.element ).get() );\n\t\t\t\t}\n\t\t\t\tthat.classesElementLookup[ classes[ i ] ] = current;\n\t\t\t\tfull.push( classes[ i ] );\n\t\t\t\tif ( checkOption && options.classes[ classes[ i ] ] ) {\n\t\t\t\t\tfull.push( options.classes[ classes[ i ] ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( options.keys ) {\n\t\t\tprocessClassString( options.keys.match( /\\S+/g ) || [], true );\n\t\t}\n\t\tif ( options.extra ) {\n\t\t\tprocessClassString( options.extra.match( /\\S+/g ) || [] );\n\t\t}\n\n\t\treturn full.join( \" \" );\n\t},\n\n\t_untrackClassesElement: function( event ) {\n\t\tvar that = this;\n\t\t$.each( that.classesElementLookup, function( key, value ) {\n\t\t\tif ( $.inArray( event.target, value ) !== -1 ) {\n\t\t\t\tthat.classesElementLookup[ key ] = $( value.not( event.target ).get() );\n\t\t\t}\n\t\t} );\n\n\t\tthis._off( $( event.target ) );\n\t},\n\n\t_removeClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, false );\n\t},\n\n\t_addClass: function( element, keys, extra ) {\n\t\treturn this._toggleClass( element, keys, extra, true );\n\t},\n\n\t_toggleClass: function( element, keys, extra, add ) {\n\t\tadd = ( typeof add === \"boolean\" ) ? add : extra;\n\t\tvar shift = ( typeof element === \"string\" || element === null ),\n\t\t\toptions = {\n\t\t\t\textra: shift ? keys : extra,\n\t\t\t\tkeys: shift ? element : keys,\n\t\t\t\telement: shift ? this.element : element,\n\t\t\t\tadd: add\n\t\t\t};\n\t\toptions.element.toggleClass( this._classes( options ), add );\n\t\treturn this;\n\t},\n\n\t_on: function( suppressDisabledCheck, element, handlers ) {\n\t\tvar delegateElement;\n\t\tvar instance = this;\n\n\t\t// No suppressDisabledCheck flag, shuffle arguments\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\n\t\t\thandlers = element;\n\t\t\telement = suppressDisabledCheck;\n\t\t\tsuppressDisabledCheck = false;\n\t\t}\n\n\t\t// No element argument, shuffle and use this.element\n\t\tif ( !handlers ) {\n\t\t\thandlers = element;\n\t\t\telement = this.element;\n\t\t\tdelegateElement = this.widget();\n\t\t} else {\n\t\t\telement = delegateElement = $( element );\n\t\t\tthis.bindings = this.bindings.add( element );\n\t\t}\n\n\t\t$.each( handlers, function( event, handler ) {\n\t\t\tfunction handlerProxy() {\n\n\t\t\t\t// Allow widgets to customize the disabled handling\n\t\t\t\t// - disabled as an array instead of boolean\n\t\t\t\t// - disabled class as method for disabling individual parts\n\t\t\t\tif ( !suppressDisabledCheck &&\n\t\t\t\t\t\t( instance.options.disabled === true ||\n\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t\t.apply( instance, arguments );\n\t\t\t}\n\n\t\t\t// Copy the guid so direct unbinding works\n\t\t\tif ( typeof handler !== \"string\" ) {\n\t\t\t\thandlerProxy.guid = handler.guid =\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\n\t\t\t}\n\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ );\n\t\t\tvar eventName = match[ 1 ] + instance.eventNamespace;\n\t\t\tvar selector = match[ 2 ];\n\n\t\t\tif ( selector ) {\n\t\t\t\tdelegateElement.on( eventName, selector, handlerProxy );\n\t\t\t} else {\n\t\t\t\telement.on( eventName, handlerProxy );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_off: function( element, eventName ) {\n\t\teventName = ( eventName || \"\" ).split( \" \" ).join( this.eventNamespace + \" \" ) +\n\t\t\tthis.eventNamespace;\n\t\telement.off( eventName );\n\n\t\t// Clear the stack to avoid memory leaks (#10056)\n\t\tthis.bindings = $( this.bindings.not( element ).get() );\n\t\tthis.focusable = $( this.focusable.not( element ).get() );\n\t\tthis.hoverable = $( this.hoverable.not( element ).get() );\n\t},\n\n\t_delay: function( handler, delay ) {\n\t\tfunction handlerProxy() {\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\n\t\t\t\t.apply( instance, arguments );\n\t\t}\n\t\tvar instance = this;\n\t\treturn setTimeout( handlerProxy, delay || 0 );\n\t},\n\n\t_hoverable: function( element ) {\n\t\tthis.hoverable = this.hoverable.add( element );\n\t\tthis._on( element, {\n\t\t\tmouseenter: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t},\n\t\t\tmouseleave: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-hover\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_focusable: function( element ) {\n\t\tthis.focusable = this.focusable.add( element );\n\t\tthis._on( element, {\n\t\t\tfocusin: function( event ) {\n\t\t\t\tthis._addClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t},\n\t\t\tfocusout: function( event ) {\n\t\t\t\tthis._removeClass( $( event.currentTarget ), null, \"ui-state-focus\" );\n\t\t\t}\n\t\t} );\n\t},\n\n\t_trigger: function( type, event, data ) {\n\t\tvar prop, orig;\n\t\tvar callback = this.options[ type ];\n\n\t\tdata = data || {};\n\t\tevent = $.Event( event );\n\t\tevent.type = ( type === this.widgetEventPrefix ?\n\t\t\ttype :\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\n\n\t\t// The original event may come from any element\n\t\t// so we need to reset the target on the new event\n\t\tevent.target = this.element[ 0 ];\n\n\t\t// Copy original event properties over to the new event\n\t\torig = event.originalEvent;\n\t\tif ( orig ) {\n\t\t\tfor ( prop in orig ) {\n\t\t\t\tif ( !( prop in event ) ) {\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.element.trigger( event, data );\n\t\treturn !( typeof callback === \"function\" &&\n\t\t\tcallback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||\n\t\t\tevent.isDefaultPrevented() );\n\t}\n};\n\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\n\t\tif ( typeof options === \"string\" ) {\n\t\t\toptions = { effect: options };\n\t\t}\n\n\t\tvar hasOptions;\n\t\tvar effectName = !options ?\n\t\t\tmethod :\n\t\t\toptions === true || typeof options === \"number\" ?\n\t\t\t\tdefaultEffect :\n\t\t\t\toptions.effect || defaultEffect;\n\n\t\toptions = options || {};\n\t\tif ( typeof options === \"number\" ) {\n\t\t\toptions = { duration: options };\n\t\t} else if ( options === true ) {\n\t\t\toptions = {};\n\t\t}\n\n\t\thasOptions = !$.isEmptyObject( options );\n\t\toptions.complete = callback;\n\n\t\tif ( options.delay ) {\n\t\t\telement.delay( options.delay );\n\t\t}\n\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\n\t\t\telement[ method ]( options );\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\n\t\t} else {\n\t\t\telement.queue( function( next ) {\n\t\t\t\t$( this )[ method ]();\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback.call( element[ 0 ] );\n\t\t\t\t}\n\t\t\t\tnext();\n\t\t\t} );\n\t\t}\n\t};\n} );\n\nreturn $.widget;\n\n} );\n", "/*!\n * jQuery UI :data 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: :data Selector\n//>>group: Core\n//>>description: Selects elements which have data stored under the specified key.\n//>>docs: http://api.jqueryui.com/data-selector/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.extend( $.expr.pseudos, {\n\tdata: $.expr.createPseudo ?\n\t\t$.expr.createPseudo( function( dataName ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn !!$.data( elem, dataName );\n\t\t\t};\n\t\t} ) :\n\n\t\t// Support: jQuery <1.8\n\t\tfunction( elem, i, match ) {\n\t\t\treturn !!$.data( elem, match[ 3 ] );\n\t\t}\n} );\n} );\n", "/*!\n * jQuery UI Scroll Parent 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: scrollParent\n//>>group: Core\n//>>description: Get the closest ancestor element that is scrollable.\n//>>docs: http://api.jqueryui.com/scrollParent/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [ \"jquery\", \"./version\" ], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.fn.scrollParent = function( includeHidden ) {\n\tvar position = this.css( \"position\" ),\n\t\texcludeStaticParent = position === \"absolute\",\n\t\toverflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/,\n\t\tscrollParent = this.parents().filter( function() {\n\t\t\tvar parent = $( this );\n\t\t\tif ( excludeStaticParent && parent.css( \"position\" ) === \"static\" ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn overflowRegex.test( parent.css( \"overflow\" ) + parent.css( \"overflow-y\" ) +\n\t\t\t\tparent.css( \"overflow-x\" ) );\n\t\t} ).eq( 0 );\n\n\treturn position === \"fixed\" || !scrollParent.length ?\n\t\t$( this[ 0 ].ownerDocument || document ) :\n\t\tscrollParent;\n};\n\n} );\n", "/*!\n * jQuery UI Mouse 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Mouse\n//>>group: Widgets\n//>>description: Abstracts mouse-based interactions to assist in creating certain widgets.\n//>>docs: http://api.jqueryui.com/mouse/\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"../ie\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nvar mouseHandled = false;\n$( document ).on( \"mouseup\", function() {\n\tmouseHandled = false;\n} );\n\nreturn $.widget( \"ui.mouse\", {\n\tversion: \"1.13.2\",\n\toptions: {\n\t\tcancel: \"input, textarea, button, select, option\",\n\t\tdistance: 1,\n\t\tdelay: 0\n\t},\n\t_mouseInit: function() {\n\t\tvar that = this;\n\n\t\tthis.element\n\t\t\t.on( \"mousedown.\" + this.widgetName, function( event ) {\n\t\t\t\treturn that._mouseDown( event );\n\t\t\t} )\n\t\t\t.on( \"click.\" + this.widgetName, function( event ) {\n\t\t\t\tif ( true === $.data( event.target, that.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t\t\t$.removeData( event.target, that.widgetName + \".preventClickEvent\" );\n\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\n\t\tthis.started = false;\n\t},\n\n\t// TODO: make sure destroying one instance of mouse doesn't mess with\n\t// other instances of mouse\n\t_mouseDestroy: function() {\n\t\tthis.element.off( \".\" + this.widgetName );\n\t\tif ( this._mouseMoveDelegate ) {\n\t\t\tthis.document\n\t\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\t\t}\n\t},\n\n\t_mouseDown: function( event ) {\n\n\t\t// don't let more than one widget handle mouseStart\n\t\tif ( mouseHandled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._mouseMoved = false;\n\n\t\t// We may have missed mouseup (out of window)\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseUp( event );\n\t\t}\n\n\t\tthis._mouseDownEvent = event;\n\n\t\tvar that = this,\n\t\t\tbtnIsLeft = ( event.which === 1 ),\n\n\t\t\t// event.target.nodeName works around a bug in IE 8 with\n\t\t\t// disabled inputs (#7620)\n\t\t\telIsCancel = ( typeof this.options.cancel === \"string\" && event.target.nodeName ?\n\t\t\t\t$( event.target ).closest( this.options.cancel ).length : false );\n\t\tif ( !btnIsLeft || elIsCancel || !this._mouseCapture( event ) ) {\n\t\t\treturn true;\n\t\t}\n\n\t\tthis.mouseDelayMet = !this.options.delay;\n\t\tif ( !this.mouseDelayMet ) {\n\t\t\tthis._mouseDelayTimer = setTimeout( function() {\n\t\t\t\tthat.mouseDelayMet = true;\n\t\t\t}, this.options.delay );\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted = ( this._mouseStart( event ) !== false );\n\t\t\tif ( !this._mouseStarted ) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\t// Click event may never have fired (Gecko & Opera)\n\t\tif ( true === $.data( event.target, this.widgetName + \".preventClickEvent\" ) ) {\n\t\t\t$.removeData( event.target, this.widgetName + \".preventClickEvent\" );\n\t\t}\n\n\t\t// These delegates are required to keep context\n\t\tthis._mouseMoveDelegate = function( event ) {\n\t\t\treturn that._mouseMove( event );\n\t\t};\n\t\tthis._mouseUpDelegate = function( event ) {\n\t\t\treturn that._mouseUp( event );\n\t\t};\n\n\t\tthis.document\n\t\t\t.on( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.on( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tevent.preventDefault();\n\n\t\tmouseHandled = true;\n\t\treturn true;\n\t},\n\n\t_mouseMove: function( event ) {\n\n\t\t// Only check for mouseups outside the document if you've moved inside the document\n\t\t// at least once. This prevents the firing of mouseup in the case of IE<9, which will\n\t\t// fire a mousemove event if content is placed under the cursor. See #7778\n\t\t// Support: IE <9\n\t\tif ( this._mouseMoved ) {\n\n\t\t\t// IE mouseup check - mouseup happened when mouse was out of window\n\t\t\tif ( $.ui.ie && ( !document.documentMode || document.documentMode < 9 ) &&\n\t\t\t\t\t!event.button ) {\n\t\t\t\treturn this._mouseUp( event );\n\n\t\t\t// Iframe mouseup check - mouseup occurred in another document\n\t\t\t} else if ( !event.which ) {\n\n\t\t\t\t// Support: Safari <=8 - 9\n\t\t\t\t// Safari sets which to 0 if you press any of the following keys\n\t\t\t\t// during a drag (#14461)\n\t\t\t\tif ( event.originalEvent.altKey || event.originalEvent.ctrlKey ||\n\t\t\t\t\t\tevent.originalEvent.metaKey || event.originalEvent.shiftKey ) {\n\t\t\t\t\tthis.ignoreMissingWhich = true;\n\t\t\t\t} else if ( !this.ignoreMissingWhich ) {\n\t\t\t\t\treturn this._mouseUp( event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( event.which || event.button ) {\n\t\t\tthis._mouseMoved = true;\n\t\t}\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseDrag( event );\n\t\t\treturn event.preventDefault();\n\t\t}\n\n\t\tif ( this._mouseDistanceMet( event ) && this._mouseDelayMet( event ) ) {\n\t\t\tthis._mouseStarted =\n\t\t\t\t( this._mouseStart( this._mouseDownEvent, event ) !== false );\n\t\t\tif ( this._mouseStarted ) {\n\t\t\t\tthis._mouseDrag( event );\n\t\t\t} else {\n\t\t\t\tthis._mouseUp( event );\n\t\t\t}\n\t\t}\n\n\t\treturn !this._mouseStarted;\n\t},\n\n\t_mouseUp: function( event ) {\n\t\tthis.document\n\t\t\t.off( \"mousemove.\" + this.widgetName, this._mouseMoveDelegate )\n\t\t\t.off( \"mouseup.\" + this.widgetName, this._mouseUpDelegate );\n\n\t\tif ( this._mouseStarted ) {\n\t\t\tthis._mouseStarted = false;\n\n\t\t\tif ( event.target === this._mouseDownEvent.target ) {\n\t\t\t\t$.data( event.target, this.widgetName + \".preventClickEvent\", true );\n\t\t\t}\n\n\t\t\tthis._mouseStop( event );\n\t\t}\n\n\t\tif ( this._mouseDelayTimer ) {\n\t\t\tclearTimeout( this._mouseDelayTimer );\n\t\t\tdelete this._mouseDelayTimer;\n\t\t}\n\n\t\tthis.ignoreMissingWhich = false;\n\t\tmouseHandled = false;\n\t\tevent.preventDefault();\n\t},\n\n\t_mouseDistanceMet: function( event ) {\n\t\treturn ( Math.max(\n\t\t\t\tMath.abs( this._mouseDownEvent.pageX - event.pageX ),\n\t\t\t\tMath.abs( this._mouseDownEvent.pageY - event.pageY )\n\t\t\t) >= this.options.distance\n\t\t);\n\t},\n\n\t_mouseDelayMet: function( /* event */ ) {\n\t\treturn this.mouseDelayMet;\n\t},\n\n\t// These are placeholder methods, to be overriden by extending plugin\n\t_mouseStart: function( /* event */ ) {},\n\t_mouseDrag: function( /* event */ ) {},\n\t_mouseStop: function( /* event */ ) {},\n\t_mouseCapture: function( /* event */ ) {\n\t\treturn true;\n\t}\n} );\n\n} );\n", "/*!\n * jQuery UI Sortable 1.13.2\n * http://jqueryui.com\n *\n * Copyright jQuery Foundation and other contributors\n * Released under the MIT license.\n * http://jquery.org/license\n */\n\n//>>label: Sortable\n//>>group: Interactions\n//>>description: Enables items in a list to be sorted using the mouse.\n//>>docs: http://api.jqueryui.com/sortable/\n//>>demos: http://jqueryui.com/sortable/\n//>>css.structure: ../../themes/base/sortable.css\n\n( function( factory ) {\n\t\"use strict\";\n\n\tif ( typeof define === \"function\" && define.amd ) {\n\n\t\t// AMD. Register as an anonymous module.\n\t\tdefine( [\n\t\t\t\"jquery\",\n\t\t\t\"./mouse\",\n\t\t\t\"../data\",\n\t\t\t\"../ie\",\n\t\t\t\"../scroll-parent\",\n\t\t\t\"../version\",\n\t\t\t\"../widget\"\n\t\t], factory );\n\t} else {\n\n\t\t// Browser globals\n\t\tfactory( jQuery );\n\t}\n} )( function( $ ) {\n\"use strict\";\n\nreturn $.widget( \"ui.sortable\", $.ui.mouse, {\n\tversion: \"1.13.2\",\n\twidgetEventPrefix: \"sort\",\n\tready: false,\n\toptions: {\n\t\tappendTo: \"parent\",\n\t\taxis: false,\n\t\tconnectWith: false,\n\t\tcontainment: false,\n\t\tcursor: \"auto\",\n\t\tcursorAt: false,\n\t\tdropOnEmpty: true,\n\t\tforcePlaceholderSize: false,\n\t\tforceHelperSize: false,\n\t\tgrid: false,\n\t\thandle: false,\n\t\thelper: \"original\",\n\t\titems: \"> *\",\n\t\topacity: false,\n\t\tplaceholder: false,\n\t\trevert: false,\n\t\tscroll: true,\n\t\tscrollSensitivity: 20,\n\t\tscrollSpeed: 20,\n\t\tscope: \"default\",\n\t\ttolerance: \"intersect\",\n\t\tzIndex: 1000,\n\n\t\t// Callbacks\n\t\tactivate: null,\n\t\tbeforeStop: null,\n\t\tchange: null,\n\t\tdeactivate: null,\n\t\tout: null,\n\t\tover: null,\n\t\treceive: null,\n\t\tremove: null,\n\t\tsort: null,\n\t\tstart: null,\n\t\tstop: null,\n\t\tupdate: null\n\t},\n\n\t_isOverAxis: function( x, reference, size ) {\n\t\treturn ( x >= reference ) && ( x < ( reference + size ) );\n\t},\n\n\t_isFloating: function( item ) {\n\t\treturn ( /left|right/ ).test( item.css( \"float\" ) ) ||\n\t\t\t( /inline|table-cell/ ).test( item.css( \"display\" ) );\n\t},\n\n\t_create: function() {\n\t\tthis.containerCache = {};\n\t\tthis._addClass( \"ui-sortable\" );\n\n\t\t//Get the items\n\t\tthis.refresh();\n\n\t\t//Let's determine the parent's offset\n\t\tthis.offset = this.element.offset();\n\n\t\t//Initialize mouse events for interaction\n\t\tthis._mouseInit();\n\n\t\tthis._setHandleClassName();\n\n\t\t//We're ready to go\n\t\tthis.ready = true;\n\n\t},\n\n\t_setOption: function( key, value ) {\n\t\tthis._super( key, value );\n\n\t\tif ( key === \"handle\" ) {\n\t\t\tthis._setHandleClassName();\n\t\t}\n\t},\n\n\t_setHandleClassName: function() {\n\t\tvar that = this;\n\t\tthis._removeClass( this.element.find( \".ui-sortable-handle\" ), \"ui-sortable-handle\" );\n\t\t$.each( this.items, function() {\n\t\t\tthat._addClass(\n\t\t\t\tthis.instance.options.handle ?\n\t\t\t\t\tthis.item.find( this.instance.options.handle ) :\n\t\t\t\t\tthis.item,\n\t\t\t\t\"ui-sortable-handle\"\n\t\t\t);\n\t\t} );\n\t},\n\n\t_destroy: function() {\n\t\tthis._mouseDestroy();\n\n\t\tfor ( var i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\tthis.items[ i ].item.removeData( this.widgetName + \"-item\" );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_mouseCapture: function( event, overrideHandle ) {\n\t\tvar currentItem = null,\n\t\t\tvalidHandle = false,\n\t\t\tthat = this;\n\n\t\tif ( this.reverting ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.options.disabled || this.options.type === \"static\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\t//We have to refresh the items data once first\n\t\tthis._refreshItems( event );\n\n\t\t//Find out if the clicked node (or one of its parents) is a actual item in this.items\n\t\t$( event.target ).parents().each( function() {\n\t\t\tif ( $.data( this, that.widgetName + \"-item\" ) === that ) {\n\t\t\t\tcurrentItem = $( this );\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} );\n\t\tif ( $.data( event.target, that.widgetName + \"-item\" ) === that ) {\n\t\t\tcurrentItem = $( event.target );\n\t\t}\n\n\t\tif ( !currentItem ) {\n\t\t\treturn false;\n\t\t}\n\t\tif ( this.options.handle && !overrideHandle ) {\n\t\t\t$( this.options.handle, currentItem ).find( \"*\" ).addBack().each( function() {\n\t\t\t\tif ( this === event.target ) {\n\t\t\t\t\tvalidHandle = true;\n\t\t\t\t}\n\t\t\t} );\n\t\t\tif ( !validHandle ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tthis.currentItem = currentItem;\n\t\tthis._removeCurrentsFromItems();\n\t\treturn true;\n\n\t},\n\n\t_mouseStart: function( event, overrideHandle, noActivation ) {\n\n\t\tvar i, body,\n\t\t\to = this.options;\n\n\t\tthis.currentContainer = this;\n\n\t\t//We only need to call refreshPositions, because the refreshItems call has been moved to\n\t\t// mouseCapture\n\t\tthis.refreshPositions();\n\n\t\t//Prepare the dragged items parent\n\t\tthis.appendTo = $( o.appendTo !== \"parent\" ?\n\t\t\t\to.appendTo :\n\t\t\t\tthis.currentItem.parent() );\n\n\t\t//Create and append the visible helper\n\t\tthis.helper = this._createHelper( event );\n\n\t\t//Cache the helper size\n\t\tthis._cacheHelperProportions();\n\n\t\t/*\n\t\t * - Position generation -\n\t\t * This block generates everything position related - it's the core of draggables.\n\t\t */\n\n\t\t//Cache the margins of the original element\n\t\tthis._cacheMargins();\n\n\t\t//The element's absolute position on the page minus margins\n\t\tthis.offset = this.currentItem.offset();\n\t\tthis.offset = {\n\t\t\ttop: this.offset.top - this.margins.top,\n\t\t\tleft: this.offset.left - this.margins.left\n\t\t};\n\n\t\t$.extend( this.offset, {\n\t\t\tclick: { //Where the click happened, relative to the element\n\t\t\t\tleft: event.pageX - this.offset.left,\n\t\t\t\ttop: event.pageY - this.offset.top\n\t\t\t},\n\n\t\t\t// This is a relative to absolute position minus the actual position calculation -\n\t\t\t// only used for relative positioned helper\n\t\t\trelative: this._getRelativeOffset()\n\t\t} );\n\n\t\t// After we get the helper offset, but before we get the parent offset we can\n\t\t// change the helper's position to absolute\n\t\t// TODO: Still need to figure out a way to make relative sorting possible\n\t\tthis.helper.css( \"position\", \"absolute\" );\n\t\tthis.cssPosition = this.helper.css( \"position\" );\n\n\t\t//Adjust the mouse offset relative to the helper if \"cursorAt\" is supplied\n\t\tif ( o.cursorAt ) {\n\t\t\tthis._adjustOffsetFromHelper( o.cursorAt );\n\t\t}\n\n\t\t//Cache the former DOM position\n\t\tthis.domPosition = {\n\t\t\tprev: this.currentItem.prev()[ 0 ],\n\t\t\tparent: this.currentItem.parent()[ 0 ]\n\t\t};\n\n\t\t// If the helper is not the original, hide the original so it's not playing any role during\n\t\t// the drag, won't cause anything bad this way\n\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\tthis.currentItem.hide();\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthis._createPlaceholder();\n\n\t\t//Get the next scrolling parent\n\t\tthis.scrollParent = this.placeholder.scrollParent();\n\n\t\t$.extend( this.offset, {\n\t\t\tparent: this._getParentOffset()\n\t\t} );\n\n\t\t//Set a containment if given in the options\n\t\tif ( o.containment ) {\n\t\t\tthis._setContainment();\n\t\t}\n\n\t\tif ( o.cursor && o.cursor !== \"auto\" ) { // cursor option\n\t\t\tbody = this.document.find( \"body\" );\n\n\t\t\t// Support: IE\n\t\t\tthis.storedCursor = body.css( \"cursor\" );\n\t\t\tbody.css( \"cursor\", o.cursor );\n\n\t\t\tthis.storedStylesheet =\n\t\t\t\t$( \"<style>*{ cursor: \" + o.cursor + \" !important; }</style>\" ).appendTo( body );\n\t\t}\n\n\t\t// We need to make sure to grab the zIndex before setting the\n\t\t// opacity, because setting the opacity to anything lower than 1\n\t\t// causes the zIndex to change from \"auto\" to 0.\n\t\tif ( o.zIndex ) { // zIndex option\n\t\t\tif ( this.helper.css( \"zIndex\" ) ) {\n\t\t\t\tthis._storedZIndex = this.helper.css( \"zIndex\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"zIndex\", o.zIndex );\n\t\t}\n\n\t\tif ( o.opacity ) { // opacity option\n\t\t\tif ( this.helper.css( \"opacity\" ) ) {\n\t\t\t\tthis._storedOpacity = this.helper.css( \"opacity\" );\n\t\t\t}\n\t\t\tthis.helper.css( \"opacity\", o.opacity );\n\t\t}\n\n\t\t//Prepare scrolling\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"start\", event, this._uiHash() );\n\n\t\t//Recache the helper size\n\t\tif ( !this._preserveHelperProportions ) {\n\t\t\tthis._cacheHelperProportions();\n\t\t}\n\n\t\t//Post \"activate\" events to possible containers\n\t\tif ( !noActivation ) {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"activate\", event, this._uiHash( this ) );\n\t\t\t}\n\t\t}\n\n\t\t//Prepare possible droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.current = this;\n\t\t}\n\n\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t}\n\n\t\tthis.dragging = true;\n\n\t\tthis._addClass( this.helper, \"ui-sortable-helper\" );\n\n\t\t//Move the helper, if needed\n\t\tif ( !this.helper.parent().is( this.appendTo ) ) {\n\t\t\tthis.helper.detach().appendTo( this.appendTo );\n\n\t\t\t//Update position\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\t//Generate the original position\n\t\tthis.position = this.originalPosition = this._generatePosition( event );\n\t\tthis.originalPageX = event.pageX;\n\t\tthis.originalPageY = event.pageY;\n\t\tthis.lastPositionAbs = this.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\tthis._mouseDrag( event );\n\n\t\treturn true;\n\n\t},\n\n\t_scroll: function( event ) {\n\t\tvar o = this.options,\n\t\t\tscrolled = false;\n\n\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\n\t\t\tif ( ( this.overflowOffset.top + this.scrollParent[ 0 ].offsetHeight ) -\n\t\t\t\t\tevent.pageY < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop + o.scrollSpeed;\n\t\t\t} else if ( event.pageY - this.overflowOffset.top < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollTop =\n\t\t\t\t\tscrolled = this.scrollParent[ 0 ].scrollTop - o.scrollSpeed;\n\t\t\t}\n\n\t\t\tif ( ( this.overflowOffset.left + this.scrollParent[ 0 ].offsetWidth ) -\n\t\t\t\t\tevent.pageX < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft + o.scrollSpeed;\n\t\t\t} else if ( event.pageX - this.overflowOffset.left < o.scrollSensitivity ) {\n\t\t\t\tthis.scrollParent[ 0 ].scrollLeft = scrolled =\n\t\t\t\t\tthis.scrollParent[ 0 ].scrollLeft - o.scrollSpeed;\n\t\t\t}\n\n\t\t} else {\n\n\t\t\tif ( event.pageY - this.document.scrollTop() < o.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() - o.scrollSpeed );\n\t\t\t} else if ( this.window.height() - ( event.pageY - this.document.scrollTop() ) <\n\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollTop( this.document.scrollTop() + o.scrollSpeed );\n\t\t\t}\n\n\t\t\tif ( event.pageX - this.document.scrollLeft() < o.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\tthis.document.scrollLeft() - o.scrollSpeed\n\t\t\t\t);\n\t\t\t} else if ( this.window.width() - ( event.pageX - this.document.scrollLeft() ) <\n\t\t\t\t\to.scrollSensitivity ) {\n\t\t\t\tscrolled = this.document.scrollLeft(\n\t\t\t\t\tthis.document.scrollLeft() + o.scrollSpeed\n\t\t\t\t);\n\t\t\t}\n\n\t\t}\n\n\t\treturn scrolled;\n\t},\n\n\t_mouseDrag: function( event ) {\n\t\tvar i, item, itemElement, intersection,\n\t\t\to = this.options;\n\n\t\t//Compute the helpers position\n\t\tthis.position = this._generatePosition( event );\n\t\tthis.positionAbs = this._convertPositionTo( \"absolute\" );\n\n\t\t//Set the helper position\n\t\tif ( !this.options.axis || this.options.axis !== \"y\" ) {\n\t\t\tthis.helper[ 0 ].style.left = this.position.left + \"px\";\n\t\t}\n\t\tif ( !this.options.axis || this.options.axis !== \"x\" ) {\n\t\t\tthis.helper[ 0 ].style.top = this.position.top + \"px\";\n\t\t}\n\n\t\t//Do scrolling\n\t\tif ( o.scroll ) {\n\t\t\tif ( this._scroll( event ) !== false ) {\n\n\t\t\t\t//Update item positions used in position checks\n\t\t\t\tthis._refreshItemPositions( true );\n\n\t\t\t\tif ( $.ui.ddmanager && !o.dropBehaviour ) {\n\t\t\t\t\t$.ui.ddmanager.prepareOffsets( this, event );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.dragDirection = {\n\t\t\tvertical: this._getDragVerticalDirection(),\n\t\t\thorizontal: this._getDragHorizontalDirection()\n\t\t};\n\n\t\t//Rearrange\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\n\t\t\t//Cache variables and intersection, continue if no intersection\n\t\t\titem = this.items[ i ];\n\t\t\titemElement = item.item[ 0 ];\n\t\t\tintersection = this._intersectsWithPointer( item );\n\t\t\tif ( !intersection ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Only put the placeholder inside the current Container, skip all\n\t\t\t// items from other containers. This works because when moving\n\t\t\t// an item from one container to another the\n\t\t\t// currentContainer is switched before the placeholder is moved.\n\t\t\t//\n\t\t\t// Without this, moving items in \"sub-sortables\" can cause\n\t\t\t// the placeholder to jitter between the outer and inner container.\n\t\t\tif ( item.instance !== this.currentContainer ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Cannot intersect with itself\n\t\t\t// no useless actions that have been done before\n\t\t\t// no action if the item moved is the parent of the item checked\n\t\t\tif ( itemElement !== this.currentItem[ 0 ] &&\n\t\t\t\tthis.placeholder[ intersection === 1 ?\n\t\t\t\t\"next\" : \"prev\" ]()[ 0 ] !== itemElement &&\n\t\t\t\t!$.contains( this.placeholder[ 0 ], itemElement ) &&\n\t\t\t\t( this.options.type === \"semi-dynamic\" ?\n\t\t\t\t\t!$.contains( this.element[ 0 ], itemElement ) :\n\t\t\t\t\ttrue\n\t\t\t\t)\n\t\t\t) {\n\n\t\t\t\tthis.direction = intersection === 1 ? \"down\" : \"up\";\n\n\t\t\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\t\t\t\tthis._intersectsWithSides( item ) ) {\n\t\t\t\t\tthis._rearrange( event, item );\n\t\t\t\t} else {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tthis._contactContainers( event );\n\n\t\t//Interconnect with droppables\n\t\tif ( $.ui.ddmanager ) {\n\t\t\t$.ui.ddmanager.drag( this, event );\n\t\t}\n\n\t\t//Call callbacks\n\t\tthis._trigger( \"sort\", event, this._uiHash() );\n\n\t\tthis.lastPositionAbs = this.positionAbs;\n\t\treturn false;\n\n\t},\n\n\t_mouseStop: function( event, noPropagation ) {\n\n\t\tif ( !event ) {\n\t\t\treturn;\n\t\t}\n\n\t\t//If we are using droppables, inform the manager about the drop\n\t\tif ( $.ui.ddmanager && !this.options.dropBehaviour ) {\n\t\t\t$.ui.ddmanager.drop( this, event );\n\t\t}\n\n\t\tif ( this.options.revert ) {\n\t\t\tvar that = this,\n\t\t\t\tcur = this.placeholder.offset(),\n\t\t\t\taxis = this.options.axis,\n\t\t\t\tanimation = {};\n\n\t\t\tif ( !axis || axis === \"x\" ) {\n\t\t\t\tanimation.left = cur.left - this.offset.parent.left - this.margins.left +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollLeft\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tif ( !axis || axis === \"y\" ) {\n\t\t\t\tanimation.top = cur.top - this.offset.parent.top - this.margins.top +\n\t\t\t\t\t( this.offsetParent[ 0 ] === this.document[ 0 ].body ?\n\t\t\t\t\t\t0 :\n\t\t\t\t\t\tthis.offsetParent[ 0 ].scrollTop\n\t\t\t\t\t);\n\t\t\t}\n\t\t\tthis.reverting = true;\n\t\t\t$( this.helper ).animate(\n\t\t\t\tanimation,\n\t\t\t\tparseInt( this.options.revert, 10 ) || 500,\n\t\t\t\tfunction() {\n\t\t\t\t\tthat._clear( event );\n\t\t\t\t}\n\t\t\t);\n\t\t} else {\n\t\t\tthis._clear( event, noPropagation );\n\t\t}\n\n\t\treturn false;\n\n\t},\n\n\tcancel: function() {\n\n\t\tif ( this.dragging ) {\n\n\t\t\tthis._mouseUp( new $.Event( \"mouseup\", { target: null } ) );\n\n\t\t\tif ( this.options.helper === \"original\" ) {\n\t\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t\t} else {\n\t\t\t\tthis.currentItem.show();\n\t\t\t}\n\n\t\t\t//Post deactivating events to containers\n\t\t\tfor ( var i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tthis.containers[ i ]._trigger( \"deactivate\", null, this._uiHash( this ) );\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", null, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tif ( this.placeholder ) {\n\n\t\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t\t// it unbinds ALL events from the original node!\n\t\t\tif ( this.placeholder[ 0 ].parentNode ) {\n\t\t\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\t\t\t}\n\t\t\tif ( this.options.helper !== \"original\" && this.helper &&\n\t\t\t\t\tthis.helper[ 0 ].parentNode ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\n\t\t\t$.extend( this, {\n\t\t\t\thelper: null,\n\t\t\t\tdragging: false,\n\t\t\t\treverting: false,\n\t\t\t\t_noFinalSort: null\n\t\t\t} );\n\n\t\t\tif ( this.domPosition.prev ) {\n\t\t\t\t$( this.domPosition.prev ).after( this.currentItem );\n\t\t\t} else {\n\t\t\t\t$( this.domPosition.parent ).prepend( this.currentItem );\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\n\t},\n\n\tserialize: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tstr = [];\n\t\to = o || {};\n\n\t\t$( items ).each( function() {\n\t\t\tvar res = ( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" )\n\t\t\t\t.match( o.expression || ( /(.+)[\\-=_](.+)/ ) );\n\t\t\tif ( res ) {\n\t\t\t\tstr.push(\n\t\t\t\t\t( o.key || res[ 1 ] + \"[]\" ) +\n\t\t\t\t\t\"=\" + ( o.key && o.expression ? res[ 1 ] : res[ 2 ] ) );\n\t\t\t}\n\t\t} );\n\n\t\tif ( !str.length && o.key ) {\n\t\t\tstr.push( o.key + \"=\" );\n\t\t}\n\n\t\treturn str.join( \"&\" );\n\n\t},\n\n\ttoArray: function( o ) {\n\n\t\tvar items = this._getItemsAsjQuery( o && o.connected ),\n\t\t\tret = [];\n\n\t\to = o || {};\n\n\t\titems.each( function() {\n\t\t\tret.push( $( o.item || this ).attr( o.attribute || \"id\" ) || \"\" );\n\t\t} );\n\t\treturn ret;\n\n\t},\n\n\t/* Be careful with the following core functions */\n\t_intersectsWith: function( item ) {\n\n\t\tvar x1 = this.positionAbs.left,\n\t\t\tx2 = x1 + this.helperProportions.width,\n\t\t\ty1 = this.positionAbs.top,\n\t\t\ty2 = y1 + this.helperProportions.height,\n\t\t\tl = item.left,\n\t\t\tr = l + item.width,\n\t\t\tt = item.top,\n\t\t\tb = t + item.height,\n\t\t\tdyClick = this.offset.click.top,\n\t\t\tdxClick = this.offset.click.left,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) || ( ( y1 + dyClick ) > t &&\n\t\t\t\t( y1 + dyClick ) < b ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) || ( ( x1 + dxClick ) > l &&\n\t\t\t\t( x1 + dxClick ) < r ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( this.options.tolerance === \"pointer\" ||\n\t\t\tthis.options.forcePointerForContainers ||\n\t\t\t( this.options.tolerance !== \"pointer\" &&\n\t\t\t\tthis.helperProportions[ this.floating ? \"width\" : \"height\" ] >\n\t\t\t\titem[ this.floating ? \"width\" : \"height\" ] )\n\t\t) {\n\t\t\treturn isOverElement;\n\t\t} else {\n\n\t\t\treturn ( l < x1 + ( this.helperProportions.width / 2 ) && // Right Half\n\t\t\t\tx2 - ( this.helperProportions.width / 2 ) < r && // Left Half\n\t\t\t\tt < y1 + ( this.helperProportions.height / 2 ) && // Bottom Half\n\t\t\t\ty2 - ( this.helperProportions.height / 2 ) < b ); // Top Half\n\n\t\t}\n\t},\n\n\t_intersectsWithPointer: function( item ) {\n\t\tvar verticalDirection, horizontalDirection,\n\t\t\tisOverElementHeight = ( this.options.axis === \"x\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.top + this.offset.click.top, item.top, item.height ),\n\t\t\tisOverElementWidth = ( this.options.axis === \"y\" ) ||\n\t\t\t\tthis._isOverAxis(\n\t\t\t\t\tthis.positionAbs.left + this.offset.click.left, item.left, item.width ),\n\t\t\tisOverElement = isOverElementHeight && isOverElementWidth;\n\n\t\tif ( !isOverElement ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tverticalDirection = this.dragDirection.vertical;\n\t\thorizontalDirection = this.dragDirection.horizontal;\n\n\t\treturn this.floating ?\n\t\t\t( ( horizontalDirection === \"right\" || verticalDirection === \"down\" ) ? 2 : 1 ) :\n\t\t\t( verticalDirection && ( verticalDirection === \"down\" ? 2 : 1 ) );\n\n\t},\n\n\t_intersectsWithSides: function( item ) {\n\n\t\tvar isOverBottomHalf = this._isOverAxis( this.positionAbs.top +\n\t\t\t\tthis.offset.click.top, item.top + ( item.height / 2 ), item.height ),\n\t\t\tisOverRightHalf = this._isOverAxis( this.positionAbs.left +\n\t\t\t\tthis.offset.click.left, item.left + ( item.width / 2 ), item.width ),\n\t\t\tverticalDirection = this.dragDirection.vertical,\n\t\t\thorizontalDirection = this.dragDirection.horizontal;\n\n\t\tif ( this.floating && horizontalDirection ) {\n\t\t\treturn ( ( horizontalDirection === \"right\" && isOverRightHalf ) ||\n\t\t\t\t( horizontalDirection === \"left\" && !isOverRightHalf ) );\n\t\t} else {\n\t\t\treturn verticalDirection && ( ( verticalDirection === \"down\" && isOverBottomHalf ) ||\n\t\t\t\t( verticalDirection === \"up\" && !isOverBottomHalf ) );\n\t\t}\n\n\t},\n\n\t_getDragVerticalDirection: function() {\n\t\tvar delta = this.positionAbs.top - this.lastPositionAbs.top;\n\t\treturn delta !== 0 && ( delta > 0 ? \"down\" : \"up\" );\n\t},\n\n\t_getDragHorizontalDirection: function() {\n\t\tvar delta = this.positionAbs.left - this.lastPositionAbs.left;\n\t\treturn delta !== 0 && ( delta > 0 ? \"right\" : \"left\" );\n\t},\n\n\trefresh: function( event ) {\n\t\tthis._refreshItems( event );\n\t\tthis._setHandleClassName();\n\t\tthis.refreshPositions();\n\t\treturn this;\n\t},\n\n\t_connectWith: function() {\n\t\tvar options = this.options;\n\t\treturn options.connectWith.constructor === String ?\n\t\t\t[ options.connectWith ] :\n\t\t\toptions.connectWith;\n\t},\n\n\t_getItemsAsjQuery: function( connected ) {\n\n\t\tvar i, j, cur, inst,\n\t\t\titems = [],\n\t\t\tqueries = [],\n\t\t\tconnectWith = this._connectWith();\n\n\t\tif ( connectWith && connected ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ typeof inst.options.items === \"function\" ?\n\t\t\t\t\t\t\tinst.options.items.call( inst.element ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t\t\t\t\t.not( \".ui-sortable-placeholder\" ), inst ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tqueries.push( [ typeof this.options.items === \"function\" ?\n\t\t\tthis.options.items\n\t\t\t\t.call( this.element, null, { options: this.options, item: this.currentItem } ) :\n\t\t\t$( this.options.items, this.element )\n\t\t\t\t.not( \".ui-sortable-helper\" )\n\t\t\t\t.not( \".ui-sortable-placeholder\" ), this ] );\n\n\t\tfunction addItems() {\n\t\t\titems.push( this );\n\t\t}\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\tqueries[ i ][ 0 ].each( addItems );\n\t\t}\n\n\t\treturn $( items );\n\n\t},\n\n\t_removeCurrentsFromItems: function() {\n\n\t\tvar list = this.currentItem.find( \":data(\" + this.widgetName + \"-item)\" );\n\n\t\tthis.items = $.grep( this.items, function( item ) {\n\t\t\tfor ( var j = 0; j < list.length; j++ ) {\n\t\t\t\tif ( list[ j ] === item.item[ 0 ] ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} );\n\n\t},\n\n\t_refreshItems: function( event ) {\n\n\t\tthis.items = [];\n\t\tthis.containers = [ this ];\n\n\t\tvar i, j, cur, inst, targetData, _queries, item, queriesLength,\n\t\t\titems = this.items,\n\t\t\tqueries = [ [ typeof this.options.items === \"function\" ?\n\t\t\t\tthis.options.items.call( this.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t$( this.options.items, this.element ), this ] ],\n\t\t\tconnectWith = this._connectWith();\n\n\t\t//Shouldn't be run the first time through due to massive slow-down\n\t\tif ( connectWith && this.ready ) {\n\t\t\tfor ( i = connectWith.length - 1; i >= 0; i-- ) {\n\t\t\t\tcur = $( connectWith[ i ], this.document[ 0 ] );\n\t\t\t\tfor ( j = cur.length - 1; j >= 0; j-- ) {\n\t\t\t\t\tinst = $.data( cur[ j ], this.widgetFullName );\n\t\t\t\t\tif ( inst && inst !== this && !inst.options.disabled ) {\n\t\t\t\t\t\tqueries.push( [ typeof inst.options.items === \"function\" ?\n\t\t\t\t\t\t\tinst.options.items\n\t\t\t\t\t\t\t\t.call( inst.element[ 0 ], event, { item: this.currentItem } ) :\n\t\t\t\t\t\t\t$( inst.options.items, inst.element ), inst ] );\n\t\t\t\t\t\tthis.containers.push( inst );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor ( i = queries.length - 1; i >= 0; i-- ) {\n\t\t\ttargetData = queries[ i ][ 1 ];\n\t\t\t_queries = queries[ i ][ 0 ];\n\n\t\t\tfor ( j = 0, queriesLength = _queries.length; j < queriesLength; j++ ) {\n\t\t\t\titem = $( _queries[ j ] );\n\n\t\t\t\t// Data for target checking (mouse manager)\n\t\t\t\titem.data( this.widgetName + \"-item\", targetData );\n\n\t\t\t\titems.push( {\n\t\t\t\t\titem: item,\n\t\t\t\t\tinstance: targetData,\n\t\t\t\t\twidth: 0, height: 0,\n\t\t\t\t\tleft: 0, top: 0\n\t\t\t\t} );\n\t\t\t}\n\t\t}\n\n\t},\n\n\t_refreshItemPositions: function( fast ) {\n\t\tvar i, item, t, p;\n\n\t\tfor ( i = this.items.length - 1; i >= 0; i-- ) {\n\t\t\titem = this.items[ i ];\n\n\t\t\t//We ignore calculating positions of all connected containers when we're not over them\n\t\t\tif ( this.currentContainer && item.instance !== this.currentContainer &&\n\t\t\t\t\titem.item[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tt = this.options.toleranceElement ?\n\t\t\t\t$( this.options.toleranceElement, item.item ) :\n\t\t\t\titem.item;\n\n\t\t\tif ( !fast ) {\n\t\t\t\titem.width = t.outerWidth();\n\t\t\t\titem.height = t.outerHeight();\n\t\t\t}\n\n\t\t\tp = t.offset();\n\t\t\titem.left = p.left;\n\t\t\titem.top = p.top;\n\t\t}\n\t},\n\n\trefreshPositions: function( fast ) {\n\n\t\t// Determine whether items are being displayed horizontally\n\t\tthis.floating = this.items.length ?\n\t\t\tthis.options.axis === \"x\" || this._isFloating( this.items[ 0 ].item ) :\n\t\t\tfalse;\n\n\t\t// This has to be redone because due to the item being moved out/into the offsetParent,\n\t\t// the offsetParent's position will change\n\t\tif ( this.offsetParent && this.helper ) {\n\t\t\tthis.offset.parent = this._getParentOffset();\n\t\t}\n\n\t\tthis._refreshItemPositions( fast );\n\n\t\tvar i, p;\n\n\t\tif ( this.options.custom && this.options.custom.refreshContainers ) {\n\t\t\tthis.options.custom.refreshContainers.call( this );\n\t\t} else {\n\t\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\t\tp = this.containers[ i ].element.offset();\n\t\t\t\tthis.containers[ i ].containerCache.left = p.left;\n\t\t\t\tthis.containers[ i ].containerCache.top = p.top;\n\t\t\t\tthis.containers[ i ].containerCache.width =\n\t\t\t\t\tthis.containers[ i ].element.outerWidth();\n\t\t\t\tthis.containers[ i ].containerCache.height =\n\t\t\t\t\tthis.containers[ i ].element.outerHeight();\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\t_createPlaceholder: function( that ) {\n\t\tthat = that || this;\n\t\tvar className, nodeName,\n\t\t\to = that.options;\n\n\t\tif ( !o.placeholder || o.placeholder.constructor === String ) {\n\t\t\tclassName = o.placeholder;\n\t\t\tnodeName = that.currentItem[ 0 ].nodeName.toLowerCase();\n\t\t\to.placeholder = {\n\t\t\t\telement: function() {\n\n\t\t\t\t\tvar element = $( \"<\" + nodeName + \">\", that.document[ 0 ] );\n\n\t\t\t\t\tthat._addClass( element, \"ui-sortable-placeholder\",\n\t\t\t\t\t\t\tclassName || that.currentItem[ 0 ].className )\n\t\t\t\t\t\t._removeClass( element, \"ui-sortable-helper\" );\n\n\t\t\t\t\tif ( nodeName === \"tbody\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder(\n\t\t\t\t\t\t\tthat.currentItem.find( \"tr\" ).eq( 0 ),\n\t\t\t\t\t\t\t$( \"<tr>\", that.document[ 0 ] ).appendTo( element )\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if ( nodeName === \"tr\" ) {\n\t\t\t\t\t\tthat._createTrPlaceholder( that.currentItem, element );\n\t\t\t\t\t} else if ( nodeName === \"img\" ) {\n\t\t\t\t\t\telement.attr( \"src\", that.currentItem.attr( \"src\" ) );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !className ) {\n\t\t\t\t\t\telement.css( \"visibility\", \"hidden\" );\n\t\t\t\t\t}\n\n\t\t\t\t\treturn element;\n\t\t\t\t},\n\t\t\t\tupdate: function( container, p ) {\n\n\t\t\t\t\t// 1. If a className is set as 'placeholder option, we don't force sizes -\n\t\t\t\t\t// the class is responsible for that\n\t\t\t\t\t// 2. The option 'forcePlaceholderSize can be enabled to force it even if a\n\t\t\t\t\t// class name is specified\n\t\t\t\t\tif ( className && !o.forcePlaceholderSize ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// If the element doesn't have a actual height or width by itself (without\n\t\t\t\t\t// styles coming from a stylesheet), it receives the inline height and width\n\t\t\t\t\t// from the dragged item. Or, if it's a tbody or tr, it's going to have a height\n\t\t\t\t\t// anyway since we're populating them with <td>s above, but they're unlikely to\n\t\t\t\t\t// be the correct height on their own if the row heights are dynamic, so we'll\n\t\t\t\t\t// always assign the height of the dragged item given forcePlaceholderSize\n\t\t\t\t\t// is true.\n\t\t\t\t\tif ( !p.height() || ( o.forcePlaceholderSize &&\n\t\t\t\t\t\t\t( nodeName === \"tbody\" || nodeName === \"tr\" ) ) ) {\n\t\t\t\t\t\tp.height(\n\t\t\t\t\t\t\tthat.currentItem.innerHeight() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingTop\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingBottom\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t\tif ( !p.width() ) {\n\t\t\t\t\t\tp.width(\n\t\t\t\t\t\t\tthat.currentItem.innerWidth() -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingLeft\" ) || 0, 10 ) -\n\t\t\t\t\t\t\tparseInt( that.currentItem.css( \"paddingRight\" ) || 0, 10 ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\t//Create the placeholder\n\t\tthat.placeholder = $( o.placeholder.element.call( that.element, that.currentItem ) );\n\n\t\t//Append it after the actual current item\n\t\tthat.currentItem.after( that.placeholder );\n\n\t\t//Update the size of the placeholder (TODO: Logic to fuzzy, see line 316/317)\n\t\to.placeholder.update( that, that.placeholder );\n\n\t},\n\n\t_createTrPlaceholder: function( sourceTr, targetTr ) {\n\t\tvar that = this;\n\n\t\tsourceTr.children().each( function() {\n\t\t\t$( \"<td>&#160;</td>\", that.document[ 0 ] )\n\t\t\t\t.attr( \"colspan\", $( this ).attr( \"colspan\" ) || 1 )\n\t\t\t\t.appendTo( targetTr );\n\t\t} );\n\t},\n\n\t_contactContainers: function( event ) {\n\t\tvar i, j, dist, itemWithLeastDistance, posProperty, sizeProperty, cur, nearBottom,\n\t\t\tfloating, axis,\n\t\t\tinnermostContainer = null,\n\t\t\tinnermostIndex = null;\n\n\t\t// Get innermost container that intersects with item\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\n\t\t\t// Never consider a container that's located within the item itself\n\t\t\tif ( $.contains( this.currentItem[ 0 ], this.containers[ i ].element[ 0 ] ) ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif ( this._intersectsWith( this.containers[ i ].containerCache ) ) {\n\n\t\t\t\t// If we've already found a container and it's more \"inner\" than this, then continue\n\t\t\t\tif ( innermostContainer &&\n\t\t\t\t\t\t$.contains(\n\t\t\t\t\t\t\tthis.containers[ i ].element[ 0 ],\n\t\t\t\t\t\t\tinnermostContainer.element[ 0 ] ) ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tinnermostContainer = this.containers[ i ];\n\t\t\t\tinnermostIndex = i;\n\n\t\t\t} else {\n\n\t\t\t\t// container doesn't intersect. trigger \"out\" event if necessary\n\t\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\t\tthis.containers[ i ]._trigger( \"out\", event, this._uiHash( this ) );\n\t\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\t// If no intersecting containers found, return\n\t\tif ( !innermostContainer ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Move the item into the container if it's not there already\n\t\tif ( this.containers.length === 1 ) {\n\t\t\tif ( !this.containers[ innermostIndex ].containerCache.over ) {\n\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t\t}\n\t\t} else {\n\n\t\t\t// When entering a new container, we will find the item with the least distance and\n\t\t\t// append our item near it\n\t\t\tdist = 10000;\n\t\t\titemWithLeastDistance = null;\n\t\t\tfloating = innermostContainer.floating || this._isFloating( this.currentItem );\n\t\t\tposProperty = floating ? \"left\" : \"top\";\n\t\t\tsizeProperty = floating ? \"width\" : \"height\";\n\t\t\taxis = floating ? \"pageX\" : \"pageY\";\n\n\t\t\tfor ( j = this.items.length - 1; j >= 0; j-- ) {\n\t\t\t\tif ( !$.contains(\n\t\t\t\t\t\tthis.containers[ innermostIndex ].element[ 0 ], this.items[ j ].item[ 0 ] )\n\t\t\t\t) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif ( this.items[ j ].item[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcur = this.items[ j ].item.offset()[ posProperty ];\n\t\t\t\tnearBottom = false;\n\t\t\t\tif ( event[ axis ] - cur > this.items[ j ][ sizeProperty ] / 2 ) {\n\t\t\t\t\tnearBottom = true;\n\t\t\t\t}\n\n\t\t\t\tif ( Math.abs( event[ axis ] - cur ) < dist ) {\n\t\t\t\t\tdist = Math.abs( event[ axis ] - cur );\n\t\t\t\t\titemWithLeastDistance = this.items[ j ];\n\t\t\t\t\tthis.direction = nearBottom ? \"up\" : \"down\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t//Check if dropOnEmpty is enabled\n\t\t\tif ( !itemWithLeastDistance && !this.options.dropOnEmpty ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( this.currentContainer === this.containers[ innermostIndex ] ) {\n\t\t\t\tif ( !this.currentContainer.containerCache.over ) {\n\t\t\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash() );\n\t\t\t\t\tthis.currentContainer.containerCache.over = 1;\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( itemWithLeastDistance ) {\n\t\t\t\tthis._rearrange( event, itemWithLeastDistance, null, true );\n\t\t\t} else {\n\t\t\t\tthis._rearrange( event, null, this.containers[ innermostIndex ].element, true );\n\t\t\t}\n\t\t\tthis._trigger( \"change\", event, this._uiHash() );\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"change\", event, this._uiHash( this ) );\n\t\t\tthis.currentContainer = this.containers[ innermostIndex ];\n\n\t\t\t//Update the placeholder\n\t\t\tthis.options.placeholder.update( this.currentContainer, this.placeholder );\n\n\t\t\t//Update scrollParent\n\t\t\tthis.scrollParent = this.placeholder.scrollParent();\n\n\t\t\t//Update overflowOffset\n\t\t\tif ( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t\tthis.scrollParent[ 0 ].tagName !== \"HTML\" ) {\n\t\t\t\tthis.overflowOffset = this.scrollParent.offset();\n\t\t\t}\n\n\t\t\tthis.containers[ innermostIndex ]._trigger( \"over\", event, this._uiHash( this ) );\n\t\t\tthis.containers[ innermostIndex ].containerCache.over = 1;\n\t\t}\n\n\t},\n\n\t_createHelper: function( event ) {\n\n\t\tvar o = this.options,\n\t\t\thelper = typeof o.helper === \"function\" ?\n\t\t\t\t$( o.helper.apply( this.element[ 0 ], [ event, this.currentItem ] ) ) :\n\t\t\t\t( o.helper === \"clone\" ? this.currentItem.clone() : this.currentItem );\n\n\t\t//Add the helper to the DOM if that didn't happen already\n\t\tif ( !helper.parents( \"body\" ).length ) {\n\t\t\tthis.appendTo[ 0 ].appendChild( helper[ 0 ] );\n\t\t}\n\n\t\tif ( helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tthis._storedCSS = {\n\t\t\t\twidth: this.currentItem[ 0 ].style.width,\n\t\t\t\theight: this.currentItem[ 0 ].style.height,\n\t\t\t\tposition: this.currentItem.css( \"position\" ),\n\t\t\t\ttop: this.currentItem.css( \"top\" ),\n\t\t\t\tleft: this.currentItem.css( \"left\" )\n\t\t\t};\n\t\t}\n\n\t\tif ( !helper[ 0 ].style.width || o.forceHelperSize ) {\n\t\t\thelper.width( this.currentItem.width() );\n\t\t}\n\t\tif ( !helper[ 0 ].style.height || o.forceHelperSize ) {\n\t\t\thelper.height( this.currentItem.height() );\n\t\t}\n\n\t\treturn helper;\n\n\t},\n\n\t_adjustOffsetFromHelper: function( obj ) {\n\t\tif ( typeof obj === \"string\" ) {\n\t\t\tobj = obj.split( \" \" );\n\t\t}\n\t\tif ( Array.isArray( obj ) ) {\n\t\t\tobj = { left: +obj[ 0 ], top: +obj[ 1 ] || 0 };\n\t\t}\n\t\tif ( \"left\" in obj ) {\n\t\t\tthis.offset.click.left = obj.left + this.margins.left;\n\t\t}\n\t\tif ( \"right\" in obj ) {\n\t\t\tthis.offset.click.left = this.helperProportions.width - obj.right + this.margins.left;\n\t\t}\n\t\tif ( \"top\" in obj ) {\n\t\t\tthis.offset.click.top = obj.top + this.margins.top;\n\t\t}\n\t\tif ( \"bottom\" in obj ) {\n\t\t\tthis.offset.click.top = this.helperProportions.height - obj.bottom + this.margins.top;\n\t\t}\n\t},\n\n\t_getParentOffset: function() {\n\n\t\t//Get the offsetParent and cache its position\n\t\tthis.offsetParent = this.helper.offsetParent();\n\t\tvar po = this.offsetParent.offset();\n\n\t\t// This is a special case where we need to modify a offset calculated on start, since the\n\t\t// following happened:\n\t\t// 1. The position of the helper is absolute, so it's position is calculated based on the\n\t\t// next positioned parent\n\t\t// 2. The actual offset parent is a child of the scroll parent, and the scroll parent isn't\n\t\t// the document, which means that the scroll is included in the initial calculation of the\n\t\t// offset of the parent, and never recalculated upon drag\n\t\tif ( this.cssPosition === \"absolute\" && this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) {\n\t\t\tpo.left += this.scrollParent.scrollLeft();\n\t\t\tpo.top += this.scrollParent.scrollTop();\n\t\t}\n\n\t\t// This needs to be actually done for all browsers, since pageX/pageY includes this\n\t\t// information with an ugly IE fix\n\t\tif ( this.offsetParent[ 0 ] === this.document[ 0 ].body ||\n\t\t\t\t( this.offsetParent[ 0 ].tagName &&\n\t\t\t\tthis.offsetParent[ 0 ].tagName.toLowerCase() === \"html\" && $.ui.ie ) ) {\n\t\t\tpo = { top: 0, left: 0 };\n\t\t}\n\n\t\treturn {\n\t\t\ttop: po.top + ( parseInt( this.offsetParent.css( \"borderTopWidth\" ), 10 ) || 0 ),\n\t\t\tleft: po.left + ( parseInt( this.offsetParent.css( \"borderLeftWidth\" ), 10 ) || 0 )\n\t\t};\n\n\t},\n\n\t_getRelativeOffset: function() {\n\n\t\tif ( this.cssPosition === \"relative\" ) {\n\t\t\tvar p = this.currentItem.position();\n\t\t\treturn {\n\t\t\t\ttop: p.top - ( parseInt( this.helper.css( \"top\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollTop(),\n\t\t\t\tleft: p.left - ( parseInt( this.helper.css( \"left\" ), 10 ) || 0 ) +\n\t\t\t\t\tthis.scrollParent.scrollLeft()\n\t\t\t};\n\t\t} else {\n\t\t\treturn { top: 0, left: 0 };\n\t\t}\n\n\t},\n\n\t_cacheMargins: function() {\n\t\tthis.margins = {\n\t\t\tleft: ( parseInt( this.currentItem.css( \"marginLeft\" ), 10 ) || 0 ),\n\t\t\ttop: ( parseInt( this.currentItem.css( \"marginTop\" ), 10 ) || 0 )\n\t\t};\n\t},\n\n\t_cacheHelperProportions: function() {\n\t\tthis.helperProportions = {\n\t\t\twidth: this.helper.outerWidth(),\n\t\t\theight: this.helper.outerHeight()\n\t\t};\n\t},\n\n\t_setContainment: function() {\n\n\t\tvar ce, co, over,\n\t\t\to = this.options;\n\t\tif ( o.containment === \"parent\" ) {\n\t\t\to.containment = this.helper[ 0 ].parentNode;\n\t\t}\n\t\tif ( o.containment === \"document\" || o.containment === \"window\" ) {\n\t\t\tthis.containment = [\n\t\t\t\t0 - this.offset.relative.left - this.offset.parent.left,\n\t\t\t\t0 - this.offset.relative.top - this.offset.parent.top,\n\t\t\t\to.containment === \"document\" ?\n\t\t\t\t\tthis.document.width() :\n\t\t\t\t\tthis.window.width() - this.helperProportions.width - this.margins.left,\n\t\t\t\t( o.containment === \"document\" ?\n\t\t\t\t\t( this.document.height() || document.body.parentNode.scrollHeight ) :\n\t\t\t\t\tthis.window.height() || this.document[ 0 ].body.parentNode.scrollHeight\n\t\t\t\t) - this.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t\tif ( !( /^(document|window|parent)$/ ).test( o.containment ) ) {\n\t\t\tce = $( o.containment )[ 0 ];\n\t\t\tco = $( o.containment ).offset();\n\t\t\tover = ( $( ce ).css( \"overflow\" ) !== \"hidden\" );\n\n\t\t\tthis.containment = [\n\t\t\t\tco.left + ( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingLeft\" ), 10 ) || 0 ) - this.margins.left,\n\t\t\t\tco.top + ( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) +\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingTop\" ), 10 ) || 0 ) - this.margins.top,\n\t\t\t\tco.left + ( over ? Math.max( ce.scrollWidth, ce.offsetWidth ) : ce.offsetWidth ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderLeftWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingRight\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.width - this.margins.left,\n\t\t\t\tco.top + ( over ? Math.max( ce.scrollHeight, ce.offsetHeight ) : ce.offsetHeight ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"borderTopWidth\" ), 10 ) || 0 ) -\n\t\t\t\t\t( parseInt( $( ce ).css( \"paddingBottom\" ), 10 ) || 0 ) -\n\t\t\t\t\tthis.helperProportions.height - this.margins.top\n\t\t\t];\n\t\t}\n\n\t},\n\n\t_convertPositionTo: function( d, pos ) {\n\n\t\tif ( !pos ) {\n\t\t\tpos = this.position;\n\t\t}\n\t\tvar mod = d === \"absolute\" ? 1 : -1,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.top\t+\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top * mod -\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) * mod )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpos.left +\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left * mod +\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left * mod\t-\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() : scrollIsRootNode ? 0 :\n\t\t\t\t\tscroll.scrollLeft() ) * mod )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_generatePosition: function( event ) {\n\n\t\tvar top, left,\n\t\t\to = this.options,\n\t\t\tpageX = event.pageX,\n\t\t\tpageY = event.pageY,\n\t\t\tscroll = this.cssPosition === \"absolute\" &&\n\t\t\t\t!( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\t$.contains( this.scrollParent[ 0 ], this.offsetParent[ 0 ] ) ) ?\n\t\t\t\t\tthis.offsetParent :\n\t\t\t\t\tthis.scrollParent,\n\t\t\t\tscrollIsRootNode = ( /(html|body)/i ).test( scroll[ 0 ].tagName );\n\n\t\t// This is another very weird special case that only happens for relative elements:\n\t\t// 1. If the css position is relative\n\t\t// 2. and the scroll parent is the document or similar to the offset parent\n\t\t// we have to refresh the relative offset during the scroll so there are no jumps\n\t\tif ( this.cssPosition === \"relative\" && !( this.scrollParent[ 0 ] !== this.document[ 0 ] &&\n\t\t\t\tthis.scrollParent[ 0 ] !== this.offsetParent[ 0 ] ) ) {\n\t\t\tthis.offset.relative = this._getRelativeOffset();\n\t\t}\n\n\t\t/*\n\t\t * - Position constraining -\n\t\t * Constrain the position to a mix of grid, containment.\n\t\t */\n\n\t\tif ( this.originalPosition ) { //If we are not dragging yet, we won't check for options\n\n\t\t\tif ( this.containment ) {\n\t\t\t\tif ( event.pageX - this.offset.click.left < this.containment[ 0 ] ) {\n\t\t\t\t\tpageX = this.containment[ 0 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top < this.containment[ 1 ] ) {\n\t\t\t\t\tpageY = this.containment[ 1 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t\tif ( event.pageX - this.offset.click.left > this.containment[ 2 ] ) {\n\t\t\t\t\tpageX = this.containment[ 2 ] + this.offset.click.left;\n\t\t\t\t}\n\t\t\t\tif ( event.pageY - this.offset.click.top > this.containment[ 3 ] ) {\n\t\t\t\t\tpageY = this.containment[ 3 ] + this.offset.click.top;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( o.grid ) {\n\t\t\t\ttop = this.originalPageY + Math.round( ( pageY - this.originalPageY ) /\n\t\t\t\t\to.grid[ 1 ] ) * o.grid[ 1 ];\n\t\t\t\tpageY = this.containment ?\n\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] &&\n\t\t\t\t\t\ttop - this.offset.click.top <= this.containment[ 3 ] ) ?\n\t\t\t\t\t\t\ttop :\n\t\t\t\t\t\t\t( ( top - this.offset.click.top >= this.containment[ 1 ] ) ?\n\t\t\t\t\t\t\t\ttop - o.grid[ 1 ] : top + o.grid[ 1 ] ) ) :\n\t\t\t\t\t\t\t\ttop;\n\n\t\t\t\tleft = this.originalPageX + Math.round( ( pageX - this.originalPageX ) /\n\t\t\t\t\to.grid[ 0 ] ) * o.grid[ 0 ];\n\t\t\t\tpageX = this.containment ?\n\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] &&\n\t\t\t\t\t\tleft - this.offset.click.left <= this.containment[ 2 ] ) ?\n\t\t\t\t\t\t\tleft :\n\t\t\t\t\t\t\t( ( left - this.offset.click.left >= this.containment[ 0 ] ) ?\n\t\t\t\t\t\t\t\tleft - o.grid[ 0 ] : left + o.grid[ 0 ] ) ) :\n\t\t\t\t\t\t\t\tleft;\n\t\t\t}\n\n\t\t}\n\n\t\treturn {\n\t\t\ttop: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageY -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.top -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.top -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.top +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollTop() :\n\t\t\t\t\t( scrollIsRootNode ? 0 : scroll.scrollTop() ) ) )\n\t\t\t),\n\t\t\tleft: (\n\n\t\t\t\t// The absolute mouse position\n\t\t\t\tpageX -\n\n\t\t\t\t// Click offset (relative to the element)\n\t\t\t\tthis.offset.click.left -\n\n\t\t\t\t// Only for relative positioned nodes: Relative offset from element to offset parent\n\t\t\t\tthis.offset.relative.left -\n\n\t\t\t\t// The offsetParent's offset without borders (offset + border)\n\t\t\t\tthis.offset.parent.left +\n\t\t\t\t( ( this.cssPosition === \"fixed\" ?\n\t\t\t\t\t-this.scrollParent.scrollLeft() :\n\t\t\t\t\tscrollIsRootNode ? 0 : scroll.scrollLeft() ) )\n\t\t\t)\n\t\t};\n\n\t},\n\n\t_rearrange: function( event, i, a, hardRefresh ) {\n\n\t\tif ( a ) {\n\t\t\ta[ 0 ].appendChild( this.placeholder[ 0 ] );\n\t\t} else {\n\t\t\ti.item[ 0 ].parentNode.insertBefore( this.placeholder[ 0 ],\n\t\t\t\t( this.direction === \"down\" ? i.item[ 0 ] : i.item[ 0 ].nextSibling ) );\n\t\t}\n\n\t\t//Various things done here to improve the performance:\n\t\t// 1. we create a setTimeout, that calls refreshPositions\n\t\t// 2. on the instance, we have a counter variable, that get's higher after every append\n\t\t// 3. on the local scope, we copy the counter variable, and check in the timeout,\n\t\t// if it's still the same\n\t\t// 4. this lets only the last addition to the timeout stack through\n\t\tthis.counter = this.counter ? ++this.counter : 1;\n\t\tvar counter = this.counter;\n\n\t\tthis._delay( function() {\n\t\t\tif ( counter === this.counter ) {\n\n\t\t\t\t//Precompute after each DOM insertion, NOT on mousemove\n\t\t\t\tthis.refreshPositions( !hardRefresh );\n\t\t\t}\n\t\t} );\n\n\t},\n\n\t_clear: function( event, noPropagation ) {\n\n\t\tthis.reverting = false;\n\n\t\t// We delay all events that have to be triggered to after the point where the placeholder\n\t\t// has been removed and everything else normalized again\n\t\tvar i,\n\t\t\tdelayedTriggers = [];\n\n\t\t// We first have to update the dom position of the actual currentItem\n\t\t// Note: don't do it if the current item is already removed (by a user), or it gets\n\t\t// reappended (see #4088)\n\t\tif ( !this._noFinalSort && this.currentItem.parent().length ) {\n\t\t\tthis.placeholder.before( this.currentItem );\n\t\t}\n\t\tthis._noFinalSort = null;\n\n\t\tif ( this.helper[ 0 ] === this.currentItem[ 0 ] ) {\n\t\t\tfor ( i in this._storedCSS ) {\n\t\t\t\tif ( this._storedCSS[ i ] === \"auto\" || this._storedCSS[ i ] === \"static\" ) {\n\t\t\t\t\tthis._storedCSS[ i ] = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.currentItem.css( this._storedCSS );\n\t\t\tthis._removeClass( this.currentItem, \"ui-sortable-helper\" );\n\t\t} else {\n\t\t\tthis.currentItem.show();\n\t\t}\n\n\t\tif ( this.fromOutside && !noPropagation ) {\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"receive\", event, this._uiHash( this.fromOutside ) );\n\t\t\t} );\n\t\t}\n\t\tif ( ( this.fromOutside ||\n\t\t\t\tthis.domPosition.prev !==\n\t\t\t\tthis.currentItem.prev().not( \".ui-sortable-helper\" )[ 0 ] ||\n\t\t\t\tthis.domPosition.parent !== this.currentItem.parent()[ 0 ] ) && !noPropagation ) {\n\n\t\t\t// Trigger update callback if the DOM position has changed\n\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\tthis._trigger( \"update\", event, this._uiHash() );\n\t\t\t} );\n\t\t}\n\n\t\t// Check if the items Container has Changed and trigger appropriate\n\t\t// events.\n\t\tif ( this !== this.currentContainer ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( function( event ) {\n\t\t\t\t\tthis._trigger( \"remove\", event, this._uiHash() );\n\t\t\t\t} );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"receive\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t\tdelayedTriggers.push( ( function( c ) {\n\t\t\t\t\treturn function( event ) {\n\t\t\t\t\t\tc._trigger( \"update\", event, this._uiHash( this ) );\n\t\t\t\t\t};\n\t\t\t\t} ).call( this, this.currentContainer ) );\n\t\t\t}\n\t\t}\n\n\t\t//Post events to containers\n\t\tfunction delayEvent( type, instance, container ) {\n\t\t\treturn function( event ) {\n\t\t\t\tcontainer._trigger( type, event, instance._uiHash( instance ) );\n\t\t\t};\n\t\t}\n\t\tfor ( i = this.containers.length - 1; i >= 0; i-- ) {\n\t\t\tif ( !noPropagation ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"deactivate\", this, this.containers[ i ] ) );\n\t\t\t}\n\t\t\tif ( this.containers[ i ].containerCache.over ) {\n\t\t\t\tdelayedTriggers.push( delayEvent( \"out\", this, this.containers[ i ] ) );\n\t\t\t\tthis.containers[ i ].containerCache.over = 0;\n\t\t\t}\n\t\t}\n\n\t\t//Do what was originally in plugins\n\t\tif ( this.storedCursor ) {\n\t\t\tthis.document.find( \"body\" ).css( \"cursor\", this.storedCursor );\n\t\t\tthis.storedStylesheet.remove();\n\t\t}\n\t\tif ( this._storedOpacity ) {\n\t\t\tthis.helper.css( \"opacity\", this._storedOpacity );\n\t\t}\n\t\tif ( this._storedZIndex ) {\n\t\t\tthis.helper.css( \"zIndex\", this._storedZIndex === \"auto\" ? \"\" : this._storedZIndex );\n\t\t}\n\n\t\tthis.dragging = false;\n\n\t\tif ( !noPropagation ) {\n\t\t\tthis._trigger( \"beforeStop\", event, this._uiHash() );\n\t\t}\n\n\t\t//$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately,\n\t\t// it unbinds ALL events from the original node!\n\t\tthis.placeholder[ 0 ].parentNode.removeChild( this.placeholder[ 0 ] );\n\n\t\tif ( !this.cancelHelperRemoval ) {\n\t\t\tif ( this.helper[ 0 ] !== this.currentItem[ 0 ] ) {\n\t\t\t\tthis.helper.remove();\n\t\t\t}\n\t\t\tthis.helper = null;\n\t\t}\n\n\t\tif ( !noPropagation ) {\n\t\t\tfor ( i = 0; i < delayedTriggers.length; i++ ) {\n\n\t\t\t\t// Trigger all delayed events\n\t\t\t\tdelayedTriggers[ i ].call( this, event );\n\t\t\t}\n\t\t\tthis._trigger( \"stop\", event, this._uiHash() );\n\t\t}\n\n\t\tthis.fromOutside = false;\n\t\treturn !this.cancelHelperRemoval;\n\n\t},\n\n\t_trigger: function() {\n\t\tif ( $.Widget.prototype._trigger.apply( this, arguments ) === false ) {\n\t\t\tthis.cancel();\n\t\t}\n\t},\n\n\t_uiHash: function( _inst ) {\n\t\tvar inst = _inst || this;\n\t\treturn {\n\t\t\thelper: inst.helper,\n\t\t\tplaceholder: inst.placeholder || $( [] ),\n\t\t\tposition: inst.position,\n\t\t\toriginalPosition: inst.originalPosition,\n\t\t\toffset: inst.positionAbs,\n\t\t\titem: inst.currentItem,\n\t\t\tsender: _inst ? _inst.element : null\n\t\t};\n\t}\n\n} );\n\n} );\n", "// check dependencies for each jquery-ui module here to avoid loading the whole library => https://jqueryui.com/download/#!version=1.13.2&components=101000000100000010000000010000000000000000000000\nimport \"jquery-ui/ui/version\";\nimport \"jquery-ui/ui/plugin\";\nimport \"jquery-ui/ui/widget\";\nimport \"jquery-ui/ui/data\";\nimport \"jquery-ui/ui/scroll-parent\";\nimport \"jquery-ui/ui/widgets/mouse\";\nimport \"jquery-ui/ui/widgets/sortable\";\n\n!(function (n) {\n  \"use strict\";\n  function e() {\n    n(\"#hamburger-menu\").toggleClass(\"active\"),\n      n(\"#main-navigation\").toggleClass(\"show\"),\n      n(\"body\").toggleClass(\"lock-body\");\n  }\n  function o() {\n    n(\"#mobile-header\").is(\":visible\") &&\n      n(\"#main-navigation\").hasClass(\"show\") &&\n      e();\n  }\n  function initializeCalendly() {\n    let script = document.createElement(\"script\");\n    script.src = \"https://assets.calendly.com/assets/external/widget.js\";\n    script.onload = function () {\n      if (window.hasOwnProperty(\"Calendly\")) {\n        Calendly.initInlineWidget({\n          url: \"https://calendly.com/groupe-quinze/rendez-vous-site\",\n          parentElement: document.getElementById(\"calendlyContainer\"),\n          prefill: {},\n          utm: {},\n        });\n      }\n    };\n    document.body.appendChild(script);\n  }\n  n(document).on(\"turbo:load\", function () {\n    // n(\"#hamburger-menu\").on(\"click\", e),\n    n(\"#main-content\").on(\"click\", o),\n      n(\".button--read-more\").on(\"click\", function (e) {\n        e.preventDefault(),\n          n(this).parent().find(\".d-none\").removeClass(\"d-none\"),\n          n(this).addClass(\"d-none\");\n      });\n\n    const DROPPABLE_STATES = [\"started\", \"pending\", \"thinking\"];\n    const DROPPABLE_TYPES = {\n      documents: \"document\",\n      missions: \"mission\",\n      notes: \"note\",\n      tasks: \"patrimony_task\",\n      projects: \"mission\",\n    };\n    n(\".droppable .tasks-column-container\").sortable({\n      connectWith: \".connectedSortable .tasks-column-container\",\n      start: function (event, ui) {},\n      update: function (event, ui) {\n        if (ui.sender) {\n          ui.item\n            .parent()\n            .parent()\n            .find(\"h2 .circle-number\")\n            .text(function (index, text) {\n              return parseInt(text, 10) + 1;\n            });\n          ui.sender\n            .parent()\n            .find(\"h2 .circle-number\")\n            .text(function (index, text) {\n              return parseInt(text, 10) - 1;\n            });\n          let url = new URL(ui.item.attr(\"href\"), location);\n          const stateIndex = $(\".tasks-column-container\").index(\n            ui.item.parent()\n          );\n          const formData = new FormData();\n          let droppableType = \"\";\n          if (url.pathname.includes(\"missions\")) {\n            const badge = ui.item.find(\n              \".card-task__header .badges.badges__small\"\n            );\n            url.pathname = url.pathname + \"/update_state\";\n            if (badge.hasClass(\"badges__project\")) {\n              droppableType = DROPPABLE_TYPES.projects;\n            } else {\n              droppableType = DROPPABLE_TYPES.missions;\n            }\n          } else if (url.pathname.includes(\"documents\")) {\n            droppableType = DROPPABLE_TYPES.documents;\n          } else if (url.pathname.includes(\"notes\")) {\n            droppableType = DROPPABLE_TYPES.notes;\n          } else if (url.pathname.includes(\"tasks\")) {\n            droppableType = DROPPABLE_TYPES.tasks;\n          }\n          formData.append(\n            droppableType + \"[state]\",\n            DROPPABLE_STATES[stateIndex]\n          );\n          n.ajax({\n            url: url.toString(),\n            method: \"PUT\",\n            data: formData,\n            processData: false,\n            contentType: false,\n          });\n        }\n      },\n    });\n\n    const defaultAllowList = bootstrap.Tooltip.Default.allowList;\n    defaultAllowList.a = [\n      \"target\",\n      \"href\",\n      \"title\",\n      \"rel\",\n      \"data-confirm\",\n      \"data-method\",\n      \"data-turbo\",\n      \"data-disable-with\",\n    ];\n\n    if (document.querySelector(\".menu-popover\")) {\n      const popover = new bootstrap.Popover(\n        document.querySelector(\".menu-popover\"),\n        {\n          trigger: \"focus\",\n          container: \"body\",\n          html: true,\n          content: function () {\n            return this.nextElementSibling.innerHTML;\n          },\n          template: `\n          <div class=\"popover\" role=\"tooltip\">\n            <div class=\"popover-arrow\"></div>\n            <div class=\"popover-body\">\n            \n            </div>\n          </div>\n        `,\n          offset: [0, 40],\n          popperConfig: {\n            placement: \"right-end\",\n          },\n        }\n      );\n    }\n\n    const tooltipTriggerList = [].slice.call(\n      document.querySelectorAll('[data-bs-toggle=\"tooltip\"]')\n    );\n    const tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {\n      return new bootstrap.Tooltip(tooltipTriggerEl);\n    });\n\n    if (document.getElementById(\"calendlyContainer\")) {\n      initializeCalendly();\n    }\n\n    // function setStateBodyColor(state) {\n    //   document.body.classList.remove(\"page-purple\");\n    //   document.body.classList.remove(\"page-soft-blue\");\n    //   document.body.classList.remove(\"page-green\");\n    //   switch (state) {\n    //     case \"started\":\n    //       document.body.classList.add(\"page-purple\");\n    //       break;\n    //     case \"pending\":\n    //       document.body.classList.add(\"page-soft-blue\");\n    //       break;\n    //     case \"thinking\":\n    //       document.body.classList.add(\"page-green\");\n    //       break;\n    //     default:\n    //       document.body.classList.add(\"page-soft-blue\");\n    //       break;\n    //   }\n    // }\n\n    // if (document.querySelector(\"select#patrimony_task_state\")) {\n    //   document\n    //     .querySelector(\"select#patrimony_task_state\")\n    //     .addEventListener(\"change\", function (e) {\n    //       setStateBodyColor(e.target.value);\n    //     });\n\n    //   const params = new URLSearchParams(document.location.search);\n    //   if (params.get(\"state\")) {\n    //     setStateBodyColor(params.get(\"state\"));\n    //   }\n    // }\n\n    if (document.getElementById(\"patrimony_task_files\")) {\n      document\n        .getElementById(\"patrimony_task_files\")\n        .addEventListener(\"change\", function (e) {\n          if (e.target.files) {\n            for (let i = 0; i < e.target.files.length; i++) {\n              document.getElementById(\"documents_preview\").innerHTML += `\n                <div class='col-12 col-md-6 col-lg-4'>\n                  <div class='form-file-upload--display'>\n                    <span class='icon-file-text'></span>\n                    <span class='filename purple'>${e.target.files[i].name}</span>\n                    <a class='btn btn-danger btn-sm btn-icon new-file-remove' data-index='${i}'>\n                      <span class='fa fa-trash'></span>\n                    </a>\n                  </div>\n                </div>\n              `;\n            }\n            const removeBtns = document.querySelectorAll('.new-file-remove')\n            removeBtns.forEach(function (btn) { \n              btn.addEventListener('click', function(evt) {\n                document.getElementById('patrimony_task_files').value = null;\n                removeBtns.forEach(function (btn) {\n                  btn.closest('.col-12').remove()\n                })\n              })\n            })\n          }\n        });\n    }\n  });\n})(jQuery);\n", "!(function (e) {\n  \"use strict\";\n  e(document).on(\"turbo:load\", function () {\n    e.validator.addMethod(\n      \"email\",\n      function (e, a) {\n        return (\n          this.optional(a) ||\n          /^([a-zA-Z0-9_.+-])+\\@(([a-zA-Z0-9-])+\\.)+([a-zA-Z0-9]{2,4})+$/i.test(\n            e\n          )\n        );\n      },\n      \"Votre email ne semble pas valide, merci de le v\u00E9rifier\"\n    ),\n      e.validator.addMethod(\n        \"password\",\n        function (e, a) {\n          return (\n            this.optional(a) ||\n            /^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)[A-Za-z\\d@$!%*?&><]{7,}$/i.test(e)\n          );\n        },\n        \"Votre mot de passe ne semble pas valide, merci de le v\u00E9rifier (minimum 7 caract\u00E8res et au moins un chiffre)\"\n      ),\n      e.validator.addMethod(\n        \"phone\",\n        function (e, a) {\n          return (\n            this.optional(a) ||\n            /^(\\(?\\+?[0-9]*\\)?)?[0-9\\-. \\(\\)]{9,20}$/.test(e)\n          );\n        },\n        \"Il ne s\u2019agit pas d\u2019un num\u00E9ro de t\u00E9l\u00E9phone valide\"\n      ),\n      e.validator.setDefaults({\n        ignore: [],\n        errorClass: \"is-invalid field-error\",\n        validClass: \"is-valid field-validated\",\n        errorElement: \"em\",\n        highlight: function (a, r, t) {\n          e(a).is(\"input\")\n            ? \"checkbox\" == e(a).attr(\"type\")\n              ? e(a).parents(\".form-checkboxes\").addClass(r).removeClass(t)\n              : \"radio\" == e(a).attr(\"type\")\n              ? e(a).parents(\".form-radios\").addClass(r).removeClass(t)\n              : e(a).parent().hasClass(\"input-group\")\n              ? e(a).parent(\".input-group\").addClass(r).removeClass(t)\n              : e(a).parent().addClass(r).removeClass(t)\n            : e(a).parent().addClass(r).removeClass(t),\n            e(a).addClass(r).removeClass(t);\n        },\n        unhighlight: function (a, r, t) {\n          e(a).is(\"input\")\n            ? \"checkbox\" == e(a).attr(\"type\")\n              ? e(a).parents(\".form-checkboxes\").removeClass(r).addClass(t)\n              : \"radio\" == e(a).attr(\"type\")\n              ? e(a).parents(\".form-radios\").removeClass(r).addClass(t)\n              : e(a).parent().hasClass(\"input-group\")\n              ? e(a).parent(\".input-group\").removeClass(r).addClass(t)\n              : e(a).parent().removeClass(r).addClass(t)\n            : e(a).parent().removeClass(r).addClass(t),\n            e(a).removeClass(r).addClass(t);\n        },\n        errorPlacement: function (a, r) {\n          \"checkbox\" != e(r).attr(\"type\") &&\n            \"radio\" != e(r).attr(\"type\") &&\n            \"file\" != e(r).attr(\"type\") &&\n            !1 === e(r).parent().hasClass(\"input-group\") &&\n            r.parent().append(a),\n            \"checkbox\" == e(r).attr(\"type\") &&\n              r.parents(\".form-checkboxes\").append(a),\n            \"radio\" == e(r).attr(\"type\") && r.parents(\".form-radios\").append(a),\n            \"file\" == e(r).attr(\"type\") &&\n              r.parents(\".form-file-wrapper\").after(a),\n            e(r).parent().hasClass(\"input-group\") &&\n              r.parents(\".input-group\").after(a);\n        },\n      }),\n      e(\".validate-form\").validate(),\n      e(\"#signin-form\").length &&\n        e(\"#signin-form\").validate({\n          rules: {\n            \"user[email]\": { required: true, email: true },\n            \"user[password]\": { required: true, password: !1 },\n          },\n        }),\n      e(\"#otp-form\").length &&\n        e(\"#otp-form\").validate({\n          rules: { \"user[otp_attempt]\": { required: true } },\n        }),\n      e(\"#accept-invitation-form\").length &&\n        e(\"#accept-invitation-form\").validate({\n          rules: {\n            \"user[password]\": { required: true, password: !1 },\n            \"user[password_confirmation]\": {\n              required: true,\n              equalTo: \"#password_user_password\",\n            },\n          },\n        }),\n      e(\"#password-forgotten-form\").length &&\n        e(\"#password-forgotten-form\").validate({\n          rules: { \"user[email]\": { required: true, email: true } },\n        }),\n      e(\"#change-password-form\").length &&\n        e(\"#change-password-form\").validate({\n          rules: {\n            \"user[password]\": { required: true, password: !1 },\n            \"user[password_confirmation]\": {\n              required: true,\n              equalTo: \"#password_user_password\",\n            },\n          },\n          messages: {\n            \"user[password_confirmation]\":\n              \"Vos mots de passe ne sont pas identiques\",\n          },\n        }),\n      e(\"#edit-account-form\").length &&\n        e(\"#edit-account-form\").validate({\n          rules: {\n            \"user[last_name]\": { required: true, minlength: 2 },\n            \"user[first_name]\": { required: true, minlength: 2 },\n            \"user[email]\": { required: true, email: true },\n            \"user[password]\": { password: true },\n            \"user[password_confirmation]\": {\n              equalTo: \"#user_password\",\n              password: !1,\n            },\n            \"user[phone]\": { phone: true },\n            \"user[mobile_phone]\": { required: true, phone: true },\n            \"user[manager_id]\": { required: true },\n            \"user[street]\": { required: true },\n            \"user[city]\": { required: true, minlength: 2 },\n            \"user[zip]\": { required: true, minlength: 2, digits: true },\n            \"user[country_id]\": { required: true, digits: true },\n          },\n        }),\n      e(\"#account-share-form\").length &&\n        e(\"#account-share-form\").validate({\n          rules: {\n            \"account_share[last_name]\": { required: true, minlength: 2 },\n            \"account_share[first_name]\": { required: true, minlength: 2 },\n            \"account_share[email]\": { required: true, email: true },\n            \"account_share[email_confirmation]\": {\n              required: true,\n              equalTo: \"#account_share_email\",\n              email: true,\n            },\n            \"account_share[phone]\": { required: true, phone: true },\n            \"account_share[phone_confirmation]\": {\n              required: true,\n              pequalTo: \"account_share_phone\",\n              phone: true,\n            },\n          },\n        }),\n      e(\"#edit-partner-form\").length &&\n        e(\"#edit-partner-form\").validate({\n          rules: {\n            \"user[last_name]\": { required: true, minlength: 2 },\n            \"user[first_name]\": { required: true, minlength: 2 },\n            \"user[email]\": { required: true, email: true },\n            // \"user[password]\": { password: true },\n            // \"user[password_confirmation]\": {\n            //   equalTo: \"#user_password\",\n            //   password: !1,\n            // },\n            \"user[mobile_phone]\": { required: true, phone: true },\n            \"user[manager_id]\": { required: true },\n            \"user[company]\": { required: true },\n            \"user[street]\": { required: true },\n            \"user[city]\": { required: true, minlength: 2 },\n            \"user[zip]\": { required: true, minlength: 2, digits: true },\n            \"user[country_id]\": { required: true, digits: true },\n          },\n        }),\n      e(\"#user-form\").length &&\n        e(\"#user-form\").validate({\n          rules: {\n            \"user[last_name]\": { required: true, minlength: 2 },\n            \"user[first_name]\": { required: true, minlength: 2 },\n            \"user[email]\": { required: true, email: true },\n            // \"user[password]\": { password: true },\n            // \"user[password_confirmation]\": {\n            //   equalTo: \"#user_password\",\n            //   password: !1,\n            // },\n            \"user[mobile_phone]\": { required: true, phone: true },\n          },\n        }),\n      e(\".custom-file-input\").on(\"change\", function () {\n        var a = e(this).val().split(\"\\\\\").pop();\n        e(this)\n          .siblings(\".form-file-upload--display\")\n          .find(\".filename\")\n          .addClass(\"selected\")\n          .html(a)\n          e(this).valid();\n      }),\n      e(\"#situation-form\").length &&\n        e(\"#situation-form\").validate({\n          rules: {\n            \"evolution[patrimony_ids][]\": { required: true },\n            \"evolution[description]\": { required: true },\n            \"evolution[files][]\": {\n              required: (el) => {\n                el.files && el.files.length < 0;\n              },\n            },\n            \"evolution[patrimony_update]\": { required: true },\n          },\n        });\n    e(\"#page-form\").length &&\n      e(\"#page-form\").validate({\n        rules: {\n          \"page[title]\": { required: true },\n          \"page[seo_title]\": { required: true },\n          \"page[browser_title]\": { required: true },\n        },\n      });\n    e(\"#contact-us-form\").length &&\n      e(\"#contact-us-form\").validate({\n        rules: {\n          \"contact[contact_subject]\": { required: true },\n          \"contact[body]\": { required: true },\n          // \"contact[file]\": { required: true },\n          ck1: { required: true },\n        },\n      });\n    e(\"#naos-form-step-1\").length &&\n      e(\"#naos-form-step-1\").validate({\n        \"naos[title]\": { required: true },\n        \"naos[email]\": { required: true, email: true },\n        \"naos[phone]\": { required: true },\n        \"naos[mission_statement_full_name]\": { required: true },\n        \"naos[mission_statement_civility]\": { required: true },\n      });\n    e(\"#new_naos_user\").length &&\n      e(\"#new_naos_user\").validate({\n        \"naos_user[email]\": { required: true, email: true },\n        \"naos_user[password]\": { required: true },\n        \"naos_user[password_confirmation]\": { required: true },\n      });\n    e(\".dynamic-profile-select, .js-select-submit\").on(\n      \"change\",\n      function (evt) {\n        e(this).closest(\"form\").submit();\n      }\n    );\n    e(\"#task-form\").on(\"keypress\", function (evt) {\n      if (evt.key === 'Enter' || evt.which === 13) {\n        const hiddenInput = e(this).find(\"input[name='save_and_quit']\");\n        hiddenInput.val(\"false\");\n      }\n    });\n  });\n})(jQuery);\n"],
  "mappings": "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",
  "names": []
}
