larger thumbnails v2

Show larger thumbnails on javbus and javdb. 123av,jable,and missav can get magnet from javbus

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name               larger thumbnails v2
// @name:zh-CN         封面大图v2
// @namespace          https://github.com/kygo233/tkjs/tree/v2
// @version            2026.02.19
// @author             kygo233
// @description        Show larger thumbnails on javbus and javdb. 123av,jable,and missav can get magnet from javbus
// @description:zh-CN  javbus和javdb显示大图封面; 123av,jable,missav获取javbus的磁力
// @license            MIT
// @homepage           https://greasyfork.org/zh-CN/scripts/537891-larger-thumbnails-v2
// @include            /^https?:\/\/.*(javbus|busjav|busfan|fanbus|buscdn|cdnbus|dmmsee|seedmm|busdmm|dmmbus|javsee|seejav)\..*$/
// @include            /^https?:\/\/.*(javdb)[0-9]*\..*$/
// @include            /^https?:\/\/.*(missav)\.(ws|ai).*$/
// @include            /^https?:\/\/.*(123av\.com|123av\.ws|1av\.to).*$/
// @include            /^https?:\/\/.*(jable\.tv).*$/
// @connect            javbus.com
// @connect            javfree.me
// @connect            blogjav.net
// @connect            missav.ws
// @connect            *
// @grant              GM_addStyle
// @grant              GM_download
// @grant              GM_getValue
// @grant              GM_setClipboard
// @grant              GM_setValue
// @grant              GM_xmlhttpRequest
// ==/UserScript==

(e=>{if(typeof GM_addStyle=="function"){GM_addStyle(e);return}const t=document.createElement("style");t.textContent=e,document.head.append(t)})(" .hidden-b{display:none!important}.alert-zdy{position:fixed;white-space:nowrap;top:50%;left:50%;padding:10px;font-size:20px;color:#fff;background-color:#000000bf;border-radius:5px;z-index:1051;transform:translate(-50%,-50%)}.alert-close{display:inline-block;padding:0 0 0 10px;color:gray;cursor:pointer}.btn-copy{display:block;margin:auto;border:none;color:#fff;white-space:nowrap;background-color:#dc3545;padding:.375rem .75rem;border-radius:.25rem}[data-theme=dark] body[javdb] #grid-b a.box-b{color:#d1d1d1;background-color:#222}[data-theme=dark] body[javdb] .alert-zdy{color:#000;background-color:#ffffffe5}[data-theme=light] body[javdb] #myModal .modal-content-b[id^=magnet]{background-color:#ffffffe5}body[javdb] #myModal #modal-div article.message{margin-bottom:0}body[javdb] .max-width-100{max-width:100%!important}body[missav] #myModal,body[missav] .alert-zdy,body[missav] .menu-b{z-index:2147483648!important}body[missav] div.scroll-status{color:#dbdbdb}body[jable] #myModal,body[jable] .alert-zdy{z-index:1901}.menu-b.svelte-1mjf8vs{position:fixed;z-index:1030;left:0;top:0;display:flex;flex-direction:column}.menu-b.svelte-1mjf8vs .menu-tool:where(.svelte-1mjf8vs){width:30px;height:30px;cursor:pointer;font-size:20px}.menu-list.svelte-1mjf8vs{padding:5px;background:linear-gradient(to left top,#f3fef4,#fbfbfb);color:#000;border-radius:5px;font-size:large;font-weight:550;box-shadow:0 10px 20px #0000007f;animation:fadeInUp .2s ease-out;max-height:calc(99vh - 30px);overflow-y:auto}.menu-list.svelte-1mjf8vs>div:where(.svelte-1mjf8vs){display:flex;align-items:center;padding:5px;border-radius:5px}.menu-list.svelte-1mjf8vs>div:where(.svelte-1mjf8vs):hover{background-color:#39563637}.menu-list.svelte-1mjf8vs input:where(.svelte-1mjf8vs){margin:0;padding:0}.menu-list.svelte-1mjf8vs label:where(.svelte-1mjf8vs){margin:0;padding:0 5px}.menu-list.svelte-1mjf8vs .checkbox-div:where(.svelte-1mjf8vs) label:where(.svelte-1mjf8vs){flex-grow:1}.menu-list.svelte-1mjf8vs .range-div:where(.svelte-1mjf8vs) input:where(.svelte-1mjf8vs){width:250px}.menu-list.svelte-1mjf8vs .range-div:where(.svelte-1mjf8vs) input:where(.svelte-1mjf8vs):disabled+span:where(.svelte-1mjf8vs){opacity:.5}.menu-list.svelte-1mjf8vs .input-div:where(.svelte-1mjf8vs) input:where(.svelte-1mjf8vs){border-radius:3px;border:1px solid rgb(0,0,0,.5);padding:3px;font-size:medium;flex-grow:1;outline:none}.menu-list.svelte-1mjf8vs .radio-div:where(.svelte-1mjf8vs) label:where(.svelte-1mjf8vs){font-weight:initial}.scroll-status.svelte-15aqm4u{display:flex;align-items:center;justify-content:center;height:15px;font-size:20px}.scroll-status.svelte-15aqm4u .scroll-load:where(.svelte-15aqm4u){width:100px;height:5px;border-radius:10px;background:currentColor;opacity:.5}.preview-panel.svelte-b5u7ct{min-height:100vh}.preview-panel.svelte-b5u7ct ul.preview-title-ul:where(.svelte-b5u7ct){margin:0;padding:10px 10px 10px 40px;list-style-type:disc}.preview-panel.svelte-b5u7ct .preview-dwonload:where(.svelte-b5u7ct){position:absolute;border-radius:3px;padding:3px;right:0;z-index:2;cursor:pointer;background-color:#3333338d;color:#f0f8ff}.preview-panel.svelte-b5u7ct .preview-dwonload:where(.svelte-b5u7ct)>svg{width:25px;height:25px;vertical-align:middle}.preview-panel.svelte-b5u7ct .preview-dwonload:where(.svelte-b5u7ct).span-loading{animation:span-loading 1s infinite}.preview-panel.svelte-b5u7ct .preview-title:where(.svelte-b5u7ct){color:#ffffff7f;font-size:20px;cursor:pointer}.preview-panel.svelte-b5u7ct .preview-title-current:where(.svelte-b5u7ct){color:#fff}.preview-panel.svelte-b5u7ct .preview-title-loading:where(.svelte-b5u7ct){animation:svelte-b5u7ct-changeTextColor 1s ease-in infinite}.preview-panel.svelte-b5u7ct .img-none:where(.svelte-b5u7ct){color:#fff;font-size:30px;margin-left:20px}.preview-panel.svelte-b5u7ct .preview-img:where(.svelte-b5u7ct){width:100%;cursor:zoom-in}.preview-panel.svelte-b5u7ct .preview-img:where(.svelte-b5u7ct).img-zoom{max-width:120%;width:120%;margin:0 -10%;cursor:zoom-out}@keyframes svelte-b5u7ct-changeTextColor{0%,to{color:#fff}50%{color:#ffffff80}}#myModal.svelte-cp3jzs{overflow-x:hidden;overflow-y:auto;position:fixed;top:0;left:0;right:0;bottom:0;z-index:1050;background-color:#000000bf;display:flex;justify-content:center;align-items:center}#modal-div.svelte-cp3jzs{position:relative;width:80%;max-width:1400px;animation:svelte-cp3jzs-fadeInDown .5s ease-out;max-height:100vh}#modal-div.svelte-cp3jzs .modal-content-b{background-color:#00000080;border-radius:5px}#modal-div.svelte-cp3jzs .sample-box-zdy,#modal-div.svelte-cp3jzs .avatar-box-zdy{display:inline-block;border-radius:5px;background-color:#fff;text-align:center;margin:0 5px 5px 0;width:130px}#modal-div.svelte-cp3jzs .sample-box-zdy .photo-frame{overflow:hidden;margin:5px}#modal-div.svelte-cp3jzs .sample-box-zdy img{height:90px}#modal-div.svelte-cp3jzs .avatar-box-zdy .photo-frame{overflow:hidden;height:120px;margin:5px}#modal-div.svelte-cp3jzs .avatar-box-zdy img{height:120px}#modal-div.svelte-cp3jzs .avatar-box-zdy span{font-weight:700;word-wrap:break-word;padding:5px;line-height:22px;color:#333}#modal-div.svelte-cp3jzs .javbus-table{width:100%;background-color:#fff;border-radius:5px;overflow:hidden}#modal-div.svelte-cp3jzs .javbus-table tr td:first-child{padding-left:10px}#modal-div.svelte-cp3jzs .javbus-table tr:hover{background-color:#d4d4d4!important}#modal-div.svelte-cp3jzs .javbus-table a.btn{color:#fff;padding:1px 3px;white-space:nowrap;border-radius:.25rem;opacity:.65}#modal-div.svelte-cp3jzs .javbus-table a.btn.btn-primary{background-color:#265a88}#modal-div.svelte-cp3jzs .javbus-table a.btn.btn-warning{background-color:#eb9316}@keyframes svelte-cp3jzs-fadeInDown{0%{transform:translate3d(0,-50%,0);opacity:0}to{transform:none;opacity:1}}#grid-b.svelte-1z0rci6{display:flex;flex-wrap:wrap}#grid-b.svelte-1z0rci6 .item-b:where(.svelte-1z0rci6){padding:5px;transition:width .5s;animation:fadeInUp .5s ease-out}#grid-b.svelte-1z0rci6 .item-b:where(.svelte-1z0rci6) .avatar-box{display:flex;flex-direction:column;border-radius:5px;align-items:center;width:100%;margin:0}#grid-b.svelte-1z0rci6 .item-b:where(.svelte-1z0rci6) .avatar-box .photo-frame{margin:5px}#grid-b.svelte-1z0rci6 .item-b:where(.svelte-1z0rci6) .avatar-box p{margin:0!important}#grid-b.svelte-1z0rci6 .box-b:where(.svelte-1z0rci6){display:block;border-radius:5px;background-color:#fff;border:1px solid rgba(0,0,0,.2);box-shadow:0 2px 3px #0000001a;overflow:hidden;color:#000}#grid-b.svelte-1z0rci6 .box-b:where(.svelte-1z0rci6):visited .detail-title:where(.svelte-1z0rci6){color:gray}#grid-b.svelte-1z0rci6 .cover-b:where(.svelte-1z0rci6){position:relative}#grid-b.svelte-1z0rci6 .cover-b:where(.svelte-1z0rci6) img:where(.svelte-1z0rci6){position:absolute;bottom:0;left:0;width:100%;height:100%;object-fit:cover}#grid-b.svelte-1z0rci6 .cover-b:where(.svelte-1z0rci6) img:where(.svelte-1z0rci6):not([src]){visibility:hidden}#grid-b.svelte-1z0rci6 .cover-b:where(.svelte-1z0rci6) img.lazy.error{width:auto}#grid-b.svelte-1z0rci6 .detail-b:where(.svelte-1z0rci6){padding:6px 8px}#grid-b.svelte-1z0rci6 .detail-b:where(.svelte-1z0rci6) .info-bottom:where(.svelte-1z0rci6){display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap}#grid-b.svelte-1z0rci6 .detail-b:where(.svelte-1z0rci6) .detail-title:where(.svelte-1z0rci6):hover,#grid-b.svelte-1z0rci6 .detail-b:where(.svelte-1z0rci6) .detail-avid:where(.svelte-1z0rci6):hover{text-decoration:underline}#grid-b.svelte-1z0rci6 .detail-b:where(.svelte-1z0rci6) .detail-avid:where(.svelte-1z0rci6){font-size:18px}#grid-b.svelte-1z0rci6 .detail-b:where(.svelte-1z0rci6) .titleNowrap:where(.svelte-1z0rci6){white-space:nowrap;text-overflow:ellipsis;overflow:hidden}#grid-b.full-b.svelte-1z0rci6 .cover-b:where(.svelte-1z0rci6){padding-top:67.25%}#grid-b.half-b.svelte-1z0rci6 .cover-b:where(.svelte-1z0rci6){padding-top:142.57%}#grid-b.half-b.svelte-1z0rci6 .cover-b:where(.svelte-1z0rci6) img:where(.svelte-1z0rci6){object-position:right}.toolbar-b.svelte-1z0rci6{display:flex}.cover-b:where(.svelte-1z0rci6) .toolbar-b.svelte-1z0rci6{position:absolute;bottom:0;right:0;padding:16px 6px 6px 16px;opacity:0}.cover-b:where(.svelte-1z0rci6) .toolbar-b.svelte-1z0rci6:hover{opacity:1;animation:fadeInUp .5s ease-out}.cover-b:where(.svelte-1z0rci6) .toolbar-b.svelte-1z0rci6:has(span.span-loading:where(.svelte-1z0rci6)){opacity:1}.cover-b:where(.svelte-1z0rci6) .toolbar-b.svelte-1z0rci6 span:where(.svelte-1z0rci6){margin:2px;padding:4px;color:#0ff;background-color:#383838e6}.detail-b:where(.svelte-1z0rci6) .toolbar-b.svelte-1z0rci6 span:where(.svelte-1z0rci6){opacity:.6;padding:0 2px}.detail-b:where(.svelte-1z0rci6) .toolbar-b.svelte-1z0rci6 span:where(.svelte-1z0rci6):hover{opacity:1}.toolbar-b.svelte-1z0rci6 span:where(.svelte-1z0rci6){display:flex;border-radius:5px}.toolbar-b.svelte-1z0rci6 span:where(.svelte-1z0rci6) svg{width:24px;height:24px}.toolbar-b.svelte-1z0rci6 span:where(.svelte-1z0rci6).span-loading{animation:span-loading 1s infinite}@keyframes span-loading{0%,to{transform:none;animation-timing-function:cubic-bezier(0,0,.2,1)}50%{transform:translateY(-15%);animation-timing-function:cubic-bezier(.8,0,1,1)}}@keyframes fadeInUp{0%{transform:translate3d(0,5%,0);opacity:.5}to{transform:none;opacity:1}}.magnet-grid.svelte-70kzxz{opacity:0;border-radius:5px;color:#e5e9f0;padding:5px;cursor:pointer}.magnet-grid.svelte-70kzxz svg{width:22px;height:22px}.magnet-grid.svelte-70kzxz:hover{opacity:1}body[missav] .magnet-grid.svelte-70kzxz{width:initial;height:initial;bottom:initial;left:initial;right:5px;top:5px;background-color:#1f2937bf}body[av123] .magnet-grid.svelte-70kzxz{position:absolute;right:10px;top:10px;background-color:#0006}body[jable] .magnet-grid.svelte-70kzxz{position:absolute;right:15px;top:5px;z-index:100;background-color:#00000080}.magnet-video.svelte-70kzxz{color:#eceff4;cursor:pointer}body[av123] .magnet-video.svelte-70kzxz{margin-left:10px}span.span-loading.svelte-70kzxz{opacity:1;animation:span-loading 1s infinite} ");

(function () {
  'use strict';

  var __defProp = Object.defineProperty;
  var __typeError = (msg) => {
    throw TypeError(msg);
  };
  var __defNormalProp = (obj2, key, value) => key in obj2 ? __defProp(obj2, key, { enumerable: true, configurable: true, writable: true, value }) : obj2[key] = value;
  var __publicField = (obj2, key, value) => __defNormalProp(obj2, typeof key !== "symbol" ? key + "" : key, value);
  var __accessCheck = (obj2, member, msg) => member.has(obj2) || __typeError("Cannot " + msg);
  var __privateGet = (obj2, member, getter) => (__accessCheck(obj2, member, "read from private field"), getter ? getter.call(obj2) : member.get(obj2));
  var __privateAdd = (obj2, member, value) => member.has(obj2) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj2) : member.set(obj2, value);
  var __privateSet = (obj2, member, value, setter) => (__accessCheck(obj2, member, "write to private field"), member.set(obj2, value), value);
  var __privateMethod = (obj2, member, method) => (__accessCheck(obj2, member, "access private method"), method);
  var _commit_callbacks, _discard_callbacks, _pending, _blocking_pending, _deferred, _dirty_effects, _maybe_dirty_effects, _skipped_branches, _decrement_queued, _Batch_instances, is_deferred_fn, traverse_effect_tree_fn, defer_effects_fn, commit_fn, _anchor, _hydrate_open, _props, _children, _effect, _main_effect, _pending_effect, _failed_effect, _offscreen_fragment, _local_pending_count, _pending_count, _pending_count_update_queued, _dirty_effects2, _maybe_dirty_effects2, _effect_pending, _effect_pending_subscriber, _Boundary_instances, render_fn, resolve_fn, run_fn, update_pending_count_fn, _a, _batches, _onscreen, _offscreen, _outroing, _transition, _commit, _discard, _b, _c;
  const [JAVBUS, JAVDB, MISSAV, AV123, JABLE, JAVFREE, BLOGJAV] = ["javbus", "javdb", "missav", "av123", "jable", "javfree", "blogjav"];
  const [GRID, VIDEO] = ["grid", "video"];
  const id = () => Math.random().toString(16).slice(2);
  const siteList = [
    {
      name: JAVBUS,
      domainReg: /^https?:\/\/.*(javbus|busjav|busfan|fanbus|buscdn|cdnbus|dmmsee|seedmm|busdmm|dmmbus|javsee|seejav)\..*$/,
      excludePages: ["/actresses", "mdl=favor&sort=1", "mdl=favor&sort=2", "mdl=favor&sort=3", "mdl=favor&sort=4", "searchstar"],
      halfImgBlockPages: ["/uncensored", "mod=uc", "javbus.hair"],
      gridSelector: "div#waterfall",
      itemSelector: "div#waterfall>div.item",
      pageNext: "a#next",
      getAvItem: function(elem) {
        var _a2, _b2, _c2, _d;
        let AVID = (_a2 = elem.querySelector("date")) == null ? void 0 : _a2.textContent;
        if (!AVID) return { html: elem.innerHTML };
        let href = (_b2 = elem.querySelector("a")) == null ? void 0 : _b2.href;
        let img = elem.querySelector("div.photo-frame>img");
        let src = img == null ? void 0 : img.src;
        if (src.match(/pics.dmm.co.jp/)) {
          src = src.replace(/ps.jpg/, "pl.jpg");
        } else if (src.match(/image.mgstage.com/)) {
          src = src.replace(/pf_o1_|pb_p_/, "pb_e_");
        } else {
          src = src.replace(/thumbs/, "cover").replace(/thumb/, "cover").replace(/.jpg/, "_b.jpg");
        }
        let title = img == null ? void 0 : img.title;
        let date = (_c2 = elem.querySelectorAll("date")[1]) == null ? void 0 : _c2.textContent;
        let itemTag = (_d = elem.querySelector("div.photo-info div:first-of-type")) == null ? void 0 : _d.innerHTML;
        return { id: id(), AVID, href, src, title, date, itemTag, score: "" };
      }
    },
    {
      name: JAVDB,
      domainReg: /^https?:\/\/.*(javdb)[0-9]*\..*$/,
      excludePages: ["/users/"],
      halfImgBlockPages: ["/uncensored", "/western", "/video_uncensored", "/video_western"],
      itemSelector: "div.movie-list.h>div.item",
      pageNext: "a.pagination-next",
      getAvItem: function(elem) {
        var _a2, _b2, _c2, _d, _e, _f, _g;
        let href = (_a2 = elem.querySelector("a")) == null ? void 0 : _a2.href;
        let src = (_b2 = elem.querySelector("div.cover > img")) == null ? void 0 : _b2.src;
        let title = (_c2 = elem.querySelector("a")) == null ? void 0 : _c2.title;
        let AVID = (_d = elem.querySelector("div.video-title>strong")) == null ? void 0 : _d.textContent;
        let date = (_e = elem.querySelector("div.meta")) == null ? void 0 : _e.textContent;
        let score = (_f = elem.querySelector("div.score")) == null ? void 0 : _f.innerHTML;
        let itemTag = (_g = elem.querySelector(".tags.has-addons")) == null ? void 0 : _g.innerHTML;
        return { id: id(), AVID, href, src, title, date, itemTag, score };
      }
    },
    {
      name: MISSAV,
      domainReg: /^https?:\/\/.*(missav)\.(ws|ai).*$/,
      itemSelectorObj: {
        [GRID]: "div.grid[x-init]>div",
        [VIDEO]: `button[\\@click\\.prevent="togglePanel('share')"]`
      },
      pageNext: "a[rel=next]"
    },
    {
      name: AV123,
      domainReg: /^https?:\/\/.*(123av\.com|123av\.ws|1av\.to).*$/,
      itemSelectorObj: {
        [GRID]: "#page-list .box-item-list>div",
        [VIDEO]: "button.btn.favourite"
      },
      pageNext: ".pagination .active + li a"
    },
    {
      name: JABLE,
      domainReg: /^https?:\/\/.*(jable\.tv).*$/,
      itemSelectorObj: {
        [GRID]: "div[id^=list_videos_] div.row>div",
        [VIDEO]: ".video-info .my-3 button"
      }
    }
  ];
  const DEV = false;
  var is_array = Array.isArray;
  var index_of = Array.prototype.indexOf;
  var includes = Array.prototype.includes;
  var array_from = Array.from;
  var define_property = Object.defineProperty;
  var get_descriptor = Object.getOwnPropertyDescriptor;
  var get_descriptors = Object.getOwnPropertyDescriptors;
  var object_prototype = Object.prototype;
  var array_prototype = Array.prototype;
  var get_prototype_of = Object.getPrototypeOf;
  var is_extensible = Object.isExtensible;
  const noop = () => {
  };
  function run(fn) {
    return fn();
  }
  function run_all(arr) {
    for (var i2 = 0; i2 < arr.length; i2++) {
      arr[i2]();
    }
  }
  function deferred() {
    var resolve;
    var reject;
    var promise = new Promise((res, rej) => {
      resolve = res;
      reject = rej;
    });
    return { promise, resolve, reject };
  }
  const DERIVED = 1 << 1;
  const EFFECT = 1 << 2;
  const RENDER_EFFECT = 1 << 3;
  const MANAGED_EFFECT = 1 << 24;
  const BLOCK_EFFECT = 1 << 4;
  const BRANCH_EFFECT = 1 << 5;
  const ROOT_EFFECT = 1 << 6;
  const BOUNDARY_EFFECT = 1 << 7;
  const CONNECTED = 1 << 9;
  const CLEAN = 1 << 10;
  const DIRTY = 1 << 11;
  const MAYBE_DIRTY = 1 << 12;
  const INERT = 1 << 13;
  const DESTROYED = 1 << 14;
  const REACTION_RAN = 1 << 15;
  const EFFECT_TRANSPARENT = 1 << 16;
  const EAGER_EFFECT = 1 << 17;
  const HEAD_EFFECT = 1 << 18;
  const EFFECT_PRESERVED = 1 << 19;
  const USER_EFFECT = 1 << 20;
  const EFFECT_OFFSCREEN = 1 << 25;
  const WAS_MARKED = 1 << 16;
  const REACTION_IS_UPDATING = 1 << 21;
  const ASYNC = 1 << 22;
  const ERROR_VALUE = 1 << 23;
  const STATE_SYMBOL = Symbol("$state");
  const LEGACY_PROPS = Symbol("legacy props");
  const LOADING_ATTR_SYMBOL = Symbol("");
  const STALE_REACTION = new class StaleReactionError extends Error {
    constructor() {
      super(...arguments);
      __publicField(this, "name", "StaleReactionError");
      __publicField(this, "message", "The reaction that called `getAbortSignal()` was re-run or destroyed");
    }
  }();
  function lifecycle_outside_component(name) {
    {
      throw new Error(`https://svelte.dev/e/lifecycle_outside_component`);
    }
  }
  function async_derived_orphan() {
    {
      throw new Error(`https://svelte.dev/e/async_derived_orphan`);
    }
  }
  function each_key_duplicate(a2, b2, value) {
    {
      throw new Error(`https://svelte.dev/e/each_key_duplicate`);
    }
  }
  function effect_in_teardown(rune) {
    {
      throw new Error(`https://svelte.dev/e/effect_in_teardown`);
    }
  }
  function effect_in_unowned_derived() {
    {
      throw new Error(`https://svelte.dev/e/effect_in_unowned_derived`);
    }
  }
  function effect_orphan(rune) {
    {
      throw new Error(`https://svelte.dev/e/effect_orphan`);
    }
  }
  function effect_update_depth_exceeded() {
    {
      throw new Error(`https://svelte.dev/e/effect_update_depth_exceeded`);
    }
  }
  function props_invalid_value(key) {
    {
      throw new Error(`https://svelte.dev/e/props_invalid_value`);
    }
  }
  function state_descriptors_fixed() {
    {
      throw new Error(`https://svelte.dev/e/state_descriptors_fixed`);
    }
  }
  function state_prototype_fixed() {
    {
      throw new Error(`https://svelte.dev/e/state_prototype_fixed`);
    }
  }
  function state_unsafe_mutation() {
    {
      throw new Error(`https://svelte.dev/e/state_unsafe_mutation`);
    }
  }
  function svelte_boundary_reset_onerror() {
    {
      throw new Error(`https://svelte.dev/e/svelte_boundary_reset_onerror`);
    }
  }
  const EACH_ITEM_REACTIVE = 1;
  const EACH_INDEX_REACTIVE = 1 << 1;
  const EACH_IS_CONTROLLED = 1 << 2;
  const EACH_IS_ANIMATED = 1 << 3;
  const EACH_ITEM_IMMUTABLE = 1 << 4;
  const PROPS_IS_IMMUTABLE = 1;
  const PROPS_IS_RUNES = 1 << 1;
  const PROPS_IS_UPDATED = 1 << 2;
  const PROPS_IS_BINDABLE = 1 << 3;
  const PROPS_IS_LAZY_INITIAL = 1 << 4;
  const TEMPLATE_FRAGMENT = 1;
  const TEMPLATE_USE_IMPORT_NODE = 1 << 1;
  const UNINITIALIZED = Symbol();
  const NAMESPACE_HTML = "http://www.w3.org/1999/xhtml";
  function svelte_boundary_reset_noop() {
    {
      console.warn(`https://svelte.dev/e/svelte_boundary_reset_noop`);
    }
  }
  function equals(value) {
    return value === this.v;
  }
  function safe_not_equal(a2, b2) {
    return a2 != a2 ? b2 == b2 : a2 !== b2 || a2 !== null && typeof a2 === "object" || typeof a2 === "function";
  }
  function safe_equals(value) {
    return !safe_not_equal(value, this.v);
  }
  let legacy_mode_flag = false;
  let tracing_mode_flag = false;
  function enable_legacy_mode_flag() {
    legacy_mode_flag = true;
  }
  let component_context = null;
  function set_component_context(context) {
    component_context = context;
  }
  function push(props, runes = false, fn) {
    component_context = {
      p: component_context,
      i: false,
      c: null,
      e: null,
      s: props,
      x: null,
      l: legacy_mode_flag && !runes ? { s: null, u: null, $: [] } : null
    };
  }
  function pop(component) {
    var context = (
      /** @type {ComponentContext} */
      component_context
    );
    var effects = context.e;
    if (effects !== null) {
      context.e = null;
      for (var fn of effects) {
        create_user_effect(fn);
      }
    }
    if (component !== void 0) {
      context.x = component;
    }
    context.i = true;
    component_context = context.p;
    return component ?? /** @type {T} */
    {};
  }
  function is_runes() {
    return !legacy_mode_flag || component_context !== null && component_context.l === null;
  }
  let micro_tasks = [];
  function run_micro_tasks() {
    var tasks = micro_tasks;
    micro_tasks = [];
    run_all(tasks);
  }
  function queue_micro_task(fn) {
    if (micro_tasks.length === 0 && !is_flushing_sync) {
      var tasks = micro_tasks;
      queueMicrotask(() => {
        if (tasks === micro_tasks) run_micro_tasks();
      });
    }
    micro_tasks.push(fn);
  }
  function flush_tasks() {
    while (micro_tasks.length > 0) {
      run_micro_tasks();
    }
  }
  function handle_error(error) {
    var effect2 = active_effect;
    if (effect2 === null) {
      active_reaction.f |= ERROR_VALUE;
      return error;
    }
    if ((effect2.f & REACTION_RAN) === 0 && (effect2.f & EFFECT) === 0) {
      throw error;
    }
    invoke_error_boundary(error, effect2);
  }
  function invoke_error_boundary(error, effect2) {
    while (effect2 !== null) {
      if ((effect2.f & BOUNDARY_EFFECT) !== 0) {
        if ((effect2.f & REACTION_RAN) === 0) {
          throw error;
        }
        try {
          effect2.b.error(error);
          return;
        } catch (e2) {
          error = e2;
        }
      }
      effect2 = effect2.parent;
    }
    throw error;
  }
  const STATUS_MASK = -7169;
  function set_signal_status(signal, status) {
    signal.f = signal.f & STATUS_MASK | status;
  }
  function update_derived_status(derived2) {
    if ((derived2.f & CONNECTED) !== 0 || derived2.deps === null) {
      set_signal_status(derived2, CLEAN);
    } else {
      set_signal_status(derived2, MAYBE_DIRTY);
    }
  }
  function clear_marked(deps) {
    if (deps === null) return;
    for (const dep of deps) {
      if ((dep.f & DERIVED) === 0 || (dep.f & WAS_MARKED) === 0) {
        continue;
      }
      dep.f ^= WAS_MARKED;
      clear_marked(
        /** @type {Derived} */
        dep.deps
      );
    }
  }
  function defer_effect(effect2, dirty_effects, maybe_dirty_effects) {
    if ((effect2.f & DIRTY) !== 0) {
      dirty_effects.add(effect2);
    } else if ((effect2.f & MAYBE_DIRTY) !== 0) {
      maybe_dirty_effects.add(effect2);
    }
    clear_marked(effect2.deps);
    set_signal_status(effect2, CLEAN);
  }
  const batches = /* @__PURE__ */ new Set();
  let current_batch = null;
  let previous_batch = null;
  let batch_values = null;
  let queued_root_effects = [];
  let last_scheduled_effect = null;
  let is_flushing = false;
  let is_flushing_sync = false;
  const _Batch = class _Batch {
    constructor() {
      __privateAdd(this, _Batch_instances);
      __publicField(this, "committed", false);
      /**
       * The current values of any sources that are updated in this batch
       * They keys of this map are identical to `this.#previous`
       * @type {Map<Source, any>}
       */
      __publicField(this, "current", /* @__PURE__ */ new Map());
      /**
       * The values of any sources that are updated in this batch _before_ those updates took place.
       * They keys of this map are identical to `this.#current`
       * @type {Map<Source, any>}
       */
      __publicField(this, "previous", /* @__PURE__ */ new Map());
      /**
       * When the batch is committed (and the DOM is updated), we need to remove old branches
       * and append new ones by calling the functions added inside (if/each/key/etc) blocks
       * @type {Set<() => void>}
       */
      __privateAdd(this, _commit_callbacks, /* @__PURE__ */ new Set());
      /**
       * If a fork is discarded, we need to destroy any effects that are no longer needed
       * @type {Set<(batch: Batch) => void>}
       */
      __privateAdd(this, _discard_callbacks, /* @__PURE__ */ new Set());
      /**
       * The number of async effects that are currently in flight
       */
      __privateAdd(this, _pending, 0);
      /**
       * The number of async effects that are currently in flight, _not_ inside a pending boundary
       */
      __privateAdd(this, _blocking_pending, 0);
      /**
       * A deferred that resolves when the batch is committed, used with `settled()`
       * TODO replace with Promise.withResolvers once supported widely enough
       * @type {{ promise: Promise<void>, resolve: (value?: any) => void, reject: (reason: unknown) => void } | null}
       */
      __privateAdd(this, _deferred, null);
      /**
       * Deferred effects (which run after async work has completed) that are DIRTY
       * @type {Set<Effect>}
       */
      __privateAdd(this, _dirty_effects, /* @__PURE__ */ new Set());
      /**
       * Deferred effects that are MAYBE_DIRTY
       * @type {Set<Effect>}
       */
      __privateAdd(this, _maybe_dirty_effects, /* @__PURE__ */ new Set());
      /**
       * A map of branches that still exist, but will be destroyed when this batch
       * is committed — we skip over these during `process`.
       * The value contains child effects that were dirty/maybe_dirty before being reset,
       * so they can be rescheduled if the branch survives.
       * @type {Map<Effect, { d: Effect[], m: Effect[] }>}
       */
      __privateAdd(this, _skipped_branches, /* @__PURE__ */ new Map());
      __publicField(this, "is_fork", false);
      __privateAdd(this, _decrement_queued, false);
    }
    /**
     * Add an effect to the #skipped_branches map and reset its children
     * @param {Effect} effect
     */
    skip_effect(effect2) {
      if (!__privateGet(this, _skipped_branches).has(effect2)) {
        __privateGet(this, _skipped_branches).set(effect2, { d: [], m: [] });
      }
    }
    /**
     * Remove an effect from the #skipped_branches map and reschedule
     * any tracked dirty/maybe_dirty child effects
     * @param {Effect} effect
     */
    unskip_effect(effect2) {
      var tracked = __privateGet(this, _skipped_branches).get(effect2);
      if (tracked) {
        __privateGet(this, _skipped_branches).delete(effect2);
        for (var e2 of tracked.d) {
          set_signal_status(e2, DIRTY);
          schedule_effect(e2);
        }
        for (e2 of tracked.m) {
          set_signal_status(e2, MAYBE_DIRTY);
          schedule_effect(e2);
        }
      }
    }
    /**
     *
     * @param {Effect[]} root_effects
     */
    process(root_effects) {
      var _a2;
      queued_root_effects = [];
      this.apply();
      var effects = [];
      var render_effects = [];
      for (const root2 of root_effects) {
        __privateMethod(this, _Batch_instances, traverse_effect_tree_fn).call(this, root2, effects, render_effects);
      }
      if (__privateMethod(this, _Batch_instances, is_deferred_fn).call(this)) {
        __privateMethod(this, _Batch_instances, defer_effects_fn).call(this, render_effects);
        __privateMethod(this, _Batch_instances, defer_effects_fn).call(this, effects);
        for (const [e2, t2] of __privateGet(this, _skipped_branches)) {
          reset_branch(e2, t2);
        }
      } else {
        for (const fn of __privateGet(this, _commit_callbacks)) fn();
        __privateGet(this, _commit_callbacks).clear();
        if (__privateGet(this, _pending) === 0) {
          __privateMethod(this, _Batch_instances, commit_fn).call(this);
        }
        previous_batch = this;
        current_batch = null;
        flush_queued_effects(render_effects);
        flush_queued_effects(effects);
        previous_batch = null;
        (_a2 = __privateGet(this, _deferred)) == null ? void 0 : _a2.resolve();
      }
      batch_values = null;
    }
    /**
     * Associate a change to a given source with the current
     * batch, noting its previous and current values
     * @param {Source} source
     * @param {any} value
     */
    capture(source2, value) {
      if (value !== UNINITIALIZED && !this.previous.has(source2)) {
        this.previous.set(source2, value);
      }
      if ((source2.f & ERROR_VALUE) === 0) {
        this.current.set(source2, source2.v);
        batch_values == null ? void 0 : batch_values.set(source2, source2.v);
      }
    }
    activate() {
      current_batch = this;
      this.apply();
    }
    deactivate() {
      if (current_batch !== this) return;
      current_batch = null;
      batch_values = null;
    }
    flush() {
      this.activate();
      if (queued_root_effects.length > 0) {
        flush_effects();
        if (current_batch !== null && current_batch !== this) {
          return;
        }
      } else if (__privateGet(this, _pending) === 0) {
        this.process([]);
      }
      this.deactivate();
    }
    discard() {
      for (const fn of __privateGet(this, _discard_callbacks)) fn(this);
      __privateGet(this, _discard_callbacks).clear();
    }
    /**
     *
     * @param {boolean} blocking
     */
    increment(blocking) {
      __privateSet(this, _pending, __privateGet(this, _pending) + 1);
      if (blocking) __privateSet(this, _blocking_pending, __privateGet(this, _blocking_pending) + 1);
    }
    /**
     *
     * @param {boolean} blocking
     */
    decrement(blocking) {
      __privateSet(this, _pending, __privateGet(this, _pending) - 1);
      if (blocking) __privateSet(this, _blocking_pending, __privateGet(this, _blocking_pending) - 1);
      if (__privateGet(this, _decrement_queued)) return;
      __privateSet(this, _decrement_queued, true);
      queue_micro_task(() => {
        __privateSet(this, _decrement_queued, false);
        if (!__privateMethod(this, _Batch_instances, is_deferred_fn).call(this)) {
          this.revive();
        } else if (queued_root_effects.length > 0) {
          this.flush();
        }
      });
    }
    revive() {
      for (const e2 of __privateGet(this, _dirty_effects)) {
        __privateGet(this, _maybe_dirty_effects).delete(e2);
        set_signal_status(e2, DIRTY);
        schedule_effect(e2);
      }
      for (const e2 of __privateGet(this, _maybe_dirty_effects)) {
        set_signal_status(e2, MAYBE_DIRTY);
        schedule_effect(e2);
      }
      this.flush();
    }
    /** @param {() => void} fn */
    oncommit(fn) {
      __privateGet(this, _commit_callbacks).add(fn);
    }
    /** @param {(batch: Batch) => void} fn */
    ondiscard(fn) {
      __privateGet(this, _discard_callbacks).add(fn);
    }
    settled() {
      return (__privateGet(this, _deferred) ?? __privateSet(this, _deferred, deferred())).promise;
    }
    static ensure() {
      if (current_batch === null) {
        const batch = current_batch = new _Batch();
        batches.add(current_batch);
        if (!is_flushing_sync) {
          queue_micro_task(() => {
            if (current_batch !== batch) {
              return;
            }
            batch.flush();
          });
        }
      }
      return current_batch;
    }
    apply() {
      return;
    }
  };
  _commit_callbacks = new WeakMap();
  _discard_callbacks = new WeakMap();
  _pending = new WeakMap();
  _blocking_pending = new WeakMap();
  _deferred = new WeakMap();
  _dirty_effects = new WeakMap();
  _maybe_dirty_effects = new WeakMap();
  _skipped_branches = new WeakMap();
  _decrement_queued = new WeakMap();
  _Batch_instances = new WeakSet();
  is_deferred_fn = function() {
    return this.is_fork || __privateGet(this, _blocking_pending) > 0;
  };
  /**
   * Traverse the effect tree, executing effects or stashing
   * them for later execution as appropriate
   * @param {Effect} root
   * @param {Effect[]} effects
   * @param {Effect[]} render_effects
   */
  traverse_effect_tree_fn = function(root2, effects, render_effects) {
    root2.f ^= CLEAN;
    var effect2 = root2.first;
    while (effect2 !== null) {
      var flags2 = effect2.f;
      var is_branch = (flags2 & (BRANCH_EFFECT | ROOT_EFFECT)) !== 0;
      var is_skippable_branch = is_branch && (flags2 & CLEAN) !== 0;
      var skip = is_skippable_branch || (flags2 & INERT) !== 0 || __privateGet(this, _skipped_branches).has(effect2);
      if (!skip && effect2.fn !== null) {
        if (is_branch) {
          effect2.f ^= CLEAN;
        } else if ((flags2 & EFFECT) !== 0) {
          effects.push(effect2);
        } else if (is_dirty(effect2)) {
          if ((flags2 & BLOCK_EFFECT) !== 0) __privateGet(this, _maybe_dirty_effects).add(effect2);
          update_effect(effect2);
        }
        var child2 = effect2.first;
        if (child2 !== null) {
          effect2 = child2;
          continue;
        }
      }
      while (effect2 !== null) {
        var next = effect2.next;
        if (next !== null) {
          effect2 = next;
          break;
        }
        effect2 = effect2.parent;
      }
    }
  };
  /**
   * @param {Effect[]} effects
   */
  defer_effects_fn = function(effects) {
    for (var i2 = 0; i2 < effects.length; i2 += 1) {
      defer_effect(effects[i2], __privateGet(this, _dirty_effects), __privateGet(this, _maybe_dirty_effects));
    }
  };
  commit_fn = function() {
    var _a2;
    if (batches.size > 1) {
      this.previous.clear();
      var previous_batch_values = batch_values;
      var is_earlier = true;
      for (const batch of batches) {
        if (batch === this) {
          is_earlier = false;
          continue;
        }
        const sources = [];
        for (const [source2, value] of this.current) {
          if (batch.current.has(source2)) {
            if (is_earlier && value !== batch.current.get(source2)) {
              batch.current.set(source2, value);
            } else {
              continue;
            }
          }
          sources.push(source2);
        }
        if (sources.length === 0) {
          continue;
        }
        const others = [...batch.current.keys()].filter((s2) => !this.current.has(s2));
        if (others.length > 0) {
          var prev_queued_root_effects = queued_root_effects;
          queued_root_effects = [];
          const marked = /* @__PURE__ */ new Set();
          const checked = /* @__PURE__ */ new Map();
          for (const source2 of sources) {
            mark_effects(source2, others, marked, checked);
          }
          if (queued_root_effects.length > 0) {
            current_batch = batch;
            batch.apply();
            for (const root2 of queued_root_effects) {
              __privateMethod(_a2 = batch, _Batch_instances, traverse_effect_tree_fn).call(_a2, root2, [], []);
            }
            batch.deactivate();
          }
          queued_root_effects = prev_queued_root_effects;
        }
      }
      current_batch = null;
      batch_values = previous_batch_values;
    }
    this.committed = true;
    batches.delete(this);
  };
  let Batch = _Batch;
  function flushSync(fn) {
    var was_flushing_sync = is_flushing_sync;
    is_flushing_sync = true;
    try {
      var result;
      if (fn) ;
      while (true) {
        flush_tasks();
        if (queued_root_effects.length === 0) {
          current_batch == null ? void 0 : current_batch.flush();
          if (queued_root_effects.length === 0) {
            last_scheduled_effect = null;
            return (
              /** @type {T} */
              result
            );
          }
        }
        flush_effects();
      }
    } finally {
      is_flushing_sync = was_flushing_sync;
    }
  }
  function flush_effects() {
    is_flushing = true;
    try {
      var flush_count = 0;
      while (queued_root_effects.length > 0) {
        var batch = Batch.ensure();
        if (flush_count++ > 1e3) {
          var updates, entry;
          if (DEV) ;
          infinite_loop_guard();
        }
        batch.process(queued_root_effects);
        old_values.clear();
        if (DEV) ;
      }
    } finally {
      queued_root_effects = [];
      is_flushing = false;
      last_scheduled_effect = null;
    }
  }
  function infinite_loop_guard() {
    try {
      effect_update_depth_exceeded();
    } catch (error) {
      invoke_error_boundary(error, last_scheduled_effect);
    }
  }
  let eager_block_effects = null;
  function flush_queued_effects(effects) {
    var length = effects.length;
    if (length === 0) return;
    var i2 = 0;
    while (i2 < length) {
      var effect2 = effects[i2++];
      if ((effect2.f & (DESTROYED | INERT)) === 0 && is_dirty(effect2)) {
        eager_block_effects = /* @__PURE__ */ new Set();
        update_effect(effect2);
        if (effect2.deps === null && effect2.first === null && effect2.nodes === null && effect2.teardown === null && effect2.ac === null) {
          unlink_effect(effect2);
        }
        if ((eager_block_effects == null ? void 0 : eager_block_effects.size) > 0) {
          old_values.clear();
          for (const e2 of eager_block_effects) {
            if ((e2.f & (DESTROYED | INERT)) !== 0) continue;
            const ordered_effects = [e2];
            let ancestor = e2.parent;
            while (ancestor !== null) {
              if (eager_block_effects.has(ancestor)) {
                eager_block_effects.delete(ancestor);
                ordered_effects.push(ancestor);
              }
              ancestor = ancestor.parent;
            }
            for (let j2 = ordered_effects.length - 1; j2 >= 0; j2--) {
              const e3 = ordered_effects[j2];
              if ((e3.f & (DESTROYED | INERT)) !== 0) continue;
              update_effect(e3);
            }
          }
          eager_block_effects.clear();
        }
      }
    }
    eager_block_effects = null;
  }
  function mark_effects(value, sources, marked, checked) {
    if (marked.has(value)) return;
    marked.add(value);
    if (value.reactions !== null) {
      for (const reaction of value.reactions) {
        const flags2 = reaction.f;
        if ((flags2 & DERIVED) !== 0) {
          mark_effects(
            /** @type {Derived} */
            reaction,
            sources,
            marked,
            checked
          );
        } else if ((flags2 & (ASYNC | BLOCK_EFFECT)) !== 0 && (flags2 & DIRTY) === 0 && depends_on(reaction, sources, checked)) {
          set_signal_status(reaction, DIRTY);
          schedule_effect(
            /** @type {Effect} */
            reaction
          );
        }
      }
    }
  }
  function depends_on(reaction, sources, checked) {
    const depends = checked.get(reaction);
    if (depends !== void 0) return depends;
    if (reaction.deps !== null) {
      for (const dep of reaction.deps) {
        if (includes.call(sources, dep)) {
          return true;
        }
        if ((dep.f & DERIVED) !== 0 && depends_on(
          /** @type {Derived} */
          dep,
          sources,
          checked
        )) {
          checked.set(
            /** @type {Derived} */
            dep,
            true
          );
          return true;
        }
      }
    }
    checked.set(reaction, false);
    return false;
  }
  function schedule_effect(signal) {
    var effect2 = last_scheduled_effect = signal;
    var boundary2 = effect2.b;
    if ((boundary2 == null ? void 0 : boundary2.is_pending) && (signal.f & (EFFECT | RENDER_EFFECT | MANAGED_EFFECT)) !== 0 && (signal.f & REACTION_RAN) === 0) {
      boundary2.defer_effect(signal);
      return;
    }
    while (effect2.parent !== null) {
      effect2 = effect2.parent;
      var flags2 = effect2.f;
      if (is_flushing && effect2 === active_effect && (flags2 & BLOCK_EFFECT) !== 0 && (flags2 & HEAD_EFFECT) === 0 && (flags2 & REACTION_RAN) !== 0) {
        return;
      }
      if ((flags2 & (ROOT_EFFECT | BRANCH_EFFECT)) !== 0) {
        if ((flags2 & CLEAN) === 0) {
          return;
        }
        effect2.f ^= CLEAN;
      }
    }
    queued_root_effects.push(effect2);
  }
  function reset_branch(effect2, tracked) {
    if ((effect2.f & BRANCH_EFFECT) !== 0 && (effect2.f & CLEAN) !== 0) {
      return;
    }
    if ((effect2.f & DIRTY) !== 0) {
      tracked.d.push(effect2);
    } else if ((effect2.f & MAYBE_DIRTY) !== 0) {
      tracked.m.push(effect2);
    }
    set_signal_status(effect2, CLEAN);
    var e2 = effect2.first;
    while (e2 !== null) {
      reset_branch(e2, tracked);
      e2 = e2.next;
    }
  }
  function createSubscriber(start) {
    let subscribers = 0;
    let version = source(0);
    let stop;
    return () => {
      if (effect_tracking()) {
        get(version);
        render_effect(() => {
          if (subscribers === 0) {
            stop = untrack(() => start(() => increment(version)));
          }
          subscribers += 1;
          return () => {
            queue_micro_task(() => {
              subscribers -= 1;
              if (subscribers === 0) {
                stop == null ? void 0 : stop();
                stop = void 0;
                increment(version);
              }
            });
          };
        });
      }
    };
  }
  var flags = EFFECT_TRANSPARENT | EFFECT_PRESERVED;
  function boundary(node, props, children) {
    new Boundary(node, props, children);
  }
  class Boundary {
    /**
     * @param {TemplateNode} node
     * @param {BoundaryProps} props
     * @param {((anchor: Node) => void)} children
     */
    constructor(node, props, children) {
      __privateAdd(this, _Boundary_instances);
      /** @type {Boundary | null} */
      __publicField(this, "parent");
      __publicField(this, "is_pending", false);
      /** @type {TemplateNode} */
      __privateAdd(this, _anchor);
      /** @type {TemplateNode | null} */
      __privateAdd(this, _hydrate_open, null);
      /** @type {BoundaryProps} */
      __privateAdd(this, _props);
      /** @type {((anchor: Node) => void)} */
      __privateAdd(this, _children);
      /** @type {Effect} */
      __privateAdd(this, _effect);
      /** @type {Effect | null} */
      __privateAdd(this, _main_effect, null);
      /** @type {Effect | null} */
      __privateAdd(this, _pending_effect, null);
      /** @type {Effect | null} */
      __privateAdd(this, _failed_effect, null);
      /** @type {DocumentFragment | null} */
      __privateAdd(this, _offscreen_fragment, null);
      __privateAdd(this, _local_pending_count, 0);
      __privateAdd(this, _pending_count, 0);
      __privateAdd(this, _pending_count_update_queued, false);
      /** @type {Set<Effect>} */
      __privateAdd(this, _dirty_effects2, /* @__PURE__ */ new Set());
      /** @type {Set<Effect>} */
      __privateAdd(this, _maybe_dirty_effects2, /* @__PURE__ */ new Set());
      /**
       * A source containing the number of pending async deriveds/expressions.
       * Only created if `$effect.pending()` is used inside the boundary,
       * otherwise updating the source results in needless `Batch.ensure()`
       * calls followed by no-op flushes
       * @type {Source<number> | null}
       */
      __privateAdd(this, _effect_pending, null);
      __privateAdd(this, _effect_pending_subscriber, createSubscriber(() => {
        __privateSet(this, _effect_pending, source(__privateGet(this, _local_pending_count)));
        return () => {
          __privateSet(this, _effect_pending, null);
        };
      }));
      __privateSet(this, _anchor, node);
      __privateSet(this, _props, props);
      __privateSet(this, _children, (anchor) => {
        var effect2 = (
          /** @type {Effect} */
          active_effect
        );
        effect2.b = this;
        effect2.f |= BOUNDARY_EFFECT;
        children(anchor);
      });
      this.parent = /** @type {Effect} */
      active_effect.b;
      __privateSet(this, _effect, block(() => {
        {
          __privateMethod(this, _Boundary_instances, render_fn).call(this);
        }
      }, flags));
    }
    /**
     * Defer an effect inside a pending boundary until the boundary resolves
     * @param {Effect} effect
     */
    defer_effect(effect2) {
      defer_effect(effect2, __privateGet(this, _dirty_effects2), __privateGet(this, _maybe_dirty_effects2));
    }
    /**
     * Returns `false` if the effect exists inside a boundary whose pending snippet is shown
     * @returns {boolean}
     */
    is_rendered() {
      return !this.is_pending && (!this.parent || this.parent.is_rendered());
    }
    has_pending_snippet() {
      return !!__privateGet(this, _props).pending;
    }
    /**
     * Update the source that powers `$effect.pending()` inside this boundary,
     * and controls when the current `pending` snippet (if any) is removed.
     * Do not call from inside the class
     * @param {1 | -1} d
     */
    update_pending_count(d2) {
      __privateMethod(this, _Boundary_instances, update_pending_count_fn).call(this, d2);
      __privateSet(this, _local_pending_count, __privateGet(this, _local_pending_count) + d2);
      if (!__privateGet(this, _effect_pending) || __privateGet(this, _pending_count_update_queued)) return;
      __privateSet(this, _pending_count_update_queued, true);
      queue_micro_task(() => {
        __privateSet(this, _pending_count_update_queued, false);
        if (__privateGet(this, _effect_pending)) {
          internal_set(__privateGet(this, _effect_pending), __privateGet(this, _local_pending_count));
        }
      });
    }
    get_effect_pending() {
      __privateGet(this, _effect_pending_subscriber).call(this);
      return get(
        /** @type {Source<number>} */
        __privateGet(this, _effect_pending)
      );
    }
    /** @param {unknown} error */
    error(error) {
      var onerror = __privateGet(this, _props).onerror;
      let failed = __privateGet(this, _props).failed;
      if (!onerror && !failed) {
        throw error;
      }
      if (__privateGet(this, _main_effect)) {
        destroy_effect(__privateGet(this, _main_effect));
        __privateSet(this, _main_effect, null);
      }
      if (__privateGet(this, _pending_effect)) {
        destroy_effect(__privateGet(this, _pending_effect));
        __privateSet(this, _pending_effect, null);
      }
      if (__privateGet(this, _failed_effect)) {
        destroy_effect(__privateGet(this, _failed_effect));
        __privateSet(this, _failed_effect, null);
      }
      var did_reset = false;
      var calling_on_error = false;
      const reset = () => {
        if (did_reset) {
          svelte_boundary_reset_noop();
          return;
        }
        did_reset = true;
        if (calling_on_error) {
          svelte_boundary_reset_onerror();
        }
        if (__privateGet(this, _failed_effect) !== null) {
          pause_effect(__privateGet(this, _failed_effect), () => {
            __privateSet(this, _failed_effect, null);
          });
        }
        __privateMethod(this, _Boundary_instances, run_fn).call(this, () => {
          Batch.ensure();
          __privateMethod(this, _Boundary_instances, render_fn).call(this);
        });
      };
      queue_micro_task(() => {
        try {
          calling_on_error = true;
          onerror == null ? void 0 : onerror(error, reset);
          calling_on_error = false;
        } catch (error2) {
          invoke_error_boundary(error2, __privateGet(this, _effect) && __privateGet(this, _effect).parent);
        }
        if (failed) {
          __privateSet(this, _failed_effect, __privateMethod(this, _Boundary_instances, run_fn).call(this, () => {
            Batch.ensure();
            try {
              return branch(() => {
                var effect2 = (
                  /** @type {Effect} */
                  active_effect
                );
                effect2.b = this;
                effect2.f |= BOUNDARY_EFFECT;
                failed(
                  __privateGet(this, _anchor),
                  () => error,
                  () => reset
                );
              });
            } catch (error2) {
              invoke_error_boundary(
                error2,
                /** @type {Effect} */
                __privateGet(this, _effect).parent
              );
              return null;
            }
          }));
        }
      });
    }
  }
  _anchor = new WeakMap();
  _hydrate_open = new WeakMap();
  _props = new WeakMap();
  _children = new WeakMap();
  _effect = new WeakMap();
  _main_effect = new WeakMap();
  _pending_effect = new WeakMap();
  _failed_effect = new WeakMap();
  _offscreen_fragment = new WeakMap();
  _local_pending_count = new WeakMap();
  _pending_count = new WeakMap();
  _pending_count_update_queued = new WeakMap();
  _dirty_effects2 = new WeakMap();
  _maybe_dirty_effects2 = new WeakMap();
  _effect_pending = new WeakMap();
  _effect_pending_subscriber = new WeakMap();
  _Boundary_instances = new WeakSet();
  render_fn = function() {
    try {
      this.is_pending = this.has_pending_snippet();
      __privateSet(this, _pending_count, 0);
      __privateSet(this, _local_pending_count, 0);
      __privateSet(this, _main_effect, branch(() => {
        __privateGet(this, _children).call(this, __privateGet(this, _anchor));
      }));
      if (__privateGet(this, _pending_count) > 0) {
        var fragment = __privateSet(this, _offscreen_fragment, document.createDocumentFragment());
        move_effect(__privateGet(this, _main_effect), fragment);
        const pending2 = (
          /** @type {(anchor: Node) => void} */
          __privateGet(this, _props).pending
        );
        __privateSet(this, _pending_effect, branch(() => pending2(__privateGet(this, _anchor))));
      } else {
        __privateMethod(this, _Boundary_instances, resolve_fn).call(this);
      }
    } catch (error) {
      this.error(error);
    }
  };
  resolve_fn = function() {
    this.is_pending = false;
    for (const e2 of __privateGet(this, _dirty_effects2)) {
      set_signal_status(e2, DIRTY);
      schedule_effect(e2);
    }
    for (const e2 of __privateGet(this, _maybe_dirty_effects2)) {
      set_signal_status(e2, MAYBE_DIRTY);
      schedule_effect(e2);
    }
    __privateGet(this, _dirty_effects2).clear();
    __privateGet(this, _maybe_dirty_effects2).clear();
  };
  /**
   * @template T
   * @param {() => T} fn
   */
  run_fn = function(fn) {
    var previous_effect = active_effect;
    var previous_reaction = active_reaction;
    var previous_ctx = component_context;
    set_active_effect(__privateGet(this, _effect));
    set_active_reaction(__privateGet(this, _effect));
    set_component_context(__privateGet(this, _effect).ctx);
    try {
      return fn();
    } catch (e2) {
      handle_error(e2);
      return null;
    } finally {
      set_active_effect(previous_effect);
      set_active_reaction(previous_reaction);
      set_component_context(previous_ctx);
    }
  };
  /**
   * Updates the pending count associated with the currently visible pending snippet,
   * if any, such that we can replace the snippet with content once work is done
   * @param {1 | -1} d
   */
  update_pending_count_fn = function(d2) {
    var _a2;
    if (!this.has_pending_snippet()) {
      if (this.parent) {
        __privateMethod(_a2 = this.parent, _Boundary_instances, update_pending_count_fn).call(_a2, d2);
      }
      return;
    }
    __privateSet(this, _pending_count, __privateGet(this, _pending_count) + d2);
    if (__privateGet(this, _pending_count) === 0) {
      __privateMethod(this, _Boundary_instances, resolve_fn).call(this);
      if (__privateGet(this, _pending_effect)) {
        pause_effect(__privateGet(this, _pending_effect), () => {
          __privateSet(this, _pending_effect, null);
        });
      }
      if (__privateGet(this, _offscreen_fragment)) {
        __privateGet(this, _anchor).before(__privateGet(this, _offscreen_fragment));
        __privateSet(this, _offscreen_fragment, null);
      }
    }
  };
  function flatten(blockers, sync, async, fn) {
    const d2 = is_runes() ? derived : derived_safe_equal;
    var pending2 = blockers.filter((b2) => !b2.settled);
    if (async.length === 0 && pending2.length === 0) {
      fn(sync.map(d2));
      return;
    }
    var batch = current_batch;
    var parent = (
      /** @type {Effect} */
      active_effect
    );
    var restore = capture();
    var blocker_promise = pending2.length === 1 ? pending2[0].promise : pending2.length > 1 ? Promise.all(pending2.map((b2) => b2.promise)) : null;
    function finish(values) {
      restore();
      try {
        fn(values);
      } catch (error) {
        if ((parent.f & DESTROYED) === 0) {
          invoke_error_boundary(error, parent);
        }
      }
      batch == null ? void 0 : batch.deactivate();
      unset_context();
    }
    if (async.length === 0) {
      blocker_promise.then(() => finish(sync.map(d2)));
      return;
    }
    function run2() {
      restore();
      Promise.all(async.map((expression) => /* @__PURE__ */ async_derived(expression))).then((result) => finish([...sync.map(d2), ...result])).catch((error) => invoke_error_boundary(error, parent));
    }
    if (blocker_promise) {
      blocker_promise.then(run2);
    } else {
      run2();
    }
  }
  function capture() {
    var previous_effect = active_effect;
    var previous_reaction = active_reaction;
    var previous_component_context = component_context;
    var previous_batch2 = current_batch;
    return function restore(activate_batch = true) {
      set_active_effect(previous_effect);
      set_active_reaction(previous_reaction);
      set_component_context(previous_component_context);
      if (activate_batch) previous_batch2 == null ? void 0 : previous_batch2.activate();
    };
  }
  function unset_context() {
    set_active_effect(null);
    set_active_reaction(null);
    set_component_context(null);
  }
  function increment_pending() {
    var boundary2 = (
      /** @type {Boundary} */
      /** @type {Effect} */
      active_effect.b
    );
    var batch = (
      /** @type {Batch} */
      current_batch
    );
    var blocking = boundary2.is_rendered();
    boundary2.update_pending_count(1);
    batch.increment(blocking);
    return () => {
      boundary2.update_pending_count(-1);
      batch.decrement(blocking);
    };
  }
  // @__NO_SIDE_EFFECTS__
  function derived(fn) {
    var flags2 = DERIVED | DIRTY;
    var parent_derived = active_reaction !== null && (active_reaction.f & DERIVED) !== 0 ? (
      /** @type {Derived} */
      active_reaction
    ) : null;
    if (active_effect !== null) {
      active_effect.f |= EFFECT_PRESERVED;
    }
    const signal = {
      ctx: component_context,
      deps: null,
      effects: null,
      equals,
      f: flags2,
      fn,
      reactions: null,
      rv: 0,
      v: (
        /** @type {V} */
        UNINITIALIZED
      ),
      wv: 0,
      parent: parent_derived ?? active_effect,
      ac: null
    };
    return signal;
  }
  // @__NO_SIDE_EFFECTS__
  function async_derived(fn, label, location2) {
    let parent = (
      /** @type {Effect | null} */
      active_effect
    );
    if (parent === null) {
      async_derived_orphan();
    }
    var promise = (
      /** @type {Promise<V>} */
      /** @type {unknown} */
      void 0
    );
    var signal = source(
      /** @type {V} */
      UNINITIALIZED
    );
    var should_suspend = !active_reaction;
    var deferreds = /* @__PURE__ */ new Map();
    async_effect(() => {
      var _a2;
      var d2 = deferred();
      promise = d2.promise;
      try {
        Promise.resolve(fn()).then(d2.resolve, d2.reject).then(() => {
          if (batch === current_batch && batch.committed) {
            batch.deactivate();
          }
          unset_context();
        });
      } catch (error) {
        d2.reject(error);
        unset_context();
      }
      var batch = (
        /** @type {Batch} */
        current_batch
      );
      if (should_suspend) {
        var decrement_pending = increment_pending();
        (_a2 = deferreds.get(batch)) == null ? void 0 : _a2.reject(STALE_REACTION);
        deferreds.delete(batch);
        deferreds.set(batch, d2);
      }
      const handler = (value, error = void 0) => {
        batch.activate();
        if (error) {
          if (error !== STALE_REACTION) {
            signal.f |= ERROR_VALUE;
            internal_set(signal, error);
          }
        } else {
          if ((signal.f & ERROR_VALUE) !== 0) {
            signal.f ^= ERROR_VALUE;
          }
          internal_set(signal, value);
          for (const [b2, d3] of deferreds) {
            deferreds.delete(b2);
            if (b2 === batch) break;
            d3.reject(STALE_REACTION);
          }
        }
        if (decrement_pending) {
          decrement_pending();
        }
      };
      d2.promise.then(handler, (e2) => handler(null, e2 || "unknown"));
    });
    teardown(() => {
      for (const d2 of deferreds.values()) {
        d2.reject(STALE_REACTION);
      }
    });
    return new Promise((fulfil) => {
      function next(p2) {
        function go() {
          if (p2 === promise) {
            fulfil(signal);
          } else {
            next(promise);
          }
        }
        p2.then(go, go);
      }
      next(promise);
    });
  }
  // @__NO_SIDE_EFFECTS__
  function user_derived(fn) {
    const d2 = /* @__PURE__ */ derived(fn);
    push_reaction_value(d2);
    return d2;
  }
  // @__NO_SIDE_EFFECTS__
  function derived_safe_equal(fn) {
    const signal = /* @__PURE__ */ derived(fn);
    signal.equals = safe_equals;
    return signal;
  }
  function destroy_derived_effects(derived2) {
    var effects = derived2.effects;
    if (effects !== null) {
      derived2.effects = null;
      for (var i2 = 0; i2 < effects.length; i2 += 1) {
        destroy_effect(
          /** @type {Effect} */
          effects[i2]
        );
      }
    }
  }
  function get_derived_parent_effect(derived2) {
    var parent = derived2.parent;
    while (parent !== null) {
      if ((parent.f & DERIVED) === 0) {
        return (parent.f & DESTROYED) === 0 ? (
          /** @type {Effect} */
          parent
        ) : null;
      }
      parent = parent.parent;
    }
    return null;
  }
  function execute_derived(derived2) {
    var value;
    var prev_active_effect = active_effect;
    set_active_effect(get_derived_parent_effect(derived2));
    {
      try {
        derived2.f &= ~WAS_MARKED;
        destroy_derived_effects(derived2);
        value = update_reaction(derived2);
      } finally {
        set_active_effect(prev_active_effect);
      }
    }
    return value;
  }
  function update_derived(derived2) {
    var value = execute_derived(derived2);
    if (!derived2.equals(value)) {
      derived2.wv = increment_write_version();
      if (!(current_batch == null ? void 0 : current_batch.is_fork) || derived2.deps === null) {
        derived2.v = value;
        if (derived2.deps === null) {
          set_signal_status(derived2, CLEAN);
          return;
        }
      }
    }
    if (is_destroying_effect) {
      return;
    }
    if (batch_values !== null) {
      if (effect_tracking() || (current_batch == null ? void 0 : current_batch.is_fork)) {
        batch_values.set(derived2, value);
      }
    } else {
      update_derived_status(derived2);
    }
  }
  function freeze_derived_effects(derived2) {
    var _a2, _b2;
    if (derived2.effects === null) return;
    for (const e2 of derived2.effects) {
      if (e2.teardown || e2.ac) {
        (_a2 = e2.teardown) == null ? void 0 : _a2.call(e2);
        (_b2 = e2.ac) == null ? void 0 : _b2.abort(STALE_REACTION);
        e2.teardown = noop;
        e2.ac = null;
        remove_reactions(e2, 0);
        destroy_effect_children(e2);
      }
    }
  }
  function unfreeze_derived_effects(derived2) {
    if (derived2.effects === null) return;
    for (const e2 of derived2.effects) {
      if (e2.teardown) {
        update_effect(e2);
      }
    }
  }
  let eager_effects = /* @__PURE__ */ new Set();
  const old_values = /* @__PURE__ */ new Map();
  let eager_effects_deferred = false;
  function source(v2, stack) {
    var signal = {
      f: 0,
      // TODO ideally we could skip this altogether, but it causes type errors
      v: v2,
      reactions: null,
      equals,
      rv: 0,
      wv: 0
    };
    return signal;
  }
  // @__NO_SIDE_EFFECTS__
  function state(v2, stack) {
    const s2 = source(v2);
    push_reaction_value(s2);
    return s2;
  }
  // @__NO_SIDE_EFFECTS__
  function mutable_source(initial_value, immutable = false, trackable = true) {
    var _a2;
    const s2 = source(initial_value);
    if (!immutable) {
      s2.equals = safe_equals;
    }
    if (legacy_mode_flag && trackable && component_context !== null && component_context.l !== null) {
      ((_a2 = component_context.l).s ?? (_a2.s = [])).push(s2);
    }
    return s2;
  }
  function mutate(source2, value) {
    set(
      source2,
      untrack(() => get(source2))
    );
    return value;
  }
  function set(source2, value, should_proxy = false) {
    if (active_reaction !== null && // since we are untracking the function inside `$inspect.with` we need to add this check
    // to ensure we error if state is set inside an inspect effect
    (!untracking || (active_reaction.f & EAGER_EFFECT) !== 0) && is_runes() && (active_reaction.f & (DERIVED | BLOCK_EFFECT | ASYNC | EAGER_EFFECT)) !== 0 && (current_sources === null || !includes.call(current_sources, source2))) {
      state_unsafe_mutation();
    }
    let new_value = should_proxy ? proxy(value) : value;
    return internal_set(source2, new_value);
  }
  function internal_set(source2, value) {
    if (!source2.equals(value)) {
      var old_value = source2.v;
      if (is_destroying_effect) {
        old_values.set(source2, value);
      } else {
        old_values.set(source2, old_value);
      }
      source2.v = value;
      var batch = Batch.ensure();
      batch.capture(source2, old_value);
      if ((source2.f & DERIVED) !== 0) {
        const derived2 = (
          /** @type {Derived} */
          source2
        );
        if ((source2.f & DIRTY) !== 0) {
          execute_derived(derived2);
        }
        update_derived_status(derived2);
      }
      source2.wv = increment_write_version();
      mark_reactions(source2, DIRTY);
      if (is_runes() && active_effect !== null && (active_effect.f & CLEAN) !== 0 && (active_effect.f & (BRANCH_EFFECT | ROOT_EFFECT)) === 0) {
        if (untracked_writes === null) {
          set_untracked_writes([source2]);
        } else {
          untracked_writes.push(source2);
        }
      }
      if (!batch.is_fork && eager_effects.size > 0 && !eager_effects_deferred) {
        flush_eager_effects();
      }
    }
    return value;
  }
  function flush_eager_effects() {
    eager_effects_deferred = false;
    for (const effect2 of eager_effects) {
      if ((effect2.f & CLEAN) !== 0) {
        set_signal_status(effect2, MAYBE_DIRTY);
      }
      if (is_dirty(effect2)) {
        update_effect(effect2);
      }
    }
    eager_effects.clear();
  }
  function increment(source2) {
    set(source2, source2.v + 1);
  }
  function mark_reactions(signal, status) {
    var reactions = signal.reactions;
    if (reactions === null) return;
    var runes = is_runes();
    var length = reactions.length;
    for (var i2 = 0; i2 < length; i2++) {
      var reaction = reactions[i2];
      var flags2 = reaction.f;
      if (!runes && reaction === active_effect) continue;
      var not_dirty = (flags2 & DIRTY) === 0;
      if (not_dirty) {
        set_signal_status(reaction, status);
      }
      if ((flags2 & DERIVED) !== 0) {
        var derived2 = (
          /** @type {Derived} */
          reaction
        );
        batch_values == null ? void 0 : batch_values.delete(derived2);
        if ((flags2 & WAS_MARKED) === 0) {
          if (flags2 & CONNECTED) {
            reaction.f |= WAS_MARKED;
          }
          mark_reactions(derived2, MAYBE_DIRTY);
        }
      } else if (not_dirty) {
        if ((flags2 & BLOCK_EFFECT) !== 0 && eager_block_effects !== null) {
          eager_block_effects.add(
            /** @type {Effect} */
            reaction
          );
        }
        schedule_effect(
          /** @type {Effect} */
          reaction
        );
      }
    }
  }
  function proxy(value) {
    if (typeof value !== "object" || value === null || STATE_SYMBOL in value) {
      return value;
    }
    const prototype = get_prototype_of(value);
    if (prototype !== object_prototype && prototype !== array_prototype) {
      return value;
    }
    var sources = /* @__PURE__ */ new Map();
    var is_proxied_array = is_array(value);
    var version = /* @__PURE__ */ state(0);
    var parent_version = update_version;
    var with_parent = (fn) => {
      if (update_version === parent_version) {
        return fn();
      }
      var reaction = active_reaction;
      var version2 = update_version;
      set_active_reaction(null);
      set_update_version(parent_version);
      var result = fn();
      set_active_reaction(reaction);
      set_update_version(version2);
      return result;
    };
    if (is_proxied_array) {
      sources.set("length", /* @__PURE__ */ state(
        /** @type {any[]} */
        value.length
      ));
    }
    return new Proxy(
      /** @type {any} */
      value,
      {
        defineProperty(_2, prop2, descriptor) {
          if (!("value" in descriptor) || descriptor.configurable === false || descriptor.enumerable === false || descriptor.writable === false) {
            state_descriptors_fixed();
          }
          var s2 = sources.get(prop2);
          if (s2 === void 0) {
            with_parent(() => {
              var s3 = /* @__PURE__ */ state(descriptor.value);
              sources.set(prop2, s3);
              return s3;
            });
          } else {
            set(s2, descriptor.value, true);
          }
          return true;
        },
        deleteProperty(target, prop2) {
          var s2 = sources.get(prop2);
          if (s2 === void 0) {
            if (prop2 in target) {
              const s3 = with_parent(() => /* @__PURE__ */ state(UNINITIALIZED));
              sources.set(prop2, s3);
              increment(version);
            }
          } else {
            set(s2, UNINITIALIZED);
            increment(version);
          }
          return true;
        },
        get(target, prop2, receiver) {
          var _a2;
          if (prop2 === STATE_SYMBOL) {
            return value;
          }
          var s2 = sources.get(prop2);
          var exists = prop2 in target;
          if (s2 === void 0 && (!exists || ((_a2 = get_descriptor(target, prop2)) == null ? void 0 : _a2.writable))) {
            s2 = with_parent(() => {
              var p2 = proxy(exists ? target[prop2] : UNINITIALIZED);
              var s3 = /* @__PURE__ */ state(p2);
              return s3;
            });
            sources.set(prop2, s2);
          }
          if (s2 !== void 0) {
            var v2 = get(s2);
            return v2 === UNINITIALIZED ? void 0 : v2;
          }
          return Reflect.get(target, prop2, receiver);
        },
        getOwnPropertyDescriptor(target, prop2) {
          var descriptor = Reflect.getOwnPropertyDescriptor(target, prop2);
          if (descriptor && "value" in descriptor) {
            var s2 = sources.get(prop2);
            if (s2) descriptor.value = get(s2);
          } else if (descriptor === void 0) {
            var source2 = sources.get(prop2);
            var value2 = source2 == null ? void 0 : source2.v;
            if (source2 !== void 0 && value2 !== UNINITIALIZED) {
              return {
                enumerable: true,
                configurable: true,
                value: value2,
                writable: true
              };
            }
          }
          return descriptor;
        },
        has(target, prop2) {
          var _a2;
          if (prop2 === STATE_SYMBOL) {
            return true;
          }
          var s2 = sources.get(prop2);
          var has = s2 !== void 0 && s2.v !== UNINITIALIZED || Reflect.has(target, prop2);
          if (s2 !== void 0 || active_effect !== null && (!has || ((_a2 = get_descriptor(target, prop2)) == null ? void 0 : _a2.writable))) {
            if (s2 === void 0) {
              s2 = with_parent(() => {
                var p2 = has ? proxy(target[prop2]) : UNINITIALIZED;
                var s3 = /* @__PURE__ */ state(p2);
                return s3;
              });
              sources.set(prop2, s2);
            }
            var value2 = get(s2);
            if (value2 === UNINITIALIZED) {
              return false;
            }
          }
          return has;
        },
        set(target, prop2, value2, receiver) {
          var _a2;
          var s2 = sources.get(prop2);
          var has = prop2 in target;
          if (is_proxied_array && prop2 === "length") {
            for (var i2 = value2; i2 < /** @type {Source<number>} */
            s2.v; i2 += 1) {
              var other_s = sources.get(i2 + "");
              if (other_s !== void 0) {
                set(other_s, UNINITIALIZED);
              } else if (i2 in target) {
                other_s = with_parent(() => /* @__PURE__ */ state(UNINITIALIZED));
                sources.set(i2 + "", other_s);
              }
            }
          }
          if (s2 === void 0) {
            if (!has || ((_a2 = get_descriptor(target, prop2)) == null ? void 0 : _a2.writable)) {
              s2 = with_parent(() => /* @__PURE__ */ state(void 0));
              set(s2, proxy(value2));
              sources.set(prop2, s2);
            }
          } else {
            has = s2.v !== UNINITIALIZED;
            var p2 = with_parent(() => proxy(value2));
            set(s2, p2);
          }
          var descriptor = Reflect.getOwnPropertyDescriptor(target, prop2);
          if (descriptor == null ? void 0 : descriptor.set) {
            descriptor.set.call(receiver, value2);
          }
          if (!has) {
            if (is_proxied_array && typeof prop2 === "string") {
              var ls = (
                /** @type {Source<number>} */
                sources.get("length")
              );
              var n2 = Number(prop2);
              if (Number.isInteger(n2) && n2 >= ls.v) {
                set(ls, n2 + 1);
              }
            }
            increment(version);
          }
          return true;
        },
        ownKeys(target) {
          get(version);
          var own_keys = Reflect.ownKeys(target).filter((key2) => {
            var source3 = sources.get(key2);
            return source3 === void 0 || source3.v !== UNINITIALIZED;
          });
          for (var [key, source2] of sources) {
            if (source2.v !== UNINITIALIZED && !(key in target)) {
              own_keys.push(key);
            }
          }
          return own_keys;
        },
        setPrototypeOf() {
          state_prototype_fixed();
        }
      }
    );
  }
  function get_proxied_value(value) {
    try {
      if (value !== null && typeof value === "object" && STATE_SYMBOL in value) {
        return value[STATE_SYMBOL];
      }
    } catch {
    }
    return value;
  }
  function is(a2, b2) {
    return Object.is(get_proxied_value(a2), get_proxied_value(b2));
  }
  var $window;
  var is_firefox;
  var first_child_getter;
  var next_sibling_getter;
  function init_operations() {
    if ($window !== void 0) {
      return;
    }
    $window = window;
    is_firefox = /Firefox/.test(navigator.userAgent);
    var element_prototype = Element.prototype;
    var node_prototype = Node.prototype;
    var text_prototype = Text.prototype;
    first_child_getter = get_descriptor(node_prototype, "firstChild").get;
    next_sibling_getter = get_descriptor(node_prototype, "nextSibling").get;
    if (is_extensible(element_prototype)) {
      element_prototype.__click = void 0;
      element_prototype.__className = void 0;
      element_prototype.__attributes = null;
      element_prototype.__style = void 0;
      element_prototype.__e = void 0;
    }
    if (is_extensible(text_prototype)) {
      text_prototype.__t = void 0;
    }
  }
  function create_text(value = "") {
    return document.createTextNode(value);
  }
  // @__NO_SIDE_EFFECTS__
  function get_first_child(node) {
    return (
      /** @type {TemplateNode | null} */
      first_child_getter.call(node)
    );
  }
  // @__NO_SIDE_EFFECTS__
  function get_next_sibling(node) {
    return (
      /** @type {TemplateNode | null} */
      next_sibling_getter.call(node)
    );
  }
  function child(node, is_text) {
    {
      return /* @__PURE__ */ get_first_child(node);
    }
  }
  function first_child(node, is_text = false) {
    {
      var first = /* @__PURE__ */ get_first_child(node);
      if (first instanceof Comment && first.data === "") return /* @__PURE__ */ get_next_sibling(first);
      return first;
    }
  }
  function sibling(node, count = 1, is_text = false) {
    let next_sibling = node;
    while (count--) {
      next_sibling = /** @type {TemplateNode} */
      /* @__PURE__ */ get_next_sibling(next_sibling);
    }
    {
      return next_sibling;
    }
  }
  function clear_text_content(node) {
    node.textContent = "";
  }
  function create_element(tag, namespace, is2) {
    let options = void 0;
    return (
      /** @type {T extends keyof HTMLElementTagNameMap ? HTMLElementTagNameMap[T] : Element} */
      document.createElementNS(NAMESPACE_HTML, tag, options)
    );
  }
  let listening_to_form_reset = false;
  function add_form_reset_listener() {
    if (!listening_to_form_reset) {
      listening_to_form_reset = true;
      document.addEventListener(
        "reset",
        (evt) => {
          Promise.resolve().then(() => {
            var _a2;
            if (!evt.defaultPrevented) {
              for (
                const e2 of
                /**@type {HTMLFormElement} */
                evt.target.elements
              ) {
                (_a2 = e2.__on_r) == null ? void 0 : _a2.call(e2);
              }
            }
          });
        },
        // In the capture phase to guarantee we get noticed of it (no possibility of stopPropagation)
        { capture: true }
      );
    }
  }
  function without_reactive_context(fn) {
    var previous_reaction = active_reaction;
    var previous_effect = active_effect;
    set_active_reaction(null);
    set_active_effect(null);
    try {
      return fn();
    } finally {
      set_active_reaction(previous_reaction);
      set_active_effect(previous_effect);
    }
  }
  function listen_to_event_and_reset_event(element, event, handler, on_reset = handler) {
    element.addEventListener(event, () => without_reactive_context(handler));
    const prev = element.__on_r;
    if (prev) {
      element.__on_r = () => {
        prev();
        on_reset(true);
      };
    } else {
      element.__on_r = () => on_reset(true);
    }
    add_form_reset_listener();
  }
  function validate_effect(rune) {
    if (active_effect === null) {
      if (active_reaction === null) {
        effect_orphan();
      }
      effect_in_unowned_derived();
    }
    if (is_destroying_effect) {
      effect_in_teardown();
    }
  }
  function push_effect(effect2, parent_effect) {
    var parent_last = parent_effect.last;
    if (parent_last === null) {
      parent_effect.last = parent_effect.first = effect2;
    } else {
      parent_last.next = effect2;
      effect2.prev = parent_last;
      parent_effect.last = effect2;
    }
  }
  function create_effect(type, fn, sync) {
    var parent = active_effect;
    if (parent !== null && (parent.f & INERT) !== 0) {
      type |= INERT;
    }
    var effect2 = {
      ctx: component_context,
      deps: null,
      nodes: null,
      f: type | DIRTY | CONNECTED,
      first: null,
      fn,
      last: null,
      next: null,
      parent,
      b: parent && parent.b,
      prev: null,
      teardown: null,
      wv: 0,
      ac: null
    };
    if (sync) {
      try {
        update_effect(effect2);
      } catch (e3) {
        destroy_effect(effect2);
        throw e3;
      }
    } else if (fn !== null) {
      schedule_effect(effect2);
    }
    var e2 = effect2;
    if (sync && e2.deps === null && e2.teardown === null && e2.nodes === null && e2.first === e2.last && // either `null`, or a singular child
    (e2.f & EFFECT_PRESERVED) === 0) {
      e2 = e2.first;
      if ((type & BLOCK_EFFECT) !== 0 && (type & EFFECT_TRANSPARENT) !== 0 && e2 !== null) {
        e2.f |= EFFECT_TRANSPARENT;
      }
    }
    if (e2 !== null) {
      e2.parent = parent;
      if (parent !== null) {
        push_effect(e2, parent);
      }
      if (active_reaction !== null && (active_reaction.f & DERIVED) !== 0 && (type & ROOT_EFFECT) === 0) {
        var derived2 = (
          /** @type {Derived} */
          active_reaction
        );
        (derived2.effects ?? (derived2.effects = [])).push(e2);
      }
    }
    return effect2;
  }
  function effect_tracking() {
    return active_reaction !== null && !untracking;
  }
  function teardown(fn) {
    const effect2 = create_effect(RENDER_EFFECT, null, false);
    set_signal_status(effect2, CLEAN);
    effect2.teardown = fn;
    return effect2;
  }
  function user_effect(fn) {
    validate_effect();
    var flags2 = (
      /** @type {Effect} */
      active_effect.f
    );
    var defer = !active_reaction && (flags2 & BRANCH_EFFECT) !== 0 && (flags2 & REACTION_RAN) === 0;
    if (defer) {
      var context = (
        /** @type {ComponentContext} */
        component_context
      );
      (context.e ?? (context.e = [])).push(fn);
    } else {
      return create_user_effect(fn);
    }
  }
  function create_user_effect(fn) {
    return create_effect(EFFECT | USER_EFFECT, fn, false);
  }
  function user_pre_effect(fn) {
    validate_effect();
    return create_effect(RENDER_EFFECT | USER_EFFECT, fn, true);
  }
  function component_root(fn) {
    Batch.ensure();
    const effect2 = create_effect(ROOT_EFFECT | EFFECT_PRESERVED, fn, true);
    return (options = {}) => {
      return new Promise((fulfil) => {
        if (options.outro) {
          pause_effect(effect2, () => {
            destroy_effect(effect2);
            fulfil(void 0);
          });
        } else {
          destroy_effect(effect2);
          fulfil(void 0);
        }
      });
    };
  }
  function effect(fn) {
    return create_effect(EFFECT, fn, false);
  }
  function async_effect(fn) {
    return create_effect(ASYNC | EFFECT_PRESERVED, fn, true);
  }
  function render_effect(fn, flags2 = 0) {
    return create_effect(RENDER_EFFECT | flags2, fn, true);
  }
  function template_effect(fn, sync = [], async = [], blockers = []) {
    flatten(blockers, sync, async, (values) => {
      create_effect(RENDER_EFFECT, () => fn(...values.map(get)), true);
    });
  }
  function block(fn, flags2 = 0) {
    var effect2 = create_effect(BLOCK_EFFECT | flags2, fn, true);
    return effect2;
  }
  function branch(fn) {
    return create_effect(BRANCH_EFFECT | EFFECT_PRESERVED, fn, true);
  }
  function execute_effect_teardown(effect2) {
    var teardown2 = effect2.teardown;
    if (teardown2 !== null) {
      const previously_destroying_effect = is_destroying_effect;
      const previous_reaction = active_reaction;
      set_is_destroying_effect(true);
      set_active_reaction(null);
      try {
        teardown2.call(null);
      } finally {
        set_is_destroying_effect(previously_destroying_effect);
        set_active_reaction(previous_reaction);
      }
    }
  }
  function destroy_effect_children(signal, remove_dom = false) {
    var effect2 = signal.first;
    signal.first = signal.last = null;
    while (effect2 !== null) {
      const controller = effect2.ac;
      if (controller !== null) {
        without_reactive_context(() => {
          controller.abort(STALE_REACTION);
        });
      }
      var next = effect2.next;
      if ((effect2.f & ROOT_EFFECT) !== 0) {
        effect2.parent = null;
      } else {
        destroy_effect(effect2, remove_dom);
      }
      effect2 = next;
    }
  }
  function destroy_block_effect_children(signal) {
    var effect2 = signal.first;
    while (effect2 !== null) {
      var next = effect2.next;
      if ((effect2.f & BRANCH_EFFECT) === 0) {
        destroy_effect(effect2);
      }
      effect2 = next;
    }
  }
  function destroy_effect(effect2, remove_dom = true) {
    var removed = false;
    if ((remove_dom || (effect2.f & HEAD_EFFECT) !== 0) && effect2.nodes !== null && effect2.nodes.end !== null) {
      remove_effect_dom(
        effect2.nodes.start,
        /** @type {TemplateNode} */
        effect2.nodes.end
      );
      removed = true;
    }
    destroy_effect_children(effect2, remove_dom && !removed);
    remove_reactions(effect2, 0);
    set_signal_status(effect2, DESTROYED);
    var transitions = effect2.nodes && effect2.nodes.t;
    if (transitions !== null) {
      for (const transition of transitions) {
        transition.stop();
      }
    }
    execute_effect_teardown(effect2);
    var parent = effect2.parent;
    if (parent !== null && parent.first !== null) {
      unlink_effect(effect2);
    }
    effect2.next = effect2.prev = effect2.teardown = effect2.ctx = effect2.deps = effect2.fn = effect2.nodes = effect2.ac = null;
  }
  function remove_effect_dom(node, end) {
    while (node !== null) {
      var next = node === end ? null : /* @__PURE__ */ get_next_sibling(node);
      node.remove();
      node = next;
    }
  }
  function unlink_effect(effect2) {
    var parent = effect2.parent;
    var prev = effect2.prev;
    var next = effect2.next;
    if (prev !== null) prev.next = next;
    if (next !== null) next.prev = prev;
    if (parent !== null) {
      if (parent.first === effect2) parent.first = next;
      if (parent.last === effect2) parent.last = prev;
    }
  }
  function pause_effect(effect2, callback, destroy = true) {
    var transitions = [];
    pause_children(effect2, transitions, true);
    var fn = () => {
      if (destroy) destroy_effect(effect2);
      if (callback) callback();
    };
    var remaining = transitions.length;
    if (remaining > 0) {
      var check = () => --remaining || fn();
      for (var transition of transitions) {
        transition.out(check);
      }
    } else {
      fn();
    }
  }
  function pause_children(effect2, transitions, local) {
    if ((effect2.f & INERT) !== 0) return;
    effect2.f ^= INERT;
    var t2 = effect2.nodes && effect2.nodes.t;
    if (t2 !== null) {
      for (const transition of t2) {
        if (transition.is_global || local) {
          transitions.push(transition);
        }
      }
    }
    var child2 = effect2.first;
    while (child2 !== null) {
      var sibling2 = child2.next;
      var transparent = (child2.f & EFFECT_TRANSPARENT) !== 0 || // If this is a branch effect without a block effect parent,
      // it means the parent block effect was pruned. In that case,
      // transparency information was transferred to the branch effect.
      (child2.f & BRANCH_EFFECT) !== 0 && (effect2.f & BLOCK_EFFECT) !== 0;
      pause_children(child2, transitions, transparent ? local : false);
      child2 = sibling2;
    }
  }
  function resume_effect(effect2) {
    resume_children(effect2, true);
  }
  function resume_children(effect2, local) {
    if ((effect2.f & INERT) === 0) return;
    effect2.f ^= INERT;
    if ((effect2.f & CLEAN) === 0) {
      set_signal_status(effect2, DIRTY);
      schedule_effect(effect2);
    }
    var child2 = effect2.first;
    while (child2 !== null) {
      var sibling2 = child2.next;
      var transparent = (child2.f & EFFECT_TRANSPARENT) !== 0 || (child2.f & BRANCH_EFFECT) !== 0;
      resume_children(child2, transparent ? local : false);
      child2 = sibling2;
    }
    var t2 = effect2.nodes && effect2.nodes.t;
    if (t2 !== null) {
      for (const transition of t2) {
        if (transition.is_global || local) {
          transition.in();
        }
      }
    }
  }
  function move_effect(effect2, fragment) {
    if (!effect2.nodes) return;
    var node = effect2.nodes.start;
    var end = effect2.nodes.end;
    while (node !== null) {
      var next = node === end ? null : /* @__PURE__ */ get_next_sibling(node);
      fragment.append(node);
      node = next;
    }
  }
  let is_updating_effect = false;
  let is_destroying_effect = false;
  function set_is_destroying_effect(value) {
    is_destroying_effect = value;
  }
  let active_reaction = null;
  let untracking = false;
  function set_active_reaction(reaction) {
    active_reaction = reaction;
  }
  let active_effect = null;
  function set_active_effect(effect2) {
    active_effect = effect2;
  }
  let current_sources = null;
  function push_reaction_value(value) {
    if (active_reaction !== null && true) {
      if (current_sources === null) {
        current_sources = [value];
      } else {
        current_sources.push(value);
      }
    }
  }
  let new_deps = null;
  let skipped_deps = 0;
  let untracked_writes = null;
  function set_untracked_writes(value) {
    untracked_writes = value;
  }
  let write_version = 1;
  let read_version = 0;
  let update_version = read_version;
  function set_update_version(value) {
    update_version = value;
  }
  function increment_write_version() {
    return ++write_version;
  }
  function is_dirty(reaction) {
    var flags2 = reaction.f;
    if ((flags2 & DIRTY) !== 0) {
      return true;
    }
    if (flags2 & DERIVED) {
      reaction.f &= ~WAS_MARKED;
    }
    if ((flags2 & MAYBE_DIRTY) !== 0) {
      var dependencies = (
        /** @type {Value[]} */
        reaction.deps
      );
      var length = dependencies.length;
      for (var i2 = 0; i2 < length; i2++) {
        var dependency = dependencies[i2];
        if (is_dirty(
          /** @type {Derived} */
          dependency
        )) {
          update_derived(
            /** @type {Derived} */
            dependency
          );
        }
        if (dependency.wv > reaction.wv) {
          return true;
        }
      }
      if ((flags2 & CONNECTED) !== 0 && // During time traveling we don't want to reset the status so that
      // traversal of the graph in the other batches still happens
      batch_values === null) {
        set_signal_status(reaction, CLEAN);
      }
    }
    return false;
  }
  function schedule_possible_effect_self_invalidation(signal, effect2, root2 = true) {
    var reactions = signal.reactions;
    if (reactions === null) return;
    if (current_sources !== null && includes.call(current_sources, signal)) {
      return;
    }
    for (var i2 = 0; i2 < reactions.length; i2++) {
      var reaction = reactions[i2];
      if ((reaction.f & DERIVED) !== 0) {
        schedule_possible_effect_self_invalidation(
          /** @type {Derived} */
          reaction,
          effect2,
          false
        );
      } else if (effect2 === reaction) {
        if (root2) {
          set_signal_status(reaction, DIRTY);
        } else if ((reaction.f & CLEAN) !== 0) {
          set_signal_status(reaction, MAYBE_DIRTY);
        }
        schedule_effect(
          /** @type {Effect} */
          reaction
        );
      }
    }
  }
  function update_reaction(reaction) {
    var _a2;
    var previous_deps = new_deps;
    var previous_skipped_deps = skipped_deps;
    var previous_untracked_writes = untracked_writes;
    var previous_reaction = active_reaction;
    var previous_sources = current_sources;
    var previous_component_context = component_context;
    var previous_untracking = untracking;
    var previous_update_version = update_version;
    var flags2 = reaction.f;
    new_deps = /** @type {null | Value[]} */
    null;
    skipped_deps = 0;
    untracked_writes = null;
    active_reaction = (flags2 & (BRANCH_EFFECT | ROOT_EFFECT)) === 0 ? reaction : null;
    current_sources = null;
    set_component_context(reaction.ctx);
    untracking = false;
    update_version = ++read_version;
    if (reaction.ac !== null) {
      without_reactive_context(() => {
        reaction.ac.abort(STALE_REACTION);
      });
      reaction.ac = null;
    }
    try {
      reaction.f |= REACTION_IS_UPDATING;
      var fn = (
        /** @type {Function} */
        reaction.fn
      );
      var result = fn();
      reaction.f |= REACTION_RAN;
      var deps = reaction.deps;
      var is_fork = current_batch == null ? void 0 : current_batch.is_fork;
      if (new_deps !== null) {
        var i2;
        if (!is_fork) {
          remove_reactions(reaction, skipped_deps);
        }
        if (deps !== null && skipped_deps > 0) {
          deps.length = skipped_deps + new_deps.length;
          for (i2 = 0; i2 < new_deps.length; i2++) {
            deps[skipped_deps + i2] = new_deps[i2];
          }
        } else {
          reaction.deps = deps = new_deps;
        }
        if (effect_tracking() && (reaction.f & CONNECTED) !== 0) {
          for (i2 = skipped_deps; i2 < deps.length; i2++) {
            ((_a2 = deps[i2]).reactions ?? (_a2.reactions = [])).push(reaction);
          }
        }
      } else if (!is_fork && deps !== null && skipped_deps < deps.length) {
        remove_reactions(reaction, skipped_deps);
        deps.length = skipped_deps;
      }
      if (is_runes() && untracked_writes !== null && !untracking && deps !== null && (reaction.f & (DERIVED | MAYBE_DIRTY | DIRTY)) === 0) {
        for (i2 = 0; i2 < /** @type {Source[]} */
        untracked_writes.length; i2++) {
          schedule_possible_effect_self_invalidation(
            untracked_writes[i2],
            /** @type {Effect} */
            reaction
          );
        }
      }
      if (previous_reaction !== null && previous_reaction !== reaction) {
        read_version++;
        if (previous_reaction.deps !== null) {
          for (let i3 = 0; i3 < previous_skipped_deps; i3 += 1) {
            previous_reaction.deps[i3].rv = read_version;
          }
        }
        if (previous_deps !== null) {
          for (const dep of previous_deps) {
            dep.rv = read_version;
          }
        }
        if (untracked_writes !== null) {
          if (previous_untracked_writes === null) {
            previous_untracked_writes = untracked_writes;
          } else {
            previous_untracked_writes.push(.../** @type {Source[]} */
            untracked_writes);
          }
        }
      }
      if ((reaction.f & ERROR_VALUE) !== 0) {
        reaction.f ^= ERROR_VALUE;
      }
      return result;
    } catch (error) {
      return handle_error(error);
    } finally {
      reaction.f ^= REACTION_IS_UPDATING;
      new_deps = previous_deps;
      skipped_deps = previous_skipped_deps;
      untracked_writes = previous_untracked_writes;
      active_reaction = previous_reaction;
      current_sources = previous_sources;
      set_component_context(previous_component_context);
      untracking = previous_untracking;
      update_version = previous_update_version;
    }
  }
  function remove_reaction(signal, dependency) {
    let reactions = dependency.reactions;
    if (reactions !== null) {
      var index2 = index_of.call(reactions, signal);
      if (index2 !== -1) {
        var new_length = reactions.length - 1;
        if (new_length === 0) {
          reactions = dependency.reactions = null;
        } else {
          reactions[index2] = reactions[new_length];
          reactions.pop();
        }
      }
    }
    if (reactions === null && (dependency.f & DERIVED) !== 0 && // Destroying a child effect while updating a parent effect can cause a dependency to appear
    // to be unused, when in fact it is used by the currently-updating parent. Checking `new_deps`
    // allows us to skip the expensive work of disconnecting and immediately reconnecting it
    (new_deps === null || !includes.call(new_deps, dependency))) {
      var derived2 = (
        /** @type {Derived} */
        dependency
      );
      if ((derived2.f & CONNECTED) !== 0) {
        derived2.f ^= CONNECTED;
        derived2.f &= ~WAS_MARKED;
      }
      update_derived_status(derived2);
      freeze_derived_effects(derived2);
      remove_reactions(derived2, 0);
    }
  }
  function remove_reactions(signal, start_index) {
    var dependencies = signal.deps;
    if (dependencies === null) return;
    for (var i2 = start_index; i2 < dependencies.length; i2++) {
      remove_reaction(signal, dependencies[i2]);
    }
  }
  function update_effect(effect2) {
    var flags2 = effect2.f;
    if ((flags2 & DESTROYED) !== 0) {
      return;
    }
    set_signal_status(effect2, CLEAN);
    var previous_effect = active_effect;
    var was_updating_effect = is_updating_effect;
    active_effect = effect2;
    is_updating_effect = true;
    try {
      if ((flags2 & (BLOCK_EFFECT | MANAGED_EFFECT)) !== 0) {
        destroy_block_effect_children(effect2);
      } else {
        destroy_effect_children(effect2);
      }
      execute_effect_teardown(effect2);
      var teardown2 = update_reaction(effect2);
      effect2.teardown = typeof teardown2 === "function" ? teardown2 : null;
      effect2.wv = write_version;
      var dep;
      if (DEV && tracing_mode_flag && (effect2.f & DIRTY) !== 0 && effect2.deps !== null) ;
    } finally {
      is_updating_effect = was_updating_effect;
      active_effect = previous_effect;
    }
  }
  async function tick() {
    await Promise.resolve();
    flushSync();
  }
  function get(signal) {
    var flags2 = signal.f;
    var is_derived = (flags2 & DERIVED) !== 0;
    if (active_reaction !== null && !untracking) {
      var destroyed = active_effect !== null && (active_effect.f & DESTROYED) !== 0;
      if (!destroyed && (current_sources === null || !includes.call(current_sources, signal))) {
        var deps = active_reaction.deps;
        if ((active_reaction.f & REACTION_IS_UPDATING) !== 0) {
          if (signal.rv < read_version) {
            signal.rv = read_version;
            if (new_deps === null && deps !== null && deps[skipped_deps] === signal) {
              skipped_deps++;
            } else if (new_deps === null) {
              new_deps = [signal];
            } else {
              new_deps.push(signal);
            }
          }
        } else {
          (active_reaction.deps ?? (active_reaction.deps = [])).push(signal);
          var reactions = signal.reactions;
          if (reactions === null) {
            signal.reactions = [active_reaction];
          } else if (!includes.call(reactions, active_reaction)) {
            reactions.push(active_reaction);
          }
        }
      }
    }
    if (is_destroying_effect && old_values.has(signal)) {
      return old_values.get(signal);
    }
    if (is_derived) {
      var derived2 = (
        /** @type {Derived} */
        signal
      );
      if (is_destroying_effect) {
        var value = derived2.v;
        if ((derived2.f & CLEAN) === 0 && derived2.reactions !== null || depends_on_old_values(derived2)) {
          value = execute_derived(derived2);
        }
        old_values.set(derived2, value);
        return value;
      }
      var should_connect = (derived2.f & CONNECTED) === 0 && !untracking && active_reaction !== null && (is_updating_effect || (active_reaction.f & CONNECTED) !== 0);
      var is_new = (derived2.f & REACTION_RAN) === 0;
      if (is_dirty(derived2)) {
        if (should_connect) {
          derived2.f |= CONNECTED;
        }
        update_derived(derived2);
      }
      if (should_connect && !is_new) {
        unfreeze_derived_effects(derived2);
        reconnect(derived2);
      }
    }
    if (batch_values == null ? void 0 : batch_values.has(signal)) {
      return batch_values.get(signal);
    }
    if ((signal.f & ERROR_VALUE) !== 0) {
      throw signal.v;
    }
    return signal.v;
  }
  function reconnect(derived2) {
    derived2.f |= CONNECTED;
    if (derived2.deps === null) return;
    for (const dep of derived2.deps) {
      (dep.reactions ?? (dep.reactions = [])).push(derived2);
      if ((dep.f & DERIVED) !== 0 && (dep.f & CONNECTED) === 0) {
        unfreeze_derived_effects(
          /** @type {Derived} */
          dep
        );
        reconnect(
          /** @type {Derived} */
          dep
        );
      }
    }
  }
  function depends_on_old_values(derived2) {
    if (derived2.v === UNINITIALIZED) return true;
    if (derived2.deps === null) return false;
    for (const dep of derived2.deps) {
      if (old_values.has(dep)) {
        return true;
      }
      if ((dep.f & DERIVED) !== 0 && depends_on_old_values(
        /** @type {Derived} */
        dep
      )) {
        return true;
      }
    }
    return false;
  }
  function untrack(fn) {
    var previous_untracking = untracking;
    try {
      untracking = true;
      return fn();
    } finally {
      untracking = previous_untracking;
    }
  }
  function deep_read_state(value) {
    if (typeof value !== "object" || !value || value instanceof EventTarget) {
      return;
    }
    if (STATE_SYMBOL in value) {
      deep_read(value);
    } else if (!Array.isArray(value)) {
      for (let key in value) {
        const prop2 = value[key];
        if (typeof prop2 === "object" && prop2 && STATE_SYMBOL in prop2) {
          deep_read(prop2);
        }
      }
    }
  }
  function deep_read(value, visited = /* @__PURE__ */ new Set()) {
    if (typeof value === "object" && value !== null && // We don't want to traverse DOM elements
    !(value instanceof EventTarget) && !visited.has(value)) {
      visited.add(value);
      if (value instanceof Date) {
        value.getTime();
      }
      for (let key in value) {
        try {
          deep_read(value[key], visited);
        } catch (e2) {
        }
      }
      const proto = get_prototype_of(value);
      if (proto !== Object.prototype && proto !== Array.prototype && proto !== Map.prototype && proto !== Set.prototype && proto !== Date.prototype) {
        const descriptors = get_descriptors(proto);
        for (let key in descriptors) {
          const get2 = descriptors[key].get;
          if (get2) {
            try {
              get2.call(value);
            } catch (e2) {
            }
          }
        }
      }
    }
  }
  const PASSIVE_EVENTS = ["touchstart", "touchmove"];
  function is_passive_event(name) {
    return PASSIVE_EVENTS.includes(name);
  }
  const event_symbol = Symbol("events");
  const all_registered_events = /* @__PURE__ */ new Set();
  const root_event_handles = /* @__PURE__ */ new Set();
  function delegated(event_name, element, handler) {
    (element[event_symbol] ?? (element[event_symbol] = {}))[event_name] = handler;
  }
  function delegate(events) {
    for (var i2 = 0; i2 < events.length; i2++) {
      all_registered_events.add(events[i2]);
    }
    for (var fn of root_event_handles) {
      fn(events);
    }
  }
  let last_propagated_event = null;
  function handle_event_propagation(event) {
    var _a2, _b2;
    var handler_element = this;
    var owner_document = (
      /** @type {Node} */
      handler_element.ownerDocument
    );
    var event_name = event.type;
    var path = ((_a2 = event.composedPath) == null ? void 0 : _a2.call(event)) || [];
    var current_target = (
      /** @type {null | Element} */
      path[0] || event.target
    );
    last_propagated_event = event;
    var path_idx = 0;
    var handled_at = last_propagated_event === event && event[event_symbol];
    if (handled_at) {
      var at_idx = path.indexOf(handled_at);
      if (at_idx !== -1 && (handler_element === document || handler_element === /** @type {any} */
      window)) {
        event[event_symbol] = handler_element;
        return;
      }
      var handler_idx = path.indexOf(handler_element);
      if (handler_idx === -1) {
        return;
      }
      if (at_idx <= handler_idx) {
        path_idx = at_idx;
      }
    }
    current_target = /** @type {Element} */
    path[path_idx] || event.target;
    if (current_target === handler_element) return;
    define_property(event, "currentTarget", {
      configurable: true,
      get() {
        return current_target || owner_document;
      }
    });
    var previous_reaction = active_reaction;
    var previous_effect = active_effect;
    set_active_reaction(null);
    set_active_effect(null);
    try {
      var throw_error;
      var other_errors = [];
      while (current_target !== null) {
        var parent_element = current_target.assignedSlot || current_target.parentNode || /** @type {any} */
        current_target.host || null;
        try {
          var delegated2 = (_b2 = current_target[event_symbol]) == null ? void 0 : _b2[event_name];
          if (delegated2 != null && (!/** @type {any} */
          current_target.disabled || // DOM could've been updated already by the time this is reached, so we check this as well
          // -> the target could not have been disabled because it emits the event in the first place
          event.target === current_target)) {
            delegated2.call(current_target, event);
          }
        } catch (error) {
          if (throw_error) {
            other_errors.push(error);
          } else {
            throw_error = error;
          }
        }
        if (event.cancelBubble || parent_element === handler_element || parent_element === null) {
          break;
        }
        current_target = parent_element;
      }
      if (throw_error) {
        for (let error of other_errors) {
          queueMicrotask(() => {
            throw error;
          });
        }
        throw throw_error;
      }
    } finally {
      event[event_symbol] = handler_element;
      delete event.currentTarget;
      set_active_reaction(previous_reaction);
      set_active_effect(previous_effect);
    }
  }
  const policy = (
    // We gotta write it like this because after downleveling the pure comment may end up in the wrong location
    ((_a = globalThis == null ? void 0 : globalThis.window) == null ? void 0 : _a.trustedTypes) && /* @__PURE__ */ globalThis.window.trustedTypes.createPolicy("svelte-trusted-html", {
      /** @param {string} html */
      createHTML: (html2) => {
        return html2;
      }
    })
  );
  function create_trusted_html(html2) {
    return (
      /** @type {string} */
      (policy == null ? void 0 : policy.createHTML(html2)) ?? html2
    );
  }
  function create_fragment_from_html(html2, trusted = false) {
    var elem = create_element("template");
    html2 = html2.replaceAll("<!>", "<!---->");
    elem.innerHTML = trusted ? create_trusted_html(html2) : html2;
    return elem.content;
  }
  function assign_nodes(start, end) {
    var effect2 = (
      /** @type {Effect} */
      active_effect
    );
    if (effect2.nodes === null) {
      effect2.nodes = { start, end, a: null, t: null };
    }
  }
  // @__NO_SIDE_EFFECTS__
  function from_html(content, flags2) {
    var is_fragment = (flags2 & TEMPLATE_FRAGMENT) !== 0;
    var use_import_node = (flags2 & TEMPLATE_USE_IMPORT_NODE) !== 0;
    var node;
    var has_start = !content.startsWith("<!>");
    return () => {
      if (node === void 0) {
        node = create_fragment_from_html(has_start ? content : "<!>" + content, true);
        if (!is_fragment) node = /** @type {TemplateNode} */
        /* @__PURE__ */ get_first_child(node);
      }
      var clone = (
        /** @type {TemplateNode} */
        use_import_node || is_firefox ? document.importNode(node, true) : node.cloneNode(true)
      );
      if (is_fragment) {
        var start = (
          /** @type {TemplateNode} */
          /* @__PURE__ */ get_first_child(clone)
        );
        var end = (
          /** @type {TemplateNode} */
          clone.lastChild
        );
        assign_nodes(start, end);
      } else {
        assign_nodes(clone, clone);
      }
      return clone;
    };
  }
  function comment() {
    var frag = document.createDocumentFragment();
    var start = document.createComment("");
    var anchor = create_text();
    frag.append(start, anchor);
    assign_nodes(start, anchor);
    return frag;
  }
  function append(anchor, dom) {
    if (anchor === null) {
      return;
    }
    anchor.before(
      /** @type {Node} */
      dom
    );
  }
  function set_text(text, value) {
    var str = value == null ? "" : typeof value === "object" ? value + "" : value;
    if (str !== (text.__t ?? (text.__t = text.nodeValue))) {
      text.__t = str;
      text.nodeValue = str + "";
    }
  }
  function mount(component, options) {
    return _mount(component, options);
  }
  const listeners = /* @__PURE__ */ new Map();
  function _mount(Component, { target, anchor, props = {}, events, context, intro = true }) {
    init_operations();
    var component = void 0;
    var unmount = component_root(() => {
      var anchor_node = anchor ?? target.appendChild(create_text());
      boundary(
        /** @type {TemplateNode} */
        anchor_node,
        {
          pending: () => {
          }
        },
        (anchor_node2) => {
          push({});
          var ctx = (
            /** @type {ComponentContext} */
            component_context
          );
          if (context) ctx.c = context;
          if (events) {
            props.$$events = events;
          }
          component = Component(anchor_node2, props) || {};
          pop();
        }
      );
      var registered_events = /* @__PURE__ */ new Set();
      var event_handle = (events2) => {
        for (var i2 = 0; i2 < events2.length; i2++) {
          var event_name = events2[i2];
          if (registered_events.has(event_name)) continue;
          registered_events.add(event_name);
          var passive = is_passive_event(event_name);
          for (const node of [target, document]) {
            var counts = listeners.get(node);
            if (counts === void 0) {
              counts = /* @__PURE__ */ new Map();
              listeners.set(node, counts);
            }
            var count = counts.get(event_name);
            if (count === void 0) {
              node.addEventListener(event_name, handle_event_propagation, { passive });
              counts.set(event_name, 1);
            } else {
              counts.set(event_name, count + 1);
            }
          }
        }
      };
      event_handle(array_from(all_registered_events));
      root_event_handles.add(event_handle);
      return () => {
        var _a2;
        for (var event_name of registered_events) {
          for (const node of [target, document]) {
            var counts = (
              /** @type {Map<string, number>} */
              listeners.get(node)
            );
            var count = (
              /** @type {number} */
              counts.get(event_name)
            );
            if (--count == 0) {
              node.removeEventListener(event_name, handle_event_propagation);
              counts.delete(event_name);
              if (counts.size === 0) {
                listeners.delete(node);
              }
            } else {
              counts.set(event_name, count);
            }
          }
        }
        root_event_handles.delete(event_handle);
        if (anchor_node !== anchor) {
          (_a2 = anchor_node.parentNode) == null ? void 0 : _a2.removeChild(anchor_node);
        }
      };
    });
    mounted_components.set(component, unmount);
    return component;
  }
  let mounted_components = /* @__PURE__ */ new WeakMap();
  class BranchManager {
    /**
     * @param {TemplateNode} anchor
     * @param {boolean} transition
     */
    constructor(anchor, transition = true) {
      /** @type {TemplateNode} */
      __publicField(this, "anchor");
      /** @type {Map<Batch, Key>} */
      __privateAdd(this, _batches, /* @__PURE__ */ new Map());
      /**
       * Map of keys to effects that are currently rendered in the DOM.
       * These effects are visible and actively part of the document tree.
       * Example:
       * ```
       * {#if condition}
       * 	foo
       * {:else}
       * 	bar
       * {/if}
       * ```
       * Can result in the entries `true->Effect` and `false->Effect`
       * @type {Map<Key, Effect>}
       */
      __privateAdd(this, _onscreen, /* @__PURE__ */ new Map());
      /**
       * Similar to #onscreen with respect to the keys, but contains branches that are not yet
       * in the DOM, because their insertion is deferred.
       * @type {Map<Key, Branch>}
       */
      __privateAdd(this, _offscreen, /* @__PURE__ */ new Map());
      /**
       * Keys of effects that are currently outroing
       * @type {Set<Key>}
       */
      __privateAdd(this, _outroing, /* @__PURE__ */ new Set());
      /**
       * Whether to pause (i.e. outro) on change, or destroy immediately.
       * This is necessary for `<svelte:element>`
       */
      __privateAdd(this, _transition, true);
      __privateAdd(this, _commit, () => {
        var batch = (
          /** @type {Batch} */
          current_batch
        );
        if (!__privateGet(this, _batches).has(batch)) return;
        var key = (
          /** @type {Key} */
          __privateGet(this, _batches).get(batch)
        );
        var onscreen = __privateGet(this, _onscreen).get(key);
        if (onscreen) {
          resume_effect(onscreen);
          __privateGet(this, _outroing).delete(key);
        } else {
          var offscreen = __privateGet(this, _offscreen).get(key);
          if (offscreen) {
            __privateGet(this, _onscreen).set(key, offscreen.effect);
            __privateGet(this, _offscreen).delete(key);
            offscreen.fragment.lastChild.remove();
            this.anchor.before(offscreen.fragment);
            onscreen = offscreen.effect;
          }
        }
        for (const [b2, k2] of __privateGet(this, _batches)) {
          __privateGet(this, _batches).delete(b2);
          if (b2 === batch) {
            break;
          }
          const offscreen2 = __privateGet(this, _offscreen).get(k2);
          if (offscreen2) {
            destroy_effect(offscreen2.effect);
            __privateGet(this, _offscreen).delete(k2);
          }
        }
        for (const [k2, effect2] of __privateGet(this, _onscreen)) {
          if (k2 === key || __privateGet(this, _outroing).has(k2)) continue;
          const on_destroy = () => {
            const keys = Array.from(__privateGet(this, _batches).values());
            if (keys.includes(k2)) {
              var fragment = document.createDocumentFragment();
              move_effect(effect2, fragment);
              fragment.append(create_text());
              __privateGet(this, _offscreen).set(k2, { effect: effect2, fragment });
            } else {
              destroy_effect(effect2);
            }
            __privateGet(this, _outroing).delete(k2);
            __privateGet(this, _onscreen).delete(k2);
          };
          if (__privateGet(this, _transition) || !onscreen) {
            __privateGet(this, _outroing).add(k2);
            pause_effect(effect2, on_destroy, false);
          } else {
            on_destroy();
          }
        }
      });
      /**
       * @param {Batch} batch
       */
      __privateAdd(this, _discard, (batch) => {
        __privateGet(this, _batches).delete(batch);
        const keys = Array.from(__privateGet(this, _batches).values());
        for (const [k2, branch2] of __privateGet(this, _offscreen)) {
          if (!keys.includes(k2)) {
            destroy_effect(branch2.effect);
            __privateGet(this, _offscreen).delete(k2);
          }
        }
      });
      this.anchor = anchor;
      __privateSet(this, _transition, transition);
    }
    /**
     *
     * @param {any} key
     * @param {null | ((target: TemplateNode) => void)} fn
     */
    ensure(key, fn) {
      var batch = (
        /** @type {Batch} */
        current_batch
      );
      if (fn && !__privateGet(this, _onscreen).has(key) && !__privateGet(this, _offscreen).has(key)) {
        {
          __privateGet(this, _onscreen).set(
            key,
            branch(() => fn(this.anchor))
          );
        }
      }
      __privateGet(this, _batches).set(batch, key);
      {
        __privateGet(this, _commit).call(this);
      }
    }
  }
  _batches = new WeakMap();
  _onscreen = new WeakMap();
  _offscreen = new WeakMap();
  _outroing = new WeakMap();
  _transition = new WeakMap();
  _commit = new WeakMap();
  _discard = new WeakMap();
  function if_block(node, fn, elseif = false) {
    var branches = new BranchManager(node);
    var flags2 = elseif ? EFFECT_TRANSPARENT : 0;
    function update_branch(key, fn2) {
      branches.ensure(key, fn2);
    }
    block(() => {
      var has_branch = false;
      fn((fn2, key = 0) => {
        has_branch = true;
        update_branch(key, fn2);
      });
      if (!has_branch) {
        update_branch(false, null);
      }
    }, flags2);
  }
  function index(_2, i2) {
    return i2;
  }
  function pause_effects(state2, to_destroy, controlled_anchor) {
    var transitions = [];
    var length = to_destroy.length;
    var group;
    var remaining = to_destroy.length;
    for (var i2 = 0; i2 < length; i2++) {
      let effect2 = to_destroy[i2];
      pause_effect(
        effect2,
        () => {
          if (group) {
            group.pending.delete(effect2);
            group.done.add(effect2);
            if (group.pending.size === 0) {
              var groups = (
                /** @type {Set<EachOutroGroup>} */
                state2.outrogroups
              );
              destroy_effects(array_from(group.done));
              groups.delete(group);
              if (groups.size === 0) {
                state2.outrogroups = null;
              }
            }
          } else {
            remaining -= 1;
          }
        },
        false
      );
    }
    if (remaining === 0) {
      var fast_path = transitions.length === 0 && controlled_anchor !== null;
      if (fast_path) {
        var anchor = (
          /** @type {Element} */
          controlled_anchor
        );
        var parent_node = (
          /** @type {Element} */
          anchor.parentNode
        );
        clear_text_content(parent_node);
        parent_node.append(anchor);
        state2.items.clear();
      }
      destroy_effects(to_destroy, !fast_path);
    } else {
      group = {
        pending: new Set(to_destroy),
        done: /* @__PURE__ */ new Set()
      };
      (state2.outrogroups ?? (state2.outrogroups = /* @__PURE__ */ new Set())).add(group);
    }
  }
  function destroy_effects(to_destroy, remove_dom = true) {
    for (var i2 = 0; i2 < to_destroy.length; i2++) {
      destroy_effect(to_destroy[i2], remove_dom);
    }
  }
  var offscreen_anchor;
  function each(node, flags2, get_collection, get_key, render_fn2, fallback_fn = null) {
    var anchor = node;
    var items = /* @__PURE__ */ new Map();
    var is_controlled = (flags2 & EACH_IS_CONTROLLED) !== 0;
    if (is_controlled) {
      var parent_node = (
        /** @type {Element} */
        node
      );
      anchor = parent_node.appendChild(create_text());
    }
    var fallback = null;
    var each_array = /* @__PURE__ */ derived_safe_equal(() => {
      var collection = get_collection();
      return is_array(collection) ? collection : collection == null ? [] : array_from(collection);
    });
    var array;
    var first_run = true;
    function commit() {
      state2.fallback = fallback;
      reconcile(state2, array, anchor, flags2, get_key);
      if (fallback !== null) {
        if (array.length === 0) {
          if ((fallback.f & EFFECT_OFFSCREEN) === 0) {
            resume_effect(fallback);
          } else {
            fallback.f ^= EFFECT_OFFSCREEN;
            move(fallback, null, anchor);
          }
        } else {
          pause_effect(fallback, () => {
            fallback = null;
          });
        }
      }
    }
    var effect2 = block(() => {
      array = /** @type {V[]} */
      get(each_array);
      var length = array.length;
      var keys = /* @__PURE__ */ new Set();
      for (var index2 = 0; index2 < length; index2 += 1) {
        var value = array[index2];
        var key = get_key(value, index2);
        var item = first_run ? null : items.get(key);
        if (item) {
          if (item.v) internal_set(item.v, value);
          if (item.i) internal_set(item.i, index2);
        } else {
          item = create_item(
            items,
            first_run ? anchor : offscreen_anchor ?? (offscreen_anchor = create_text()),
            value,
            key,
            index2,
            render_fn2,
            flags2,
            get_collection
          );
          if (!first_run) {
            item.e.f |= EFFECT_OFFSCREEN;
          }
          items.set(key, item);
        }
        keys.add(key);
      }
      if (length === 0 && fallback_fn && !fallback) {
        if (first_run) {
          fallback = branch(() => fallback_fn(anchor));
        } else {
          fallback = branch(() => fallback_fn(offscreen_anchor ?? (offscreen_anchor = create_text())));
          fallback.f |= EFFECT_OFFSCREEN;
        }
      }
      if (length > keys.size) {
        {
          each_key_duplicate();
        }
      }
      if (!first_run) {
        {
          commit();
        }
      }
      get(each_array);
    });
    var state2 = { effect: effect2, items, outrogroups: null, fallback };
    first_run = false;
  }
  function skip_to_branch(effect2) {
    while (effect2 !== null && (effect2.f & BRANCH_EFFECT) === 0) {
      effect2 = effect2.next;
    }
    return effect2;
  }
  function reconcile(state2, array, anchor, flags2, get_key) {
    var _a2, _b2, _c2, _d, _e, _f, _g, _h, _i;
    var is_animated = (flags2 & EACH_IS_ANIMATED) !== 0;
    var length = array.length;
    var items = state2.items;
    var current = skip_to_branch(state2.effect.first);
    var seen;
    var prev = null;
    var to_animate;
    var matched = [];
    var stashed = [];
    var value;
    var key;
    var effect2;
    var i2;
    if (is_animated) {
      for (i2 = 0; i2 < length; i2 += 1) {
        value = array[i2];
        key = get_key(value, i2);
        effect2 = /** @type {EachItem} */
        items.get(key).e;
        if ((effect2.f & EFFECT_OFFSCREEN) === 0) {
          (_b2 = (_a2 = effect2.nodes) == null ? void 0 : _a2.a) == null ? void 0 : _b2.measure();
          (to_animate ?? (to_animate = /* @__PURE__ */ new Set())).add(effect2);
        }
      }
    }
    for (i2 = 0; i2 < length; i2 += 1) {
      value = array[i2];
      key = get_key(value, i2);
      effect2 = /** @type {EachItem} */
      items.get(key).e;
      if (state2.outrogroups !== null) {
        for (const group of state2.outrogroups) {
          group.pending.delete(effect2);
          group.done.delete(effect2);
        }
      }
      if ((effect2.f & EFFECT_OFFSCREEN) !== 0) {
        effect2.f ^= EFFECT_OFFSCREEN;
        if (effect2 === current) {
          move(effect2, null, anchor);
        } else {
          var next = prev ? prev.next : current;
          if (effect2 === state2.effect.last) {
            state2.effect.last = effect2.prev;
          }
          if (effect2.prev) effect2.prev.next = effect2.next;
          if (effect2.next) effect2.next.prev = effect2.prev;
          link(state2, prev, effect2);
          link(state2, effect2, next);
          move(effect2, next, anchor);
          prev = effect2;
          matched = [];
          stashed = [];
          current = skip_to_branch(prev.next);
          continue;
        }
      }
      if ((effect2.f & INERT) !== 0) {
        resume_effect(effect2);
        if (is_animated) {
          (_d = (_c2 = effect2.nodes) == null ? void 0 : _c2.a) == null ? void 0 : _d.unfix();
          (to_animate ?? (to_animate = /* @__PURE__ */ new Set())).delete(effect2);
        }
      }
      if (effect2 !== current) {
        if (seen !== void 0 && seen.has(effect2)) {
          if (matched.length < stashed.length) {
            var start = stashed[0];
            var j2;
            prev = start.prev;
            var a2 = matched[0];
            var b2 = matched[matched.length - 1];
            for (j2 = 0; j2 < matched.length; j2 += 1) {
              move(matched[j2], start, anchor);
            }
            for (j2 = 0; j2 < stashed.length; j2 += 1) {
              seen.delete(stashed[j2]);
            }
            link(state2, a2.prev, b2.next);
            link(state2, prev, a2);
            link(state2, b2, start);
            current = start;
            prev = b2;
            i2 -= 1;
            matched = [];
            stashed = [];
          } else {
            seen.delete(effect2);
            move(effect2, current, anchor);
            link(state2, effect2.prev, effect2.next);
            link(state2, effect2, prev === null ? state2.effect.first : prev.next);
            link(state2, prev, effect2);
            prev = effect2;
          }
          continue;
        }
        matched = [];
        stashed = [];
        while (current !== null && current !== effect2) {
          (seen ?? (seen = /* @__PURE__ */ new Set())).add(current);
          stashed.push(current);
          current = skip_to_branch(current.next);
        }
        if (current === null) {
          continue;
        }
      }
      if ((effect2.f & EFFECT_OFFSCREEN) === 0) {
        matched.push(effect2);
      }
      prev = effect2;
      current = skip_to_branch(effect2.next);
    }
    if (state2.outrogroups !== null) {
      for (const group of state2.outrogroups) {
        if (group.pending.size === 0) {
          destroy_effects(array_from(group.done));
          (_e = state2.outrogroups) == null ? void 0 : _e.delete(group);
        }
      }
      if (state2.outrogroups.size === 0) {
        state2.outrogroups = null;
      }
    }
    if (current !== null || seen !== void 0) {
      var to_destroy = [];
      if (seen !== void 0) {
        for (effect2 of seen) {
          if ((effect2.f & INERT) === 0) {
            to_destroy.push(effect2);
          }
        }
      }
      while (current !== null) {
        if ((current.f & INERT) === 0 && current !== state2.fallback) {
          to_destroy.push(current);
        }
        current = skip_to_branch(current.next);
      }
      var destroy_length = to_destroy.length;
      if (destroy_length > 0) {
        var controlled_anchor = (flags2 & EACH_IS_CONTROLLED) !== 0 && length === 0 ? anchor : null;
        if (is_animated) {
          for (i2 = 0; i2 < destroy_length; i2 += 1) {
            (_g = (_f = to_destroy[i2].nodes) == null ? void 0 : _f.a) == null ? void 0 : _g.measure();
          }
          for (i2 = 0; i2 < destroy_length; i2 += 1) {
            (_i = (_h = to_destroy[i2].nodes) == null ? void 0 : _h.a) == null ? void 0 : _i.fix();
          }
        }
        pause_effects(state2, to_destroy, controlled_anchor);
      }
    }
    if (is_animated) {
      queue_micro_task(() => {
        var _a3, _b3;
        if (to_animate === void 0) return;
        for (effect2 of to_animate) {
          (_b3 = (_a3 = effect2.nodes) == null ? void 0 : _a3.a) == null ? void 0 : _b3.apply();
        }
      });
    }
  }
  function create_item(items, anchor, value, key, index2, render_fn2, flags2, get_collection) {
    var v2 = (flags2 & EACH_ITEM_REACTIVE) !== 0 ? (flags2 & EACH_ITEM_IMMUTABLE) === 0 ? /* @__PURE__ */ mutable_source(value, false, false) : source(value) : null;
    var i2 = (flags2 & EACH_INDEX_REACTIVE) !== 0 ? source(index2) : null;
    return {
      v: v2,
      i: i2,
      e: branch(() => {
        render_fn2(anchor, v2 ?? value, i2 ?? index2, get_collection);
        return () => {
          items.delete(key);
        };
      })
    };
  }
  function move(effect2, next, anchor) {
    if (!effect2.nodes) return;
    var node = effect2.nodes.start;
    var end = effect2.nodes.end;
    var dest = next && (next.f & EFFECT_OFFSCREEN) === 0 ? (
      /** @type {EffectNodes} */
      next.nodes.start
    ) : anchor;
    while (node !== null) {
      var next_node = (
        /** @type {TemplateNode} */
        /* @__PURE__ */ get_next_sibling(node)
      );
      dest.before(node);
      if (node === end) {
        return;
      }
      node = next_node;
    }
  }
  function link(state2, prev, next) {
    if (prev === null) {
      state2.effect.first = next;
    } else {
      prev.next = next;
    }
    if (next === null) {
      state2.effect.last = prev;
    } else {
      next.prev = prev;
    }
  }
  function html(node, get_value, svg = false, mathml = false, skip_warning = false) {
    var anchor = node;
    var value = "";
    template_effect(() => {
      var effect2 = (
        /** @type {Effect} */
        active_effect
      );
      if (value === (value = get_value() ?? "")) {
        return;
      }
      if (effect2.nodes !== null) {
        remove_effect_dom(
          effect2.nodes.start,
          /** @type {TemplateNode} */
          effect2.nodes.end
        );
        effect2.nodes = null;
      }
      if (value === "") return;
      var html2 = value + "";
      if (svg) html2 = `<svg>${html2}</svg>`;
      else if (mathml) html2 = `<math>${html2}</math>`;
      var node2 = create_fragment_from_html(html2);
      if (svg || mathml) {
        node2 = /** @type {Element} */
        /* @__PURE__ */ get_first_child(node2);
      }
      assign_nodes(
        /** @type {TemplateNode} */
        /* @__PURE__ */ get_first_child(node2),
        /** @type {TemplateNode} */
        node2.lastChild
      );
      if (svg || mathml) {
        while (/* @__PURE__ */ get_first_child(node2)) {
          anchor.before(
            /** @type {TemplateNode} */
            /* @__PURE__ */ get_first_child(node2)
          );
        }
      } else {
        anchor.before(node2);
      }
    });
  }
  function r$6(e2) {
    var t2, f2, n2 = "";
    if ("string" == typeof e2 || "number" == typeof e2) n2 += e2;
    else if ("object" == typeof e2) if (Array.isArray(e2)) {
      var o2 = e2.length;
      for (t2 = 0; t2 < o2; t2++) e2[t2] && (f2 = r$6(e2[t2])) && (n2 && (n2 += " "), n2 += f2);
    } else for (f2 in e2) e2[f2] && (n2 && (n2 += " "), n2 += f2);
    return n2;
  }
  function clsx$1() {
    for (var e2, t2, f2 = 0, n2 = "", o2 = arguments.length; f2 < o2; f2++) (e2 = arguments[f2]) && (t2 = r$6(e2)) && (n2 && (n2 += " "), n2 += t2);
    return n2;
  }
  function clsx(value) {
    if (typeof value === "object") {
      return clsx$1(value);
    } else {
      return value ?? "";
    }
  }
  function to_class(value, hash, directives) {
    var classname = value == null ? "" : "" + value;
    if (hash) {
      classname = classname ? classname + " " + hash : hash;
    }
    return classname === "" ? null : classname;
  }
  function set_class(dom, is_html, value, hash, prev_classes, next_classes) {
    var prev = dom.__className;
    if (prev !== value || prev === void 0) {
      var next_class_name = to_class(value, hash);
      {
        if (next_class_name == null) {
          dom.removeAttribute("class");
        } else {
          dom.className = next_class_name;
        }
      }
      dom.__className = value;
    }
    return next_classes;
  }
  const IS_CUSTOM_ELEMENT = Symbol("is custom element");
  const IS_HTML = Symbol("is html");
  function set_attribute(element, attribute, value, skip_warning) {
    var attributes = get_attributes(element);
    if (attributes[attribute] === (attributes[attribute] = value)) return;
    if (attribute === "loading") {
      element[LOADING_ATTR_SYMBOL] = value;
    }
    if (value == null) {
      element.removeAttribute(attribute);
    } else if (typeof value !== "string" && get_setters(element).includes(attribute)) {
      element[attribute] = value;
    } else {
      element.setAttribute(attribute, value);
    }
  }
  function get_attributes(element) {
    return (
      /** @type {Record<string | symbol, unknown>} **/
      // @ts-expect-error
      element.__attributes ?? (element.__attributes = {
        [IS_CUSTOM_ELEMENT]: element.nodeName.includes("-"),
        [IS_HTML]: element.namespaceURI === NAMESPACE_HTML
      })
    );
  }
  var setters_cache = /* @__PURE__ */ new Map();
  function get_setters(element) {
    var cache_key = element.getAttribute("is") || element.nodeName;
    var setters = setters_cache.get(cache_key);
    if (setters) return setters;
    setters_cache.set(cache_key, setters = []);
    var descriptors;
    var proto = element;
    var element_proto = Element.prototype;
    while (element_proto !== proto) {
      descriptors = get_descriptors(proto);
      for (var key in descriptors) {
        if (descriptors[key].set) {
          setters.push(key);
        }
      }
      proto = get_prototype_of(proto);
    }
    return setters;
  }
  function bind_value(input, get2, set2 = get2) {
    var batches2 = /* @__PURE__ */ new WeakSet();
    listen_to_event_and_reset_event(input, "input", async (is_reset) => {
      var value = is_reset ? input.defaultValue : input.value;
      value = is_numberlike_input(input) ? to_number(value) : value;
      set2(value);
      if (current_batch !== null) {
        batches2.add(current_batch);
      }
      await tick();
      if (value !== (value = get2())) {
        var start = input.selectionStart;
        var end = input.selectionEnd;
        var length = input.value.length;
        input.value = value ?? "";
        if (end !== null) {
          var new_length = input.value.length;
          if (start === end && end === length && new_length > length) {
            input.selectionStart = new_length;
            input.selectionEnd = new_length;
          } else {
            input.selectionStart = start;
            input.selectionEnd = Math.min(end, new_length);
          }
        }
      }
    });
    if (
      // If we are hydrating and the value has since changed,
      // then use the updated value from the input instead.
      // If defaultValue is set, then value == defaultValue
      // TODO Svelte 6: remove input.value check and set to empty string?
      untrack(get2) == null && input.value
    ) {
      set2(is_numberlike_input(input) ? to_number(input.value) : input.value);
      if (current_batch !== null) {
        batches2.add(current_batch);
      }
    }
    render_effect(() => {
      var value = get2();
      if (input === document.activeElement) {
        var batch = (
          /** @type {Batch} */
          previous_batch ?? current_batch
        );
        if (batches2.has(batch)) {
          return;
        }
      }
      if (is_numberlike_input(input) && value === to_number(input.value)) {
        return;
      }
      if (input.type === "date" && !value && !input.value) {
        return;
      }
      if (value !== input.value) {
        input.value = value ?? "";
      }
    });
  }
  const pending = /* @__PURE__ */ new Set();
  function bind_group(inputs, group_index, input, get2, set2 = get2) {
    var is_checkbox = input.getAttribute("type") === "checkbox";
    var binding_group = inputs;
    if (group_index !== null) {
      for (var index2 of group_index) {
        binding_group = binding_group[index2] ?? (binding_group[index2] = []);
      }
    }
    binding_group.push(input);
    listen_to_event_and_reset_event(
      input,
      "change",
      () => {
        var value = input.__value;
        if (is_checkbox) {
          value = get_binding_group_value(binding_group, value, input.checked);
        }
        set2(value);
      },
      // TODO better default value handling
      () => set2(is_checkbox ? [] : null)
    );
    render_effect(() => {
      var value = get2();
      if (is_checkbox) {
        value = value || [];
        input.checked = value.includes(input.__value);
      } else {
        input.checked = is(input.__value, value);
      }
    });
    teardown(() => {
      var index3 = binding_group.indexOf(input);
      if (index3 !== -1) {
        binding_group.splice(index3, 1);
      }
    });
    if (!pending.has(binding_group)) {
      pending.add(binding_group);
      queue_micro_task(() => {
        binding_group.sort((a2, b2) => a2.compareDocumentPosition(b2) === 4 ? -1 : 1);
        pending.delete(binding_group);
      });
    }
    queue_micro_task(() => {
    });
  }
  function bind_checked(input, get2, set2 = get2) {
    listen_to_event_and_reset_event(input, "change", (is_reset) => {
      var value = is_reset ? input.defaultChecked : input.checked;
      set2(value);
    });
    if (
      // If we are hydrating and the value has since changed,
      // then use the update value from the input instead.
      // If defaultChecked is set, then checked == defaultChecked
      untrack(get2) == null
    ) {
      set2(input.checked);
    }
    render_effect(() => {
      var value = get2();
      input.checked = Boolean(value);
    });
  }
  function get_binding_group_value(group, __value, checked) {
    var value = /* @__PURE__ */ new Set();
    for (var i2 = 0; i2 < group.length; i2 += 1) {
      if (group[i2].checked) {
        value.add(group[i2].__value);
      }
    }
    if (!checked) {
      value.delete(__value);
    }
    return Array.from(value);
  }
  function is_numberlike_input(input) {
    var type = input.type;
    return type === "number" || type === "range";
  }
  function to_number(value) {
    return value === "" ? null : +value;
  }
  function bind_prop(props, prop2, value) {
    var desc = get_descriptor(props, prop2);
    if (desc && desc.set) {
      props[prop2] = value;
      teardown(() => {
        props[prop2] = null;
      });
    }
  }
  function is_bound_this(bound_value, element_or_component) {
    return bound_value === element_or_component || (bound_value == null ? void 0 : bound_value[STATE_SYMBOL]) === element_or_component;
  }
  function bind_this(element_or_component = {}, update, get_value, get_parts) {
    effect(() => {
      var old_parts;
      var parts;
      render_effect(() => {
        old_parts = parts;
        parts = [];
        untrack(() => {
          if (element_or_component !== get_value(...parts)) {
            update(element_or_component, ...parts);
            if (old_parts && is_bound_this(get_value(...old_parts), element_or_component)) {
              update(null, ...old_parts);
            }
          }
        });
      });
      return () => {
        queue_micro_task(() => {
          if (parts && is_bound_this(get_value(...parts), element_or_component)) {
            update(null, ...parts);
          }
        });
      };
    });
    return element_or_component;
  }
  function init(immutable = false) {
    const context = (
      /** @type {ComponentContextLegacy} */
      component_context
    );
    const callbacks = context.l.u;
    if (!callbacks) return;
    let props = () => deep_read_state(context.s);
    if (immutable) {
      let version = 0;
      let prev = (
        /** @type {Record<string, any>} */
        {}
      );
      const d2 = /* @__PURE__ */ derived(() => {
        let changed = false;
        const props2 = context.s;
        for (const key in props2) {
          if (props2[key] !== prev[key]) {
            prev[key] = props2[key];
            changed = true;
          }
        }
        if (changed) version++;
        return version;
      });
      props = () => get(d2);
    }
    if (callbacks.b.length) {
      user_pre_effect(() => {
        observe_all(context, props);
        run_all(callbacks.b);
      });
    }
    user_effect(() => {
      const fns = untrack(() => callbacks.m.map(run));
      return () => {
        for (const fn of fns) {
          if (typeof fn === "function") {
            fn();
          }
        }
      };
    });
    if (callbacks.a.length) {
      user_effect(() => {
        observe_all(context, props);
        run_all(callbacks.a);
      });
    }
  }
  function observe_all(context, props) {
    if (context.l.s) {
      for (const signal of context.l.s) get(signal);
    }
    props();
  }
  let is_store_binding = false;
  function capture_store_binding(fn) {
    var previous_is_store_binding = is_store_binding;
    try {
      is_store_binding = false;
      return [fn(), is_store_binding];
    } finally {
      is_store_binding = previous_is_store_binding;
    }
  }
  function prop(props, key, flags2, fallback) {
    var _a2;
    var runes = !legacy_mode_flag || (flags2 & PROPS_IS_RUNES) !== 0;
    var bindable = (flags2 & PROPS_IS_BINDABLE) !== 0;
    var lazy = (flags2 & PROPS_IS_LAZY_INITIAL) !== 0;
    var fallback_value = (
      /** @type {V} */
      fallback
    );
    var fallback_dirty = true;
    var get_fallback = () => {
      if (fallback_dirty) {
        fallback_dirty = false;
        fallback_value = lazy ? untrack(
          /** @type {() => V} */
          fallback
        ) : (
          /** @type {V} */
          fallback
        );
      }
      return fallback_value;
    };
    var setter;
    if (bindable) {
      var is_entry_props = STATE_SYMBOL in props || LEGACY_PROPS in props;
      setter = ((_a2 = get_descriptor(props, key)) == null ? void 0 : _a2.set) ?? (is_entry_props && key in props ? (v2) => props[key] = v2 : void 0);
    }
    var initial_value;
    var is_store_sub = false;
    if (bindable) {
      [initial_value, is_store_sub] = capture_store_binding(() => (
        /** @type {V} */
        props[key]
      ));
    } else {
      initial_value = /** @type {V} */
      props[key];
    }
    if (initial_value === void 0 && fallback !== void 0) {
      initial_value = get_fallback();
      if (setter) {
        if (runes) props_invalid_value();
        setter(initial_value);
      }
    }
    var getter;
    if (runes) {
      getter = () => {
        var value = (
          /** @type {V} */
          props[key]
        );
        if (value === void 0) return get_fallback();
        fallback_dirty = true;
        return value;
      };
    } else {
      getter = () => {
        var value = (
          /** @type {V} */
          props[key]
        );
        if (value !== void 0) {
          fallback_value = /** @type {V} */
          void 0;
        }
        return value === void 0 ? fallback_value : value;
      };
    }
    if (runes && (flags2 & PROPS_IS_UPDATED) === 0) {
      return getter;
    }
    if (setter) {
      var legacy_parent = props.$$legacy;
      return (
        /** @type {() => V} */
        (function(value, mutation) {
          if (arguments.length > 0) {
            if (!runes || !mutation || legacy_parent || is_store_sub) {
              setter(mutation ? getter() : value);
            }
            return value;
          }
          return getter();
        })
      );
    }
    var overridden = false;
    var d2 = ((flags2 & PROPS_IS_IMMUTABLE) !== 0 ? derived : derived_safe_equal)(() => {
      overridden = false;
      return getter();
    });
    if (bindable) get(d2);
    var parent_effect = (
      /** @type {Effect} */
      active_effect
    );
    return (
      /** @type {() => V} */
      (function(value, mutation) {
        if (arguments.length > 0) {
          const new_value = mutation ? get(d2) : runes && bindable ? proxy(value) : value;
          set(d2, new_value);
          overridden = true;
          if (fallback_value !== void 0) {
            fallback_value = new_value;
          }
          return value;
        }
        if (is_destroying_effect && overridden || (parent_effect.f & DESTROYED) !== 0) {
          return d2.v;
        }
        return get(d2);
      })
    );
  }
  function onMount(fn) {
    if (component_context === null) {
      lifecycle_outside_component();
    }
    if (legacy_mode_flag && component_context.l !== null) {
      init_update_callbacks(component_context).m.push(fn);
    } else {
      user_effect(() => {
        const cleanup = untrack(fn);
        if (typeof cleanup === "function") return (
          /** @type {() => void} */
          cleanup
        );
      });
    }
  }
  function onDestroy(fn) {
    if (component_context === null) {
      lifecycle_outside_component();
    }
    onMount(() => () => untrack(fn));
  }
  function init_update_callbacks(context) {
    var l2 = (
      /** @type {ComponentContextLegacy} */
      context.l
    );
    return l2.u ?? (l2.u = { a: [], b: [], m: [] });
  }
  const PUBLIC_VERSION = "5";
  if (typeof window !== "undefined") {
    ((_b = window.__svelte ?? (window.__svelte = {})).v ?? (_b.v = /* @__PURE__ */ new Set())).add(PUBLIC_VERSION);
  }
  var _GM_addStyle = /* @__PURE__ */ (() => typeof GM_addStyle != "undefined" ? GM_addStyle : void 0)();
  var _GM_download = /* @__PURE__ */ (() => typeof GM_download != "undefined" ? GM_download : void 0)();
  var _GM_getValue = /* @__PURE__ */ (() => typeof GM_getValue != "undefined" ? GM_getValue : void 0)();
  var _GM_setClipboard = /* @__PURE__ */ (() => typeof GM_setClipboard != "undefined" ? GM_setClipboard : void 0)();
  var _GM_setValue = /* @__PURE__ */ (() => typeof GM_setValue != "undefined" ? GM_setValue : void 0)();
  var _GM_xmlhttpRequest = /* @__PURE__ */ (() => typeof GM_xmlhttpRequest != "undefined" ? GM_xmlhttpRequest : void 0)();
  const Page = siteList.find((v2) => v2.domainReg.test(location.href));
  if (!Page) {
    throw new Error(`domain not matched`);
  }
  if ((_c = Page.excludePages) == null ? void 0 : _c.find((page) => location.pathname.includes(page))) {
    throw new Error(`excluded Page`);
  }
  let rawItemsEl;
  if (Page.itemSelector) {
    rawItemsEl = document.body.querySelectorAll(Page.itemSelector);
  } else if (Page.itemSelectorObj) {
    for (const [pageType, itemSelector] of Object.entries(Page.itemSelectorObj)) {
      rawItemsEl = document.body.querySelectorAll(itemSelector);
      if (rawItemsEl.length > 0) {
        Page.pageType = pageType;
        Page.itemSelector = itemSelector;
        break;
      }
    }
  }
  if (!rawItemsEl || rawItemsEl.length < 1) {
    throw new Error("No items found");
  }
  Page.rawItemsEl = rawItemsEl;
  if (Page.gridSelector) {
    Page.rawGridEl = document.body.querySelector(Page.gridSelector);
  } else {
    Page.rawGridEl = Page.rawItemsEl[0].parentElement;
  }
  document.body.setAttribute(Page.name, "");
  function isMobile() {
    return /Mobi|Android|iPhone|iPad|iPod/i.test(navigator.userAgent) || "ontouchstart" in window || navigator.maxTouchPoints > 0;
  }
  const defaultConfig = {
    autoPage: false,
    pageHistory: false,
    toolbar: true,
    autoHide: !isMobile(),
    previewSite: JAVFREE,
    linkUrl: "https://missav.ws/",
    avInfo: false,
    newWindow: true,
    halfImg: false,
    fullTitle: false,
    clickToCopy: true,
    autoColumn: true,
    columnNumFull: 3,
    columnNumHalf: 4
  };
  const missav = {
    autoPage: false,
    pageHistory: false,
    toolbar: true,
    uncensoredFilter: false
  };
  const av123 = { autoPage: false, pageHistory: false, toolbar: true };
  const configValueName = "config";
  if (Page.name == MISSAV) {
    Page.defaultConfig = missav;
    Page.configValueName = configValueName + "-" + Page.name;
  } else if (Page.name == AV123) {
    Page.defaultConfig = av123;
    Page.configValueName = configValueName + "-" + Page.name;
  } else {
    if (Page.name == JAVDB) {
      defaultConfig.maxWidth = true;
    }
    Page.defaultConfig = defaultConfig;
    Page.configValueName = configValueName;
  }
  function merge(target, source2) {
    const result = {};
    for (const key in target) {
      result[key] = source2.hasOwnProperty(key) ? source2[key] : target[key];
    }
    return result;
  }
  let obj = merge(Page.defaultConfig, _GM_getValue(Page.configValueName, {}));
  const config = proxy(obj);
  const e$6 = "undefined" != typeof window, i$6 = e$6 && !("onscroll" in window) || "undefined" != typeof navigator && /(gle|ing|ro)bot|crawl|spider/i.test(navigator.userAgent), n$7 = e$6 && window.devicePixelRatio > 1;
  const a$7 = { elements_selector: ".lazy", container: i$6 || e$6 ? document : null, threshold: 300, thresholds: null, data_src: "src", data_srcset: "srcset", data_sizes: "sizes", data_bg: "bg", data_bg_hidpi: "bg-hidpi", data_bg_multi: "bg-multi", data_bg_multi_hidpi: "bg-multi-hidpi", data_bg_set: "bg-set", data_poster: "poster", class_applied: "applied", class_loading: "loading", class_loaded: "loaded", class_error: "error", class_entered: "entered", class_exited: "exited", unobserve_completed: true, unobserve_entered: false, cancel_on_exit: true, callback_enter: null, callback_exit: null, callback_applied: null, callback_loading: null, callback_loaded: null, callback_error: null, callback_finish: null, callback_cancel: null, use_native: false, restore_on_error: false }, t$8 = (l2) => Object.assign({}, a$7, l2);
  const t$7 = function(t2, e2) {
    let n2;
    const i2 = "LazyLoad::Initialized", o2 = new t2(e2);
    try {
      n2 = new CustomEvent(i2, { detail: { instance: o2 } });
    } catch (t3) {
      n2 = document.createEvent("CustomEvent"), n2.initCustomEvent(i2, false, false, { instance: o2 });
    }
    window.dispatchEvent(n2);
  }, e$5 = (e2, n2) => {
    if (n2) if (n2.length) for (let i2, o2 = 0; i2 = n2[o2]; o2 += 1) t$7(e2, i2);
    else t$7(e2, n2);
  };
  const s$4 = "src", t$6 = "srcset", r$5 = "sizes", e$4 = "poster", a$6 = "llOriginalAttrs", c$3 = "data";
  const e$3 = "loading", d$3 = "loaded", o$5 = "applied", r$4 = "entered", a$5 = "error", n$6 = "native";
  const r$3 = "data-", s$3 = "ll-status", o$4 = (t2, e2) => t2.getAttribute(r$3 + e2), i$5 = (t2, e2, l2) => {
    const u2 = r$3 + e2;
    null !== l2 ? t2.setAttribute(u2, l2) : t2.removeAttribute(u2);
  }, a$4 = (t2) => o$4(t2, s$3), m$4 = (t2, e2) => i$5(t2, s$3, e2), b$2 = (t2) => m$4(t2, null), A$1 = (t2) => null === a$4(t2), c$2 = (t2) => a$4(t2) === e$3, d$2 = (t2) => a$4(t2) === a$5, f$2 = (e2) => a$4(e2) === n$6, p$1 = [e$3, d$3, o$5, a$5], x$2 = (t2) => p$1.indexOf(a$4(t2)) >= 0;
  const o$3 = (o2, t2, i2, n2) => {
    o2 && "function" == typeof o2 && (void 0 === n2 ? void 0 === i2 ? o2(t2) : o2(t2, i2) : o2(t2, i2, n2));
  };
  const o$2 = (o2, t2) => {
    e$6 && "" !== t2 && o2.classList.add(t2);
  }, t$5 = (o2, t2) => {
    e$6 && "" !== t2 && o2.classList.remove(t2);
  };
  const e$2 = (e2) => {
    e2.llTempImage = document.createElement("IMG");
  }, l$2 = (e2) => {
    delete e2.llTempImage;
  }, m$3 = (e2) => e2.llTempImage;
  const e$1 = (e2, n2) => {
    if (!n2) return;
    const r2 = n2._observer;
    r2 && r2.unobserve(e2);
  }, n$5 = (e2) => {
    e2.disconnect();
  }, r$2 = (n2, r2, o2) => {
    r2.unobserve_entered && e$1(n2, o2);
  };
  const o$1 = (o2, t2) => {
    o2 && (o2.loadingCount += t2);
  }, t$4 = (o2) => {
    o2 && (o2.toLoadCount -= 1);
  }, n$4 = (o2, t2) => {
    o2 && (o2.toLoadCount = t2);
  }, a$3 = (o2) => o2.loadingCount > 0, d$1 = (o2) => o2.toLoadCount > 0;
  const e = (e2) => {
    let t2 = [];
    for (let r2, a2 = 0; r2 = e2.children[a2]; a2 += 1) "SOURCE" === r2.tagName && t2.push(r2);
    return t2;
  }, t$3 = (t2, r2) => {
    const a2 = t2.parentNode;
    a2 && "PICTURE" === a2.tagName && e(a2).forEach(r2);
  }, r$1 = (t2, r2) => {
    e(t2).forEach(r2);
  };
  const c$1 = [s$4], s$2 = [s$4, e$4], u$1 = [s$4, t$6, r$5], g$3 = [c$3], b$1 = (e2) => !!e2[a$6], i$4 = (e2) => e2[a$6], m$2 = (e2) => delete e2[a$6], f$1 = (e2, r2) => {
    if (b$1(e2)) return;
    const o2 = {};
    r2.forEach(((t2) => {
      o2[t2] = e2.getAttribute(t2);
    })), e2[a$6] = o2;
  }, d = (e2) => {
    b$1(e2) || (e2[a$6] = { backgroundImage: e2.style.backgroundImage });
  }, k$1 = (t2, e2) => {
    if (!b$1(t2)) return;
    const r2 = i$4(t2);
    e2.forEach(((e3) => {
      ((t3, e4, r3) => {
        r3 ? t3.setAttribute(e4, r3) : t3.removeAttribute(e4);
      })(t2, e3, r2[e3]);
    }));
  }, I$2 = (t2) => {
    if (!b$1(t2)) return;
    const e2 = i$4(t2);
    t2.style.backgroundImage = e2.backgroundImage;
  };
  const E$1 = (t2, a2, s2) => {
    o$2(t2, a2.class_applied), m$4(t2, o$5), s2 && (a2.unobserve_completed && e$1(t2, a2), o$3(a2.callback_applied, t2, s2));
  }, h = (t2, a2, s2) => {
    o$2(t2, a2.class_loading), m$4(t2, e$3), s2 && (o$1(s2, 1), o$3(a2.callback_loading, t2, s2));
  }, v = (t2, a2, s2) => {
    s2 && t2.setAttribute(a2, s2);
  }, y = (a2, s2) => {
    v(a2, r$5, o$4(a2, s2.data_sizes)), v(a2, t$6, o$4(a2, s2.data_srcset)), v(a2, s$4, o$4(a2, s2.data_src));
  }, M = (t2, a2) => {
    t$3(t2, ((t3) => {
      f$1(t3, u$1), y(t3, a2);
    })), f$1(t2, u$1), y(t2, a2);
  }, N = (a2, s2) => {
    f$1(a2, c$1), v(a2, s$4, o$4(a2, s2.data_src));
  }, O$1 = (s2, o2) => {
    r$1(s2, ((a2) => {
      f$1(a2, c$1), v(a2, s$4, o$4(a2, o2.data_src));
    })), f$1(s2, s$2), v(s2, e$4, o$4(s2, o2.data_poster)), v(s2, s$4, o$4(s2, o2.data_src)), s2.load();
  }, S = (t2, a2) => {
    f$1(t2, g$3), v(t2, c$3, o$4(t2, a2.data_src));
  }, $ = (a2, s2, o2) => {
    const r2 = o$4(a2, s2.data_bg), m2 = o$4(a2, s2.data_bg_hidpi), i2 = n$7 && m2 ? m2 : r2;
    i2 && (a2.style.backgroundImage = `url("${i2}")`, m$3(a2).setAttribute(s$4, i2), h(a2, s2, o2));
  }, x$1 = (t2, a2, s2) => {
    const o2 = o$4(t2, a2.data_bg_multi), r2 = o$4(t2, a2.data_bg_multi_hidpi), m2 = n$7 && r2 ? r2 : o2;
    m2 && (t2.style.backgroundImage = m2, E$1(t2, a2, s2));
  }, z = (t2, a2, s2) => {
    const o2 = o$4(t2, a2.data_bg_set);
    if (!o2) return;
    let r2 = o2.split("|").map(((t3) => `image-set(${t3})`));
    t2.style.backgroundImage = r2.join(), E$1(t2, a2, s2);
  }, B = { IMG: M, IFRAME: N, VIDEO: O$1, OBJECT: S }, C = (t2, a2) => {
    const s2 = B[t2.tagName];
    s2 && s2(t2, a2);
  }, D$1 = (t2, a2, s2) => {
    const o2 = B[t2.tagName];
    o2 && (o2(t2, a2), h(t2, a2, s2));
  };
  const _ = ["IMG", "IFRAME", "VIDEO", "OBJECT"], j$1 = (r2) => _.indexOf(r2.tagName) > -1, b = (r2, o2) => {
    !o2 || a$3(o2) || d$1(o2) || o$3(r2.callback_finish, o2);
  }, L = (r2, o2, s2) => {
    r2.addEventListener(o2, s2), r2.llEvLisnrs[o2] = s2;
  }, u = (r2, o2, s2) => {
    r2.removeEventListener(o2, s2);
  }, g$2 = (r2) => !!r2.llEvLisnrs, I$1 = (r2, o2, s2) => {
    g$2(r2) || (r2.llEvLisnrs = {});
    const e2 = "VIDEO" === r2.tagName ? "loadeddata" : "load";
    L(r2, e2, o2), L(r2, "error", s2);
  }, k = (r2) => {
    if (!g$2(r2)) return;
    const o2 = r2.llEvLisnrs;
    for (let s2 in o2) {
      const e2 = o2[s2];
      u(r2, s2, e2);
    }
    delete r2.llEvLisnrs;
  }, O = (r2, s2, e2) => {
    l$2(r2), o$1(e2, -1), t$4(e2), t$5(r2, s2.class_loading), s2.unobserve_completed && e$1(r2, e2);
  }, x = (o2, a2, n2, i2) => {
    const m2 = f$2(a2);
    O(a2, n2, i2), o$2(a2, n2.class_loaded), m$4(a2, d$3), o$3(n2.callback_loaded, a2, i2), m2 || b(n2, i2);
  }, A = (o2, l2, n2, i2) => {
    const m2 = f$2(l2);
    O(l2, n2, i2), o$2(l2, n2.class_error), m$4(l2, a$5), o$3(n2.callback_error, l2, i2), n2.restore_on_error && k$1(l2, u$1), m2 || b(n2, i2);
  }, D = (r2, o2, s2) => {
    const e2 = m$3(r2) || r2;
    g$2(e2) || I$1(e2, ((t2) => {
      x(0, r2, o2, s2), k(e2);
    }), ((t2) => {
      A(0, r2, o2, s2), k(e2);
    }));
  };
  const n$3 = (e2, i2, a2) => {
    j$1(e2) ? ((t2, o2, r2) => {
      D(t2, o2, r2), D$1(t2, o2, r2);
    })(e2, i2, a2) : ((m2, e3, i3) => {
      e$2(m2), D(m2, e3, i3), d(m2), $(m2, e3, i3), x$1(m2, e3, i3), z(m2, e3, i3);
    })(e2, i2, a2);
  }, l$1 = (t2, o2, r2) => {
    t2.setAttribute("loading", "lazy"), D(t2, o2, r2), C(t2, o2), m$4(t2, n$6);
  };
  const m$1 = (e2) => {
    e2.removeAttribute(s$4), e2.removeAttribute(t$6), e2.removeAttribute(r$5);
  }, i$3 = (t2) => {
    t$3(t2, ((t3) => {
      m$1(t3);
    })), m$1(t2);
  };
  const f = (s2) => {
    t$3(s2, ((s3) => {
      k$1(s3, u$1);
    })), k$1(s2, u$1);
  }, n$2 = (s2) => {
    r$1(s2, ((s3) => {
      k$1(s3, c$1);
    })), k$1(s2, s$2), s2.load();
  }, j = (s2) => {
    k$1(s2, c$1);
  }, E = (s2) => {
    k$1(s2, g$3);
  }, g$1 = { IMG: f, IFRAME: j, VIDEO: n$2, OBJECT: E }, I = (t2, e2) => {
    ((s2) => {
      const o2 = g$1[s2.tagName];
      o2 ? o2(s2) : I$2(s2);
    })(t2), ((o2, t3) => {
      A$1(o2) || f$2(o2) || (t$5(o2, t3.class_entered), t$5(o2, t3.class_exited), t$5(o2, t3.class_applied), t$5(o2, t3.class_loading), t$5(o2, t3.class_loaded), t$5(o2, t3.class_error));
    })(t2, e2), b$2(t2), m$2(t2);
  };
  const i$2 = (i2, l2, p2, f$12) => {
    p2.cancel_on_exit && c$2(i2) && "IMG" === i2.tagName && (k(i2), i$3(i2), f(i2), t$5(i2, p2.class_loading), o$1(f$12, -1), b$2(i2), o$3(p2.callback_cancel, i2, l2, f$12));
  };
  const n$1 = (e2, a2, n2, p2) => {
    const f2 = x$2(e2);
    m$4(e2, r$4), o$2(e2, n2.class_entered), t$5(e2, n2.class_exited), r$2(e2, n2, p2), o$3(n2.callback_enter, e2, a2, p2), f2 || n$3(e2, n2, p2);
  }, p = (o2, s2, r2, m2) => {
    A$1(o2) || (o$2(o2, r2.class_exited), i$2(o2, s2, r2, m2), o$3(r2.callback_exit, o2, s2, m2));
  };
  const t$2 = ["IMG", "IFRAME", "VIDEO"], r = (o2) => o2.use_native && "loading" in HTMLImageElement.prototype, a$2 = (r2, a2, m2) => {
    r2.forEach(((e2) => {
      -1 !== t$2.indexOf(e2.tagName) && l$1(e2, a2, m2);
    })), n$4(m2, 0);
  };
  const n = (r2) => r2.isIntersecting || r2.intersectionRatio > 0, s$1 = (r2, e2) => {
    e2.forEach(((e3) => {
      r2.observe(e3);
    }));
  }, i$1 = (r2, e2) => {
    n$5(r2), s$1(r2, e2);
  }, a$1 = (t2, s2) => {
    r(t2) || (s2._observer = new IntersectionObserver(((o2) => {
      ((o3, t3, s3) => {
        o3.forEach(((o4) => n(o4) ? n$1(o4.target, o4, t3, s3) : p(o4.target, o4, t3, s3)));
      })(o2, t2, s2);
    }), ((r2) => ({ root: r2.container === document ? null : r2.container, rootMargin: r2.thresholds || r2.threshold + "px" }))(t2)));
  };
  const t$1 = (e2) => Array.prototype.slice.call(e2), l = (e2) => e2.container.querySelectorAll(e2.elements_selector), o = (r2) => t$1(r2).filter(A$1), c = (e2) => d$2(e2), a = (e2) => t$1(e2).filter(c), i = (e2, r2) => o(e2 || l(r2));
  const t = (n2, t2) => {
    a(l(n2)).forEach(((r2) => {
      t$5(r2, n2.class_error), b$2(r2);
    })), t2.update();
  }, m = (o2, e2) => {
    e$6 && (e2._onlineHandler = () => {
      t(o2, e2);
    }, window.addEventListener("online", e2._onlineHandler));
  }, s = (o2) => {
    e$6 && window.removeEventListener("online", o2._onlineHandler);
  };
  const g = function(o2, s2) {
    const e2 = t$8(o2);
    this._settings = e2, this.loadingCount = 0, a$1(e2, this), m(e2, this), this.update(s2);
  };
  g.prototype = { update: function(t2) {
    const o2 = this._settings, s2 = i(t2, o2);
    n$4(this, s2.length), i$6 ? this.loadAll(s2) : r(o2) ? a$2(s2, o2, this) : i$1(this._observer, s2);
  }, destroy: function() {
    this._observer && this._observer.disconnect(), s(this), l(this._settings).forEach(((t2) => {
      m$2(t2);
    })), delete this._observer, delete this._settings, delete this._onlineHandler, delete this.loadingCount, delete this.toLoadCount;
  }, loadAll: function(t2) {
    const o2 = this._settings;
    i(t2, o2).forEach(((t3) => {
      e$1(t3, this), n$3(t3, o2, this);
    }));
  }, restoreAll: function() {
    const t2 = this._settings;
    l(t2).forEach(((o2) => {
      I(o2, t2);
    }));
  } }, g.load = (o2, i2) => {
    const e2 = t$8(i2);
    n$3(o2, e2);
  }, g.resetStatus = (t2) => {
    b$2(t2);
  }, e$6 && e$5(g, window.lazyLoadOptions);
  const LOCALE = {
    menu_autoPage: ["自动下一页", "Auto Next Page"],
    menu_pageHistory: ["地址栏显示下一页", "Show the next page in the URL bar"],
    menu_newWindow: ["新窗口打开详情页", "Open the details page in a new window"],
    menu_toolbar: ["功能图标", "Tools icons"],
    menu_autoHide: ["功能图标自动隐藏", "Tools icons auto hide"],
    menu_avInfo: ["磁力弹窗中的演员和图片", "Actors and images in magnet pop-ups"],
    menu_halfImg: ["竖图模式", "Vertical image mode"],
    menu_fullTitle: ["标题全显", "Full title"],
    menu_clickToCopy: ["标题和番号点击复制", "Click to copy title and code"],
    menu_autoColumn: ["自适应列数", "Adaptive columns"],
    menu_uncensoredFilter: ["去掉未经审查的泄露", "Remove uncensored leaks"],
    menu_maxWidth: ["最大宽度", "Max width"],
    menu_previewSite: ["预览图", "Video preview"],
    menu_linkUrl: ["跳转到", "Jump to"],
    copyButton: ["复制", "Copy"],
    copySuccess: ["复制成功", "Copy successful"],
    preview_none: ["未搜索到", "No results found"],
    tip_magnet: ["磁力", "Magnet"],
    tip_preview: ["预览图", "Video preview"],
    tip_link: ["跳转", "jump to url"],
    autoPage_end: ["完", "End"]
  };
  const language = navigator.language.toLowerCase().replace("_", "-").split("-")[0];
  const LOCALE_INDEX = language === "zh" ? 0 : 1;
  const LANG = {};
  Object.entries(LOCALE).forEach(([key, value]) => LANG[key] = value[LOCALE_INDEX]);
  var root_2$3 = /* @__PURE__ */ from_html(`<div class="range-div svelte-1mjf8vs"><input type="range" min="1" max="8" step="1" class="svelte-1mjf8vs"/> <span class="svelte-1mjf8vs"> </span></div>`);
  var root_3$2 = /* @__PURE__ */ from_html(`<div class="range-div svelte-1mjf8vs"><input type="range" min="1" max="8" step="1" class="svelte-1mjf8vs"/> <span class="svelte-1mjf8vs"> </span></div>`);
  var root_1$4 = /* @__PURE__ */ from_html(`<!> <div class="input-div svelte-1mjf8vs"><span> </span> <input class="svelte-1mjf8vs"/></div> <div class="radio-div svelte-1mjf8vs"><span> </span>&nbsp; <input type="radio" class="svelte-1mjf8vs"/> <label class="svelte-1mjf8vs">javfree.me</label> <input type="radio" class="svelte-1mjf8vs"/> <label class="svelte-1mjf8vs">blogjav.net</label></div>`, 1);
  var root_4$2 = /* @__PURE__ */ from_html(`<div class="checkbox-div svelte-1mjf8vs"><input type="checkbox" class="svelte-1mjf8vs"/> <label class="svelte-1mjf8vs"> </label></div>`);
  var root$4 = /* @__PURE__ */ from_html(`<div class="menu-b svelte-1mjf8vs"><div class="menu-tool svelte-1mjf8vs">&#x1F528;</div> <div><!> <!></div></div>`);
  function Menu($$anchor, $$props) {
    push($$props, true);
    const binding_group = [];
    const others = ($$anchor2) => {
      var fragment = root_1$4();
      var node = first_child(fragment);
      {
        var consequent = ($$anchor3) => {
          var div = root_2$3();
          var input = child(div);
          var span = sibling(input, 2);
          var text_1 = child(span);
          template_effect(() => {
            input.disabled = config2().autoColumn || isHalfImgBlock();
            set_text(text_1, config2().columnNumHalf);
          });
          bind_value(input, () => config2().columnNumHalf, ($$value) => config2().columnNumHalf = $$value);
          append($$anchor3, div);
        };
        var alternate = ($$anchor3) => {
          var div_1 = root_3$2();
          var input_1 = child(div_1);
          var span_1 = sibling(input_1, 2);
          var text_2 = child(span_1);
          template_effect(() => {
            input_1.disabled = config2().autoColumn;
            set_text(text_2, config2().columnNumFull);
          });
          bind_value(input_1, () => config2().columnNumFull, ($$value) => config2().columnNumFull = $$value);
          append($$anchor3, div_1);
        };
        if_block(node, ($$render) => {
          if (config2().halfImg) $$render(consequent);
          else $$render(alternate, false);
        });
      }
      var div_2 = sibling(node, 2);
      var span_2 = child(div_2);
      var text_3 = child(span_2);
      var input_2 = sibling(span_2, 2);
      var div_3 = sibling(div_2, 2);
      var span_3 = child(div_3);
      var text_4 = child(span_3);
      var input_3 = sibling(span_3, 2);
      var input_3_value;
      var label = sibling(input_3, 2);
      var input_4 = sibling(label, 2);
      var input_4_value;
      var label_1 = sibling(input_4, 2);
      template_effect(() => {
        set_text(text_3, LANG.menu_linkUrl);
        set_text(text_4, LANG.menu_previewSite);
        set_attribute(input_3, "id", JAVFREE + "_radio");
        if (input_3_value !== (input_3_value = JAVFREE)) {
          input_3.value = (input_3.__value = JAVFREE) ?? "";
        }
        set_attribute(label, "for", JAVFREE + "_radio");
        set_attribute(input_4, "id", BLOGJAV + "_radio");
        if (input_4_value !== (input_4_value = BLOGJAV)) {
          input_4.value = (input_4.__value = BLOGJAV) ?? "";
        }
        set_attribute(label_1, "for", BLOGJAV + "_radio");
      });
      bind_value(input_2, () => config2().linkUrl, ($$value) => config2().linkUrl = $$value);
      bind_group(
        binding_group,
        [],
        input_3,
        () => {
          return config2().previewSite;
        },
        ($$value) => config2().previewSite = $$value
      );
      bind_group(
        binding_group,
        [],
        input_4,
        () => {
          return config2().previewSite;
        },
        ($$value) => config2().previewSite = $$value
      );
      append($$anchor2, fragment);
    };
    let config2 = prop($$props, "config", 7), isHalfImgBlock = prop($$props, "isHalfImgBlock", 3, false);
    let isVisible = /* @__PURE__ */ state(false);
    let checkboxList = proxy([]);
    for (const [key, value] of Object.entries(Page.defaultConfig)) {
      if (typeof value === "boolean") {
        checkboxList.push({
          key,
          text: LANG[`menu_${key}`],
          disabled: key === "halfImg" && isHalfImgBlock()
        });
      }
    }
    user_effect(() => {
      _GM_setValue(Page.configValueName, config2());
    });
    var div_4 = root$4();
    var div_5 = child(div_4);
    var div_6 = sibling(div_5, 2);
    var node_1 = child(div_6);
    each(node_1, 17, () => checkboxList, index, ($$anchor2, $$item) => {
      let key = () => get($$item).key;
      let text = () => get($$item).text;
      let disabled = () => get($$item).disabled;
      var div_7 = root_4$2();
      var input_5 = child(div_7);
      var label_2 = sibling(input_5, 2);
      var text_5 = child(label_2);
      template_effect(() => {
        input_5.disabled = disabled();
        set_attribute(input_5, "id", key() + "_checkbox");
        set_attribute(label_2, "for", key() + "_checkbox");
        set_text(text_5, text());
      });
      bind_checked(input_5, () => config2()[key()], ($$value) => config2()[key()] = $$value);
      append($$anchor2, div_7);
    });
    var node_2 = sibling(node_1, 2);
    {
      var consequent_1 = ($$anchor2) => {
        others($$anchor2);
      };
      if_block(node_2, ($$render) => {
        if (Page.name == JAVBUS || Page.name == JAVDB) $$render(consequent_1);
      });
    }
    template_effect(() => set_class(div_6, 1, clsx(["menu-list", !get(isVisible) && "hidden-b"]), "svelte-1mjf8vs"));
    delegated("click", div_5, () => set(isVisible, !get(isVisible)));
    append($$anchor, div_4);
    pop();
  }
  delegate(["click"]);
  const asyncWithLoading = async (fn, item, loadingProp = "isLoading") => {
    try {
      item[loadingProp] = true;
      await fn();
    } catch (error) {
      console.error(error);
      Tips.show(error.message ?? error, Tips.TYPE.ERROR);
    } finally {
      item[loadingProp] = false;
    }
  };
  async function safeFetch(url, init2) {
    const response = await fetch(url, init2);
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    return await response.text();
  }
  function getRequest(url, params) {
    console.log(url);
    return new Promise((resolve, reject) => {
      _GM_xmlhttpRequest(
        Object.assign(
          {
            method: "GET",
            url,
            timeout: 1e4,
            headers: { Referer: url },
            onload: (r2) => {
              r2.status >= 200 && r2.status < 300 ? resolve(r2) : reject(`HTTP error! status: ${r2.status}`);
            },
            onerror: () => reject(`error错误`),
            ontimeout: () => reject(`timeout超时`)
          },
          params
        )
      );
    });
  }
  function getDownload(url, name) {
    return new Promise((resolve, reject) => {
      _GM_download({
        url,
        name: url.split("/").pop(),
        headers: { Referer: url },
        onload: () => resolve("success"),
        onerror: () => reject(`error错误`),
        ontimeout: () => reject(`timeout超时`)
      });
    });
  }
  const Tips = {
    TYPE: {
      SUCCESS: "✅",
      ERROR: "❌"
    },
    show: (msg, type, close) => {
      const alert = document.createElement("div");
      alert.className = "alert-zdy";
      alert.innerHTML = (type ?? "") + msg;
      if (close) {
        const closeButton = document.createElement("div");
        closeButton.className = "alert-close";
        closeButton.innerHTML = "&#x2715;";
        closeButton.addEventListener("click", () => alert.style.display = "none");
        alert.appendChild(closeButton);
      }
      document.body.appendChild(alert);
      if (!close) {
        setTimeout(() => {
          alert.style.display = "none";
        }, 3e3);
      }
    }
  };
  const downloadSvg = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5"/><path d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708z"/></svg>`;
  const pictureSvg = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="m6,5.5a1.5,1.5 0 1 1 -3,0a1.5,1.5 0 0 1 3,0"/><path d="m2,1a2,2.14 0 0 0 -2,2.14l0,10.71a2,2.14 0 0 0 2,2.14l12,0a2,2.14 0 0 0 2,-2.14l0,-10.71a2,2.14 0 0 0 -2,-2.14l-12,0zm12,1.07a1,1.07 0 0 1 1,1.07l0,10.18l-3.78,-3.75a0.5,0.54 0 0 0 -0.57,0l-3.71,3.21l-2.66,-1.52a0.5,0.54 0 0 0 -0.63,0.07l-2.65,2.52l0,-10.71a1,1.07 0 0 1 1,-1.07l12,0z"/></svg>`;
  const magnetSvg = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M8 1a7 7 0 0 0-7 7v3h4V8a3 3 0 0 1 6 0v3h4V8a7 7 0 0 0-7-7m7 11h-4v3h4zM5 12H1v3h4zM0 8a8 8 0 1 1 16 0v8h-6V8a2 2 0 1 0-4 0v8H0z"/></svg>`;
  const linkSvg = `<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16"><path d="M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576zm6.787-8.201L1.591 6.602l4.339 2.76z"/></svg>`;
  const clickToCopy = (event) => {
    event.preventDefault();
    _GM_setClipboard(event.target.textContent, "text");
    Tips.show(LANG.copySuccess, Tips.TYPE.SUCCESS);
  };
  async function getMagnetFromJavbus(avid) {
    const originUrl = "https://www.javbus.com";
    avid = avid.replace(/(-uncensored-leak|-uncensored-leaked|-chinese-subtitle|-c)$/, "");
    const url = `${originUrl}/${avid}`;
    const response = await getRequest(url);
    const [gid, uc_code] = getGid(response.responseText);
    const magnetUrl = `${originUrl}/ajax/uncledatoolsbyajax.php?gid=${gid}&lang=zh&img=&uc=${uc_code}&floor=` + Math.floor(Math.random() * 1e3 + 1);
    const magnetDoc = await getRequest(magnetUrl).then((r2) => r2.responseText);
    const table = getMagnetTable(magnetDoc);
    return [table];
  }
  const getGid = (doc) => {
    const str = /var\s+gid\s+=\s+(\d{1,})/.exec(doc);
    const uc = /var\s+uc\s+=\s+(0|1)/.exec(doc);
    if (!str || !uc) {
      throw new Error("getGid error");
    }
    return [str[1], uc[1]];
  };
  const getMagnetTable = (doc) => {
    const table = document.createElement("table");
    table.classList.add("javbus-table");
    table.innerHTML = doc.substring(0, doc.indexOf("<script")).trim();
    addCopybutton(table);
    return table;
  };
  const addCopybutton = (table) => {
    table.querySelectorAll("tr").forEach((tr) => {
      var _a2;
      const a2 = tr.querySelector("a");
      if (!a2) return;
      const magent = a2.href;
      const td = document.createElement("td");
      const button = document.createElement("button");
      button.className = "btn-copy";
      button.textContent = LANG.copyButton;
      button.addEventListener("click", function() {
        _GM_setClipboard(magent, "text");
        Tips.show(LANG.copySuccess, Tips.TYPE.SUCCESS);
      });
      td.appendChild(button);
      (_a2 = tr.firstElementChild) == null ? void 0 : _a2.after(td);
    });
  };
  const getMagnet = {
    [JAVBUS]: async (item) => {
      const doc = await safeFetch(item.href);
      const [gid, uc_code] = getGid(doc);
      const resultEl = [];
      if (config.avInfo) {
        const docParsed = new DOMParser().parseFromString(doc, "text/html");
        const sample = docParsed.querySelector("#sample-waterfall");
        const avatar = docParsed.querySelector("#avatar-waterfall");
        if (avatar) {
          avatar.id = "";
          avatar.querySelectorAll("a.avatar-box").forEach((a2) => {
            a2.setAttribute("target", "_blank");
            a2.classList.replace("avatar-box", "avatar-box-zdy");
          });
          resultEl.push(avatar);
        }
        if (sample) {
          sample.id = "";
          sample.querySelectorAll(".sample-box").forEach((box) => {
            box.classList.replace("sample-box", "sample-box-zdy");
          });
          resultEl.push(sample);
        }
      }
      const url = `${location.protocol}//${location.hostname}/ajax/uncledatoolsbyajax.php?gid=${gid}&lang=zh&img=&uc=${uc_code}&floor=` + Math.floor(Math.random() * 1e3 + 1);
      const magnetDoc = await safeFetch(url);
      const table = getMagnetTable(magnetDoc);
      resultEl.push(table);
      return resultEl;
    },
    [JAVDB]: async (item) => {
      var _a2, _b2, _c2;
      const response = await safeFetch(item.href);
      const docParsed = new DOMParser().parseFromString(response, "text/html");
      const resultEl = [];
      if (config.avInfo) {
        const actors = (_a2 = docParsed.querySelector("div.video-meta-panel .panel-block a[href^='/actors/']")) == null ? void 0 : _a2.closest(".panel-block");
        if (actors) {
          actors.querySelectorAll("a").forEach((a2) => {
            a2.setAttribute("target", "_blank");
          });
          resultEl.push(actors);
        }
        const previewImages = (_b2 = docParsed.querySelector(".columns .tile-images.preview-images")) == null ? void 0 : _b2.closest(".columns");
        if (previewImages) {
          previewImages.querySelectorAll(".preview-video-container").forEach((container) => {
            container.setAttribute("href", `#preview-video-${item.id}`);
          });
          (_c2 = previewImages.querySelector("#preview-video")) == null ? void 0 : _c2.setAttribute("id", `preview-video-${item.id}`);
          previewImages.querySelectorAll("img[data-src]").forEach((img) => {
            img.setAttribute("src", img.getAttribute("data-src"));
          });
          resultEl.push(previewImages);
        }
      }
      const magnetTable = docParsed.querySelector(`div.columns[data-controller="movie-tab"]`);
      if (magnetTable) {
        magnetTable.querySelectorAll("div.top-meta").forEach((meta) => meta.remove());
        resultEl.push(magnetTable);
      }
      return resultEl;
    },
    [MISSAV]: getMagnetFromJavbus,
    [JABLE]: getMagnetFromJavbus,
    [AV123]: getMagnetFromJavbus
  };
  var root_1$3 = /* @__PURE__ */ from_html(`<div class="scroll-load svelte-15aqm4u"></div>`);
  var root_2$2 = /* @__PURE__ */ from_html(`<div class="scroll-end"> </div>`);
  var root_3$1 = /* @__PURE__ */ from_html(`<div class="scroll-error">error</div>`);
  var root$3 = /* @__PURE__ */ from_html(`<div class="scroll-status svelte-15aqm4u"><!></div>`);
  function LoadMore($$anchor, $$props) {
    push($$props, true);
    const [LOAD, ERROR, END] = ["1", "2", "3"];
    let status = /* @__PURE__ */ state("");
    let el;
    let locked = false;
    let nextURL;
    function init2() {
      var _a2;
      nextURL = (_a2 = document.body.querySelector(Page.pageNext)) == null ? void 0 : _a2.getAttribute("href");
      nextURL && addListener();
    }
    function addListener() {
      document.addEventListener("scroll", domWatch);
      history.scrollRestoration = "manual";
    }
    function removeListener() {
      document.removeEventListener("scroll", domWatch);
      history.scrollRestoration = "auto";
    }
    function domWatch() {
      if (el.getBoundingClientRect().top - window.innerHeight < 300 && !locked && nextURL) {
        locked = true;
        loadNextPage(nextURL).then(() => {
          locked = false;
        });
      }
    }
    async function loadNextPage(url) {
      var _a2, _b2, _c2;
      try {
        console.log(url);
        set(status, LOAD, true);
        let responseText = await safeFetch(url, { credentials: "same-origin" });
        let doc = new DOMParser().parseFromString(responseText, "text/html");
        let items = $$props.itemsOperations.get(doc.body.querySelectorAll(Page.itemSelector));
        (_b2 = (_a2 = $$props.itemsOperations).filter) == null ? void 0 : _b2.call(_a2, items);
        $$props.itemsOperations.update(items);
        $$props.config.pageHistory && history.pushState({}, "", url);
        nextURL = (_c2 = doc.body.querySelector(Page.pageNext)) == null ? void 0 : _c2.getAttribute("href");
        set(status, nextURL ? "" : END, true);
      } catch (error) {
        console.log(error);
        set(status, ERROR, true);
      }
    }
    init2();
    onDestroy(removeListener);
    var div = root$3();
    var node = child(div);
    {
      var consequent = ($$anchor2) => {
        var div_1 = root_1$3();
        append($$anchor2, div_1);
      };
      var consequent_1 = ($$anchor2) => {
        var div_2 = root_2$2();
        var text = child(div_2);
        template_effect(() => set_text(text, LANG.autoPage_end));
        append($$anchor2, div_2);
      };
      var consequent_2 = ($$anchor2) => {
        var div_3 = root_3$1();
        append($$anchor2, div_3);
      };
      if_block(node, ($$render) => {
        if (get(status) == LOAD) $$render(consequent);
        else if (get(status) == END) $$render(consequent_1, 1);
        else if (get(status) == ERROR) $$render(consequent_2, 2);
      });
    }
    bind_this(div, ($$value) => el = $$value, () => el);
    append($$anchor, div);
    pop();
  }
  const searchOptionsAll = {
    [JAVFREE]: {
      urlPrefix: "https://javfree.me/?s=",
      resultSelector: "#primary article h2.entry-title>a",
      imgSelector: '#primary .entry-content>p>img[src$=".jpeg"]'
    },
    [BLOGJAV]: {
      urlPrefix: "https://blogjav.net/?s=",
      resultSelector: "#primary article h2.entry-title>a",
      imgSelector: '#primary .entry-content>p img[src*="pixhost.to/thumbs"]',
      parseSrc: (src) => src.replace("thumbs", "images").replace("//t", "//img")
    }
  };
  let searchOptions = searchOptionsAll[JAVFREE];
  const setSearchOptions = (site) => {
    searchOptions = searchOptionsAll[site];
  };
  async function getPreviewSearchResult(avid) {
    const r2 = await getRequest(searchOptions.urlPrefix + avid, { timeout: 2e4 });
    const doc = new DOMParser().parseFromString(r2.responseText, "text/html");
    const resultsEl = doc.querySelectorAll(searchOptions.resultSelector);
    const results = Array.from(resultsEl).map((v2) => ({
      title: v2.innerHTML,
      href: v2.href
    }));
    for (let i2 = 0; i2 < results.length; i2++) {
      const src = await getPreviewUrl(results[i2].href);
      if (src.length > 0) {
        results[i2].src = src;
        return results.slice(i2);
      }
    }
    throw new Error(LANG.preview_none);
  }
  async function getPreviewUrl(href) {
    const r2 = await getRequest(href);
    const doc = new DOMParser().parseFromString(r2.responseText, "text/html");
    const imgElements = doc.querySelectorAll(searchOptions.imgSelector);
    const src = Array.from(imgElements).map((img) => img.src);
    const parseSrc = searchOptions.parseSrc;
    return parseSrc ? src.map(parseSrc) : src;
  }
  var root_1$2 = /* @__PURE__ */ from_html(`<li> </li>`);
  var root_4$1 = /* @__PURE__ */ from_html(`<div class="img-none svelte-b5u7ct"> </div>`);
  var root_6$1 = /* @__PURE__ */ from_html(`<img/>`);
  var root_3 = /* @__PURE__ */ from_html(`<div class="svelte-b5u7ct"><!></div>`);
  var root$2 = /* @__PURE__ */ from_html(`<div class="preview-panel svelte-b5u7ct"><ul class="preview-title-ul svelte-b5u7ct"></ul> <span><!></span> <!></div>`);
  function Preview($$anchor, $$props) {
    push($$props, true);
    let results = proxy($$props.results);
    let current = /* @__PURE__ */ state(0);
    let downloadStatus = proxy({ isLoading: false });
    const showImage = (index2) => {
      const item = results[index2];
      set(current, index2, true);
      if (item.isLoading || item.src) {
        return;
      } else {
        asyncWithLoading(
          async () => {
            item.src = await getPreviewUrl(item.href);
          },
          item
        );
      }
    };
    const download = () => {
      const src = results[get(current)].src;
      if (downloadStatus.isLoading || !src) return;
      asyncWithLoading(
        async () => {
          for (let index2 = 0; index2 < src.length; index2++) {
            await getDownload(src[index2]);
          }
        },
        downloadStatus
      );
    };
    var div = root$2();
    var ul = child(div);
    each(ul, 21, () => results, index, ($$anchor2, item, index2) => {
      var li = root_1$2();
      var text = child(li);
      template_effect(() => {
        set_class(
          li,
          1,
          clsx([
            "preview-title",
            get(current) === index2 && "preview-title-current",
            get(item).isLoading && "preview-title-loading"
          ]),
          "svelte-b5u7ct"
        );
        set_text(text, get(item).title);
      });
      delegated("click", li, () => showImage(index2));
      append($$anchor2, li);
    });
    var span = sibling(ul, 2);
    var node = child(span);
    html(node, () => downloadSvg);
    var node_1 = sibling(span, 2);
    each(node_1, 17, () => results, index, ($$anchor2, item, index$1) => {
      var fragment = comment();
      var node_2 = first_child(fragment);
      {
        var consequent_2 = ($$anchor3) => {
          var div_1 = root_3();
          var node_3 = child(div_1);
          {
            var consequent = ($$anchor4) => {
              var div_2 = root_4$1();
              var text_1 = child(div_2);
              template_effect(() => set_text(text_1, LANG.preview_none));
              append($$anchor4, div_2);
            };
            var consequent_1 = ($$anchor4) => {
              var fragment_1 = comment();
              var node_4 = first_child(fragment_1);
              each(node_4, 17, () => get(item).src, index, ($$anchor5, src) => {
                var img = root_6$1();
                template_effect(() => {
                  set_attribute(img, "src", get(src));
                  set_class(img, 1, clsx(["preview-img", get(item).zoom && "img-zoom"]), "svelte-b5u7ct");
                });
                delegated("click", img, () => get(item).zoom = !get(item).zoom);
                append($$anchor5, img);
              });
              append($$anchor4, fragment_1);
            };
            if_block(node_3, ($$render) => {
              if (get(item).src && get(item).src.length == 0) $$render(consequent);
              else if (get(item).src && get(item).src.length > 0) $$render(consequent_1, 1);
            });
          }
          append($$anchor3, div_1);
        };
        if_block(node_2, ($$render) => {
          if (get(current) == index$1) $$render(consequent_2);
        });
      }
      append($$anchor2, fragment);
    });
    template_effect(() => set_class(
      span,
      1,
      clsx([
        "preview-dwonload",
        downloadStatus.isLoading && "span-loading"
      ]),
      "svelte-b5u7ct"
    ));
    delegated("click", span, download);
    append($$anchor, div);
    pop();
  }
  delegate(["click"]);
  enable_legacy_mode_flag();
  var root$1 = /* @__PURE__ */ from_html(`<div id="myModal" class="hidden-b svelte-cp3jzs" tabindex="-1"><div id="modal-div" class="svelte-cp3jzs"></div></div>`);
  function Modal($$anchor, $$props) {
    push($$props, false);
    let modalEl = /* @__PURE__ */ mutable_source();
    let isFirst = true;
    function creatEl(id2, innerHTML = "") {
      const div = document.createElement("div");
      div.classList.add("modal-content-b");
      div.setAttribute("id", id2);
      div.innerHTML = innerHTML;
      return div;
    }
    function append$1(id2, content) {
      if (isFirst) {
        isFirst = false;
        init$1();
      }
      let el;
      if (typeof content === "string") {
        el = creatEl(id2, content);
      } else if (Array.isArray(content)) {
        el = creatEl(id2);
        el.append(...content);
      } else if (content instanceof Object && content.props) {
        el = creatEl(id2);
        mount(content.component, { target: el, props: content.props });
      } else {
        throw new Error("content can't be parsed");
      }
      get(modalEl).querySelector("#modal-div").append(el);
      show();
    }
    function show(id2) {
      var _a2;
      document.documentElement.classList.add("scrollBarHide");
      if (id2) {
        (_a2 = get(modalEl).querySelector(`#${id2}`)) == null ? void 0 : _a2.classList.remove("hidden-b");
      }
      get(modalEl).classList.remove("hidden-b");
      get(modalEl).focus();
      mutate(modalEl, get(modalEl).scrollTop = 0);
    }
    function hide() {
      document.documentElement.classList.remove("scrollBarHide");
      get(modalEl).classList.add("hidden-b");
      get(modalEl).querySelectorAll(".modal-content-b").forEach((el) => el.classList.add("hidden-b"));
    }
    function onclick(e2) {
      e2.target.id === "myModal" && hide();
    }
    function onkeydown(e2) {
      if (e2.key === "Escape") {
        hide();
      }
    }
    function init$1() {
      setScrollBarWidth();
      if (Page.name == JAVBUS) {
        globalThis.$(get(modalEl)).magnificPopup({
          delegate: "a.sample-box-zdy:visible",
          type: "image",
          closeOnContentClick: false,
          closeBtnInside: false,
          mainClass: "mfp-with-zoom mfp-img-mobile",
          image: { verticalFit: true },
          gallery: { enabled: true },
          zoom: {
            enabled: true,
            duration: 300,
            opener(element) {
              return element.find("img");
            }
          }
        });
      }
    }
    function setScrollBarWidth() {
      const el = document.createElement("p");
      Object.assign(el.style, {
        position: "absolute",
        top: "-1000px",
        width: "100px",
        height: "100px",
        overflowY: "scroll"
      });
      document.body.appendChild(el);
      const scrollBarWidth = el.offsetWidth - el.clientWidth;
      el.remove();
      _GM_addStyle(`.scrollBarHide{ padding-right: ${scrollBarWidth}px;overflow:hidden;}`);
    }
    var $$exports = { append: append$1, show };
    init();
    var div_1 = root$1();
    bind_this(div_1, ($$value) => set(modalEl, $$value), () => get(modalEl));
    delegated("click", div_1, onclick);
    delegated("keydown", div_1, onkeydown);
    append($$anchor, div_1);
    bind_prop($$props, "append", append$1);
    bind_prop($$props, "show", show);
    return pop($$exports);
  }
  delegate(["click", "keydown"]);
  var root_1$1 = /* @__PURE__ */ from_html(`<div class="toolbar-b svelte-1z0rci6"><span data-name="magnet"><!></span> <span data-name="preview"><!></span> <span data-name="link"><!></span></div>`);
  var root_4 = /* @__PURE__ */ from_html(`<div class="score svelte-1z0rci6"><!></div>`);
  var root_2$1 = /* @__PURE__ */ from_html(`<a class="box-b svelte-1z0rci6"><div class="cover-b svelte-1z0rci6"><img class="lazy svelte-1z0rci6"/> <!></div> <div class="detail-b svelte-1z0rci6"><div> </div> <!> <div class="info-bottom svelte-1z0rci6"><div class="svelte-1z0rci6"><span class="detail-avid svelte-1z0rci6"> </span> <span class="svelte-1z0rci6">/ <span class="svelte-1z0rci6"> </span></span></div> <div class="item-tag svelte-1z0rci6"><!></div> <!></div></div></a>`);
  var root_8 = /* @__PURE__ */ from_html(`<div class="svelte-1z0rci6"><!></div>`);
  var root_6 = /* @__PURE__ */ from_html(`<div class="item-b svelte-1z0rci6"><!></div>`);
  var root = /* @__PURE__ */ from_html(`<div id="grid-b"></div> <!>`, 1);
  function JavbusAndJavdb($$anchor, $$props) {
    var _a2;
    push($$props, true);
    const toolbar = ($$anchor2, item = noop) => {
      var div = root_1$1();
      var span = child(div);
      var node = child(span);
      html(node, () => magnetSvg);
      var span_1 = sibling(span, 2);
      var node_1 = child(span_1);
      html(node_1, () => pictureSvg);
      var span_2 = sibling(span_1, 2);
      var node_2 = child(span_2);
      html(node_2, () => linkSvg);
      template_effect(() => {
        set_class(span, 1, clsx({ "span-loading": item().magnetLoading }), "svelte-1z0rci6");
        set_attribute(span, "title", LANG.tip_magnet);
        set_class(span_1, 1, clsx({ "span-loading": item().previewLoading }), "svelte-1z0rci6");
        set_attribute(span_1, "title", LANG.tip_preview);
        set_class(span_2, 1, clsx({ "span-loading": item().linkLoading }), "svelte-1z0rci6");
        set_attribute(span_2, "title", LANG.tip_link);
      });
      delegated("click", div, (event) => handleClick(event, item()));
      append($$anchor2, div);
    };
    const box = ($$anchor2, item = noop) => {
      var a2 = root_2$1();
      var div_1 = child(a2);
      var img_1 = child(div_1);
      var node_3 = sibling(img_1, 2);
      {
        var consequent = ($$anchor3) => {
          toolbar($$anchor3, item);
        };
        if_block(node_3, ($$render) => {
          if (config.toolbar && config.autoHide) $$render(consequent);
        });
      }
      var div_2 = sibling(div_1, 2);
      var div_3 = child(div_2);
      var text = child(div_3);
      var node_4 = sibling(div_3, 2);
      {
        var consequent_1 = ($$anchor3) => {
          var div_4 = root_4();
          var node_5 = child(div_4);
          html(node_5, () => item().score);
          append($$anchor3, div_4);
        };
        if_block(node_4, ($$render) => {
          if (Page.name == JAVDB) $$render(consequent_1);
        });
      }
      var div_5 = sibling(node_4, 2);
      var div_6 = child(div_5);
      var span_3 = child(div_6);
      var text_1 = child(span_3);
      var span_4 = sibling(span_3, 2);
      var span_5 = sibling(child(span_4));
      var text_2 = child(span_5);
      var div_7 = sibling(div_6, 2);
      var node_6 = child(div_7);
      html(node_6, () => item().itemTag);
      var node_7 = sibling(div_7, 2);
      {
        var consequent_2 = ($$anchor3) => {
          toolbar($$anchor3, item);
        };
        if_block(node_7, ($$render) => {
          if (config.toolbar && !config.autoHide) $$render(consequent_2);
        });
      }
      template_effect(() => {
        set_attribute(a2, "href", item().href);
        set_attribute(a2, "target", config.newWindow ? "_blank" : "_self");
        set_attribute(img_1, "data-src", item().src);
        set_class(div_3, 1, clsx(["detail-title", !config.fullTitle && "titleNowrap"]), "svelte-1z0rci6");
        set_text(text, item().title);
        set_text(text_1, item().AVID);
        set_text(text_2, item().date);
      });
      delegated("click", div_3, function(...$$args) {
        var _a3;
        (_a3 = config.clickToCopy ? (event) => clickToCopy(event) : void 0) == null ? void 0 : _a3.apply(this, $$args);
      });
      delegated("click", span_3, function(...$$args) {
        var _a3;
        (_a3 = config.clickToCopy ? (event) => clickToCopy(event) : void 0) == null ? void 0 : _a3.apply(this, $$args);
      });
      append($$anchor2, a2);
    };
    let gridEL;
    const isHalfImgBlock = Boolean((_a2 = Page.halfImgBlockPages) == null ? void 0 : _a2.find((page) => location.href.includes(page)));
    let isFullImg = /* @__PURE__ */ user_derived(() => isHalfImgBlock || !config.halfImg);
    let windowWidth = /* @__PURE__ */ state(proxy(window.innerWidth));
    let AvItems = proxy([]);
    let lazyLoad;
    function init2() {
      lazyLoad = new g({ callback_loaded: (img) => imgResize(img) });
      itemsOperations.update(itemsOperations.get(Page.rawItemsEl));
      watchConfig();
      window.addEventListener("resize", () => {
        set(windowWidth, window.innerWidth, true);
      });
    }
    const itemsOperations = {
      get: (raw) => {
        return Array.from(raw).map((el) => Page.getAvItem(el));
      },
      filter: (items) => {
        if (Page.name == JAVBUS && location.pathname.includes("/star/") && items) {
          items.splice(0, 1);
        }
      },
      update: (items) => {
        AvItems.push(...items);
        tick().then(() => {
          lazyLoad.update();
        });
      }
    };
    function handleClick(event, item) {
      var _a3;
      event.preventDefault();
      const name = (_a3 = event.target.closest("span[data-name]")) == null ? void 0 : _a3.getAttribute("data-name");
      if (!name || !(name in toolbarFunc)) return;
      const loadingName = `${name}Loading`;
      const contentId = `${name}-${item.id}`;
      if (item[loadingName]) return;
      if (item.hasOwnProperty(contentId)) {
        modal.show(contentId);
        return;
      }
      asyncWithLoading(
        async () => {
          const content = await toolbarFunc[name](item);
          if (content) {
            modal.append(contentId, content);
            item[contentId] = contentId;
          }
        },
        item,
        loadingName
      );
    }
    const toolbarFunc = {
      magnet: async (item) => {
        return await getMagnet[Page.name](item);
      },
      preview: async (item) => {
        const results = await getPreviewSearchResult(item.AVID);
        return { component: Preview, props: { results } };
      },
      link: async (item) => {
        new URL(config.linkUrl);
        if (!config.linkUrl.endsWith("/")) {
          config.linkUrl += "/";
        }
        const url = `${config.linkUrl}${item.AVID}`;
        await getRequest(url, { method: "HEAD" });
        window.open(url, "_blank");
      }
    };
    function imgResize(img) {
      const imgRatio = img.naturalHeight / img.naturalWidth;
      if (imgRatio > 0.8) {
        if (get(isFullImg)) {
          img.style = "object-fit: contain;";
        } else {
          if (imgRatio < 1.3) {
            img.style = "object-position: bottom;object-fit:contain";
          } else {
            img.style = "object-position: center;object-fit:cover";
          }
        }
      }
    }
    function watchConfig() {
      let isFirst = true;
      user_effect(() => {
        config.halfImg;
        if (isFirst) {
          isFirst = false;
          return;
        }
        gridEL.querySelectorAll(".box-b img.loaded").forEach((element) => {
          imgResize(element);
        });
      });
    }
    const setcolumnNum = () => {
      let columnNum;
      if (config.autoColumn) {
        columnNum = Math.round(get(windowWidth) / (get(isFullImg) ? 500 : 350));
      } else {
        columnNum = get(isFullImg) ? config.columnNumFull : config.columnNumHalf;
      }
      _GM_addStyle(`#grid-b .item-b{ width:${100 / columnNum}%; }`);
    };
    if (Page.name == JAVDB) {
      user_pre_effect(() => {
        const el = document.body.querySelector(".section .container");
        if (config.maxWidth) {
          el.classList.add("max-width-100");
        } else {
          el.classList.remove("max-width-100");
        }
      });
    }
    user_pre_effect(setcolumnNum);
    init2();
    mount(Menu, { target: document.body, props: { config, isHalfImgBlock } });
    const modal = mount(Modal, { target: document.body });
    user_pre_effect(() => {
      setSearchOptions(config.previewSite);
    });
    var fragment_2 = root();
    var div_8 = first_child(fragment_2);
    each(div_8, 21, () => AvItems, index, ($$anchor2, item) => {
      var div_9 = root_6();
      var node_8 = child(div_9);
      {
        var consequent_3 = ($$anchor3) => {
          box($$anchor3, () => get(item));
        };
        var alternate = ($$anchor3) => {
          var div_10 = root_8();
          var node_9 = child(div_10);
          html(node_9, () => get(item).html);
          append($$anchor3, div_10);
        };
        if_block(node_8, ($$render) => {
          if (get(item).AVID) $$render(consequent_3);
          else $$render(alternate, false);
        });
      }
      append($$anchor2, div_9);
    });
    bind_this(div_8, ($$value) => gridEL = $$value, () => gridEL);
    var node_10 = sibling(div_8, 2);
    {
      var consequent_4 = ($$anchor2) => {
        LoadMore($$anchor2, {
          get itemsOperations() {
            return itemsOperations;
          },
          get config() {
            return config;
          }
        });
      };
      if_block(node_10, ($$render) => {
        if (config.autoPage) $$render(consequent_4);
      });
    }
    template_effect(() => set_class(div_8, 1, clsx(get(isFullImg) ? "full-b" : "half-b"), "svelte-1z0rci6"));
    append($$anchor, fragment_2);
    pop();
  }
  delegate(["click"]);
  var root_1 = /* @__PURE__ */ from_html(`<span><!></span>`);
  var root_2 = /* @__PURE__ */ from_html(`<span><!></span>`);
  function Magnet($$anchor, $$props) {
    push($$props, true);
    let config2 = prop($$props, "config", 19, () => ({}));
    const id2 = "magnet" + Math.random().toString(16).slice(2);
    let loadState = proxy({ isLoading: false, isLoaded: false });
    function showMagnet(event) {
      event.preventDefault();
      if (loadState.isLoading) return;
      if (loadState.isLoaded) {
        $$props.modal.show(id2);
        return;
      }
      asyncWithLoading(
        async () => {
          const content = await getMagnet[Page.name]($$props.AVID);
          $$props.modal.append(id2, content);
          loadState.isLoaded = true;
        },
        loadState
      );
    }
    var fragment = comment();
    var node = first_child(fragment);
    {
      var consequent = ($$anchor2) => {
        var span = root_1();
        var node_1 = child(span);
        html(node_1, () => magnetSvg);
        template_effect(() => set_class(
          span,
          1,
          clsx([
            "magnet-grid",
            loadState.isLoading && "span-loading",
            config2().toolbar === false && "hidden-b"
          ]),
          "svelte-70kzxz"
        ));
        delegated("click", span, showMagnet);
        append($$anchor2, span);
      };
      var consequent_1 = ($$anchor2) => {
        var span_1 = root_2();
        var node_2 = child(span_1);
        html(node_2, () => magnetSvg);
        template_effect(() => set_class(span_1, 1, clsx(["magnet-video", loadState.isLoading && "span-loading"]), "svelte-70kzxz"));
        delegated("click", span_1, (event) => showMagnet(event));
        append($$anchor2, span_1);
      };
      if_block(node, ($$render) => {
        if (Page.pageType == GRID) $$render(consequent);
        else if (Page.pageType == VIDEO) $$render(consequent_1, 1);
      });
    }
    append($$anchor, fragment);
    pop();
  }
  delegate(["click"]);
  function Missav($$anchor, $$props) {
    push($$props, false);
    let lozadObj;
    function init$1() {
      let items = itemsOperations.get(Page.rawItemsEl);
      itemsOperations.filter(items);
      lozadObj = lozad(".lozad", {
        loaded(element) {
          element.classList.remove("lozad");
        }
      });
    }
    const itemsOperations = {
      get: (raw) => {
        var _a2;
        for (let i2 = 0; i2 < raw.length; i2++) {
          const el = raw[i2];
          const AVID = (_a2 = el.querySelector("a")) == null ? void 0 : _a2.getAttribute("alt");
          mount(Magnet, {
            target: el.querySelector("div.thumbnail>div:first-child"),
            props: { AVID, type: Page.pageType, modal, config }
          });
        }
        return raw;
      },
      filter: (items) => {
        if (config.uncensoredFilter) {
          items.forEach((element) => {
            let el = element.querySelector("a[alt$=uncensored-leak]");
            if (el) {
              element.style.display = "none";
            }
          });
        }
      },
      update: (items) => {
        Page.rawGridEl.append(...Array.from(items));
        tick().then(() => {
          lozadObj.observe();
        });
      }
    };
    const modal = mount(Modal, { target: document.body });
    init$1();
    mount(Menu, { target: document.body, props: { config } });
    init();
    var fragment = comment();
    var node = first_child(fragment);
    {
      var consequent = ($$anchor2) => {
        LoadMore($$anchor2, {
          get itemsOperations() {
            return itemsOperations;
          },
          get config() {
            return config;
          }
        });
      };
      if_block(node, ($$render) => {
        if (config.autoPage) $$render(consequent);
      });
    }
    append($$anchor, fragment);
    pop();
  }
  function Jable($$anchor, $$props) {
    push($$props, false);
    function parseItems(raw) {
      for (let i2 = 0; i2 < raw.length; i2++) {
        const imgBox = raw[i2].querySelector(".img-box a");
        const AVID = imgBox.href.split("/").filter(Boolean).slice(-1)[0];
        mount(Magnet, { target: imgBox, props: { AVID, type: Page.pageType, modal } });
      }
    }
    function creatObserver() {
      const targetSelector = location.pathname.includes("/my/") ? "#site-content>.container" : "#site-content";
      const targetNode = document.body.querySelector(targetSelector);
      if (!targetNode) return;
      const callback = function(mutationsList) {
        mutationsList.forEach((mutation) => {
          if (mutation.addedNodes.length > 0) {
            mutation.addedNodes.forEach((addNode) => {
              if (/list_videos.*_videos/.test(addNode.id)) {
                requestAnimationFrame(() => {
                  parseItems(document.body.querySelectorAll(Page.itemSelector));
                });
              }
            });
          }
        });
      };
      const observer = new MutationObserver(callback);
      observer.observe(targetNode, { childList: true });
    }
    const modal = mount(Modal, { target: document.body });
    parseItems(Page.rawItemsEl);
    creatObserver();
    init();
    pop();
  }
  function Av123($$anchor, $$props) {
    push($$props, false);
    const itemsOperations = {
      get: (raw) => {
        var _a2;
        for (let i2 = 0; i2 < raw.length; i2++) {
          const el = raw[i2];
          const href = (_a2 = el.querySelector("a[title]")) == null ? void 0 : _a2.getAttribute("href");
          const AVID = href.split("/").filter(Boolean).slice(-1)[0];
          mount(Magnet, {
            target: el.querySelector("div.thumb"),
            props: { AVID, type: Page.pageType, modal, config }
          });
        }
        return raw;
      },
      update: (items) => {
        Page.rawGridEl.append(...Array.from(items));
      }
    };
    const modal = mount(Modal, { target: document.body });
    itemsOperations.get(Page.rawItemsEl);
    mount(Menu, { target: document.body, props: { config } });
    init();
    var fragment = comment();
    var node = first_child(fragment);
    {
      var consequent = ($$anchor2) => {
        LoadMore($$anchor2, {
          get itemsOperations() {
            return itemsOperations;
          },
          get config() {
            return config;
          }
        });
      };
      if_block(node, ($$render) => {
        if (config.autoPage) $$render(consequent);
      });
    }
    append($$anchor, fragment);
    pop();
  }
  function render(GridComponent) {
    if (Page.pageType == GRID) {
      const target = document.createElement("div");
      Page.rawGridEl.insertAdjacentElement("afterend", target);
      mount(GridComponent, { target });
    } else if (Page.pageType == VIDEO) {
      const AVID = location.pathname.split("/").filter(Boolean).slice(-1)[0];
      const modal = mount(Modal, { target: document.body });
      mount(Magnet, {
        target: Page.rawGridEl,
        props: { AVID, modal }
      });
    }
  }
  function main() {
    const target = document.createElement("div");
    Page.rawGridEl.style.display = "none";
    Page.rawGridEl.insertAdjacentElement("beforebegin", target);
    mount(JavbusAndJavdb, { target });
  }
  const pageComponentMap = {
    [MISSAV]: Missav,
    [AV123]: Av123,
    [JABLE]: Jable,
    [JAVBUS]: JavbusAndJavdb,
    [JAVDB]: JavbusAndJavdb
  };
  if (pageComponentMap[Page.name]) {
    if (Page.name === JAVBUS || Page.name === JAVDB) {
      main();
    } else {
      render(pageComponentMap[Page.name]);
    }
  }

})();